// MENU PRINCIPAL
#include "FiveWin.ch"
STATIC oDlg,oSay, oG_C,oG_D,oBtn, oBrw
STATIC S01,S02,S03,S04,S05,S06,S07
STATIC cMesAno, dFecMov, dFecPresent, nTipOpera,cNumOperac, nCveSATCont
STATIC cNombOpera, cNombSAT
STATIC lNew, lAdd
STATIC aGradBarSelFocus := {{ 1, RGB(252,232,171) , RGB(248,195,34) }} ,;
aGradBarSel := {{ 1, RGB(252,235, 184), RGB(251,222,88) }}
Memvar cPath, cDirReport, nNumEmp, cRutaDat
//------------------------------------------------------------------------------\\
FUNCTION AltasSAT()
oSay := Array(1)
oG_C := Array(1)
oBtn := Array(2)
S04 := Abre_Dbf(4,4) // CTOPERAC.DBF
S05 := Abre_Dbf(5,5) // CTOPERAC.DBF
S06 := Abre_Dbf(6,6) // CTSATCON.DBF
S07 := Abre_Dbf(7,7) // MOVDEFIS.DBF
cMesAno := "0216"
dFecMov := DATE()
nTipOpera := 0
cNumOperac := SPACE(22)
dFecPresent := DATE()
nCveSATCont := 0
lNew := .F. // Nuevo registro
lAdd := .F. // Agregar registro
DEFINE DIALOG oDlg RESOURCE "ALTASAT" TITLE "Alta obligacion fiscal"
REDEFINE GET oG_C[01] VAR cMesAno ID 101 OF oDlg PICT "####" VALID V_MESANO()
REDEFINE BUTTON oBtn[01] ID 201 OF oDlg ACTION Mod_Cap(.T.) // CapDet(.T.)
REDEFINE BUTTON oBtn[02] ID 202 OF oDlg ACTION Mod_Cap(.F.) CANCEL // HabD_Cap(.F.) CANCEL
REDEFINE XBROWSE oBrw ID 106 OF oDlg ;
HEADERS "Tipo"+CRLF+"Operacion", "Fec"+CRLF+"Present","Nomb Operac","Num Operacion","SAT Cont" ;
COLUMNS "TIPOPERAC" , "FECPRESENT" ,"NOMBOPERA","NUMOPERAC","NOMBSAT" ;
SIZES 54,52,102,120,200 ;
Picture "99" ,;
"@D" ,;
"@!" ,;
"@!" ,;
"@!" ;
ALIAS (S07)->( ALIAS() ) // FOOTERS CELL AUTOCOLS
AEval( oBrw:aCols, { |o| o:nEditType := 0 ,; //No editables
o:nHeadStrAlign:= 2 } ) //texto encab/col centrado
WITH OBJECT oBrw
//ESTILOS DE LINEAS
:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
:lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
:nColDividerStyle := LINESTYLE_BLACK
END
ACTIVATE DIALOG oDlg CENTER ON INIT CargaDatos() // (CargDatos(lNew)) VALID FinCap(oDlg2,oBrw2,oBrw3) ON PAINT Refr_Bmp(hDC)
RETURN NIL
//------------------------------------------------------------------------------\\
STATIC FUNCTION CargaDatos()
(S07)->( OrdScope(0, cMesAno) )
(S07)->( OrdScope(1, cMesAno) )
oBrw:Refresh()
RETURN NIL
//------------------------------------------------------------------------------\\
STATIC FUNCTION Mod_Cap(lNew)
LOCAL oBtn
lNew := lNew
oBtn := Array(2)
oG_D := Array(4)
IF lNew .OR. (!lNew .AND. !(S07)->(EOF()))
lAdd := lNew
IF lNew
nTipOpera := 0
cNumOperac := SPACE(22)
dFecPresent := DATE()
nCveSATCont := 0
ELSE
nTipOpera := (S07)->TIPOPERAC
cNumOperac := (S07)->NUMOPERAC
dFecPresent := (S07)->FECPRESENT
nCveSATCont := (S07)->CVESATCONT
ENDIF
DEFINE DIALOG oDlg RESOURCE "CAPDET" TITLE "Alta obligacion fiscal"
REDEFINE BUTTON oBtn[01] ID 201 OF oDlg ACTION Reg_Cap(lNew) // Grabar registro
REDEFINE BUTTON oBtn[02] ID 202 OF oDlg ACTION Limpia(.T.) // Nuevo registro
REDEFINE GET oG_D[01] VAR nTipOpera ID 101 OF oDlg PICT "99" VALID V_OPERAC(lNew) ACTION ListOperac(@nTipOpera,S05,"nTipOpera",oG_D[02])
REDEFINE GET oG_D[02] VAR dFecPresent ID 102 OF oDlg PICT "@D"
REDEFINE GET oG_D[03] VAR cNumOperac ID 103 OF oDlg PICT "@####################" // Aqui se captura numero de operacion
REDEFINE GET oG_D[04] VAR nCveSATCont ID 104 OF oDlg PICT "9" VALID V_CVESAT() ACTION ListSATCont(@nCveSATCont,S06,"nCveSATCont",oG_D[03])
ACTIVATE DIALOG oDlg CENTER // ON INIT CargaDatos() // (CargDatos(lNew)) VALID FinCap(oDlg2,oBrw2,oBrw3) ON PAINT Refr_Bmp(hDC)
SysRefresh() // Le Ccomente,porque al darle ENTER rapidamentte, cargaba de nuevo los datos capturados....
oG_D[01]:SetFocus() // Aqui retorna despues de Registrar Captura...Reg_Cap()
oG_D[01]:Refresh()
ELSE
oBrw:SetFocus()
ENDIF
RETURN (NIL)
//------------------------------------------------------------------------------\\
STATIC FUNCTION V_MESANO()
(S07)->( OrdScope(0, cMesAno) )
(S07)->( OrdScope(1, cMesAno) )
oBrw:Refresh()
RETURN (.T.)
//------------------------------------------------------------------------------\\
STATIC FUNCTION V_OPERAC(lNew)
(S05)->( DbSeek(STR(nTipOpera,2)) )
IF (S05)->( FOUND() )
cNombOpera := (S05)->NOMBOPERA
ELSE
MsgAlert("Operacion no encontrado")
ENDIF
lNew := lNew
RETURN (.T.)
//------------------------------------------------------------------------------\\
STATIC FUNCTION V_CVESAT()
(S06)->( DbSeek(STR(nCveSATCont,2)) )
IF (S06)->( FOUND() )
cNombSAT := (S06)->NOMBSAT
ELSE
MsgAlert("Operacion no encontrado")
ENDIF
RETURN (.T.)
//------------------------------------------------------------------------------\\
STATIC FUNCTION ListOperac(nTipOpera,S05,VarCta,oGetCpo)
Default oGetCpo := NIL
IF SelOperac(nTipOpera,S05)
DO CASE
CASE VarCta = "nTipOpera"
nTipOpera := (S05)->TIPOPERAC
ENDCASE
ENDIF
oGetCpo:Refresh()
RETURN NIL
//------------------------------------------------------------------------------\\
STATIC FUNCTION ListSATCont(nCveSATCont,S06,VarCta,oGetCpo)
Default oGetCpo := NIL
IF SelSATcont(nCveSATCont,S06)
DO CASE
CASE VarCta = "nCveSATCont"
nCveSATCont := (S06)->CVESATCONT
ENDCASE
ENDIF
oGetCpo:Refresh()
RETURN NIL
//------------------------------------------------------------------------------\\
FUNCTION SelOperac(nTipOpera,S05)
LOCAL oSDlg, oSBrw
DbSelectArea(S05)
(S05)->( DbSeek(STR(nTipOpera,2),.T.) )
DEFINE DIALOG oSDlg RESOURCE "S_CATAL" TITLE "Catálogo Tipo de Operación"
REDEFINE XBROWSE oSBrw ID 101 OF oSDlg ;
HEADERS "Clave"+CRLF+"Operación","Descripción"+CRLF+"Operación" ;
COLUMNS "TIPOPERAC", "NOMBOPERA" ;
SIZES 60, 112 ;
PICTURES "99", "@S36" ;
ALIAS (S05)->( ALIAS() ) // FOOTERS CELL AUTOCOLS
AEval( oSBrw:aCols, { |o| o:nEditType := 0 ,; //No editables
o:nHeadStrAlign:= 2 } ) //texto encab/col centrado
WITH OBJECT oSBrw
//ESTILOS DE LINEAS
:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
:lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
:nColDividerStyle := LINESTYLE_BLACK
:lHScroll := .F. // Horizontal
:lVScroll := .T. // Vertical
:bClrSel := { || { nRGB( 0, 0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
:bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } } // para barra de linea selecc cuando el control tiene el foco
:lKinetic := .f.
:lContrastClr := .f. //para que no cambie color de texto automaticamente segun intensidad del fondo
:bLDblClick := {|| oSDlg:END()}
:bKeyDown := {| nKey| IF(nKey = 13, oSDlg:END(), .T.)}
END
ACTIVATE DIALOG oSDlg
RETURN (.T.)
//------------------------------------------------------------------------------\\
FUNCTION SelSATCont(nCveSATCont,S06)
LOCAL oSDlg, oSBrw
DbSelectArea(S06)
(S06)->( DbSeek(STR(nCveSATCont,2),.T.) )
DEFINE DIALOG oSDlg RESOURCE "S_CATAL" TITLE "Catálogo Tipo de Operación"
REDEFINE XBROWSE oSBrw ID 101 OF oSDlg ;
HEADERS "Clave"+CRLF+"SAT","Descripción"+CRLF+"SAT" ;
COLUMNS "CVESATCONT", "NOMBSAT" ;
SIZES 60, 112 ;
PICTURES "99", "@S36" ;
ALIAS (S06)->( ALIAS() ) // FOOTERS CELL AUTOCOLS
AEval( oSBrw:aCols, { |o| o:nEditType := 0 ,; //No editables
o:nHeadStrAlign:= 2 } ) //texto encab/col centrado
WITH OBJECT oSBrw
//ESTILOS DE LINEAS
:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
:lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
:nColDividerStyle := LINESTYLE_BLACK
:lHScroll := .F. // Horizontal
:lVScroll := .T. // Vertical
:bClrSel := { || { nRGB( 0, 0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
:bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } } // para barra de linea selecc cuando el control tiene el foco
:lKinetic := .f.
:lContrastClr := .f. //para que no cambie color de texto automaticamente segun intensidad del fondo
:bLDblClick := {|| oSDlg:END()}
:bKeyDown := {| nKey| IF(nKey = 13, oSDlg:END(), .T.)}
END
ACTIVATE DIALOG oSDlg
RETURN (.T.)
//------------------------------------------------------------------------------\\
STATIC FUNCTION Limpia(lNew)
IF lNew .OR. (!lNew .AND. !(S07)->(EOF()))
lAdd := lNew
IF lNew
lNew := lNew
nTipOpera := 0
cNumOperac := SPACE(22)
dFecPresent := DATE()
nCveSATCont := 0
ENDIF
SysRefresh() // Le Ccomente,porque al darle ENTER rapidamentte, cargaba de nuevo los datos capturados....
AEval( oG_D,{|o| o:Refresh()} )
oG_D[01]:SetFocus() // Aqui retorna despues de Registrar Captura...Reg_Cap()
oG_D[01]:Refresh()
ENDIF
MsgInfo(lNew)
RETURN NIL
//------------------------------------------------------------------------------\\
STATIC FUNCTION Reg_Cap(lNew)
*MsgInfo("Registrando movimientos...")
IF lNew
(S07)->( DbAppend() )
ENDIF
IF !OCUPADO(S07)
*NUMOPERA" , "FECPRESENT" ,"CVEOPERA" ,"SATCONTAB"
(S07)->AMMOV := cMesAno
(S07)->FECMOV := DATE()
(S07)->TIPOPERAC := nTipOpera
(S07)->NOMBOPERA := cNombOpera
(S07)->FECPRESENT := dFecPresent
(S07)->NUMOPERAC := cNumOperac
(S07)->CVESATCONT := nCveSATCont
(S07)->NOMBSAT := cNombSAT
(S07)->(DbCommit())
(S07)->(DBUnlock()) // Desbloquea
ENDIF
oBrw:Refresh()
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION HabD_Cap(lCapt)
LOCAL nI
IF lCapt
// Habilita y refresca detalles de captura
*oG_D[01]:Enable()
*oG_D[01]:Refresh()
*AEval( oG_D,{|o| o:Enable()})
*AEval( oG_D,{|o| o:Refresh()})
*AEval( oBtn,{|o| o:Enable()} )
*AEval( oBtn,{|o| o:Refresh()} )
ELSE
cMesAno := "0316"
dFecMov := DATE()
nTipOpera := 0
cNumOperac := SPACE(22)
dFecPresent := DATE()
nCveSATCont := 0
// Deshabilita y refresca detalles de captura
oG_D[01]:Disable()
oG_D[01]:Refresh()
* AEval( oG_D,{|o| o:Disable()} )
* AEval( oG_D,{|o| o:Refresh()} )
* AEval( oBtn,{|o| o:Disable()} )
* AEval( oBtn,{|o| o:Refresh()} )
SysRefresh()
oBrw:Enable()
oBrw:SetFocus()
oBrw:DrawSelect()
ENDIF
Release nI
RETURN (NIL)