/*-------------------------------------------------------------------------------------------------*/
#include "credicom.ch"
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores()
PRIVATE oError
PRIVATE oDlg, oBrw, oToolbar, oPopUp1, oBtnFilter
PRIVATE oQryCtrl, oQryCiud, oQryCobr
PRIVATE lFiltrado
lFiltrado := FALSE
TRY
oQryCtrl := oServer:Query2( "SELECT CONT_COBR FROM CONTROL" )
oQryCiud := oServer:Query2( "SELECT NUM_CIUD, NOMBRE FROM CIUDADES ORDER BY NOMBRE" )
oQryCobr := oServer:Query2( "SELECT * FROM vCATCOBR ORDER BY NUM_COBR")
CATCH oError
ShowError( oError, { oQryCtrl, oQryCiud, oQryCobr } )
RETURN
END
oQryCobr:gotop()
DEFINE DIALOG oDlg NAME "DLG_COBRADORESC" OF oMainWnd ICON GetIcon() FONT oFontD
REDEFINE XBROWSE oBrw DATASOURCE oQryCobr ID 101 OF oDlg AUTOSORT ;
ON DBLCLICK Cobradores_Editar( FALSE ) FONT oFontD
ADD TO oBrw DATA oQryCobr:NUM_COBR TITLE "Número" SIZE 080 CENTER PICTURE "@L 999"
ADD TO oBrw DATA oQryCobr:NOMBRE TITLE "Nombre cobrador" SIZE 250
ADD TO oBrw DATA oQryCobr:CIUDAD TITLE "Ciudad" SIZE 050
ADD TO oBrw DATA oQryCobr:ACTIVO TITLE "Act" SIZE 050
WITH OBJECT oBrw
:MyConfig()
:aCols[ 01 ]:cSortOrder := "NUM_COBR"
:aCols[ 02 ]:cSortOrder := "NOMBRE"
:aCols[ 03 ]:cSortOrder := "CIUDAD"
:aCols[ 04 ]:SetCheck( { "BMS_CHECKON","BMS_CHECKOFF" } )
:bKeyDown := {|nKey| Cobradores_ProcesaTecla( nKey ) }
:lHScroll := FALSE
:nHeaderHeight := 36
:nFreeze := 4
END
ACTIVATE DIALOG oDlg ON INIT Cobradores_Toolbar()
oQryCtrl:END()
oQryCiud:END()
oQryCobr:END()
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_Toolbar()
MENU oPopUp1 POPUP 2010
MENUITEM "Mostrar solo &inactivos" ACTION Cobradores_Filtrar( 1 )
MENUITEM "Mostrar solo &activos" ACTION Cobradores_Filtrar( 2 )
SEPARATOR
MENUITEM "Mostrar &todos" ACTION Cobradores_Filtrar( 3 )
ENDMENU
DEFINE BUTTONBAR oToolBar OF oDlg SIZE 60, 60 2010
DEFINE BUTTON NAME "TB_CLOSE" OF oToolBar ACTION oDlg:END() PROMPT "&Salir"
DEFINE BUTTON NAME "TB_ADD" OF oToolBar ACTION Cobradores_Editar( TRUE ) PROMPT "&Nuevo" GROUP
DEFINE BUTTON NAME "TB_EDIT" OF oToolBar ACTION Cobradores_Editar( FALSE ) PROMPT "&Editar"
DEFINE BUTTON NAME "TB_DELETE" OF oToolBar ACTION Cobradores_Borrar() PROMPT "&Borrar"
DEFINE BUTTON NAME "TB_PRINTER" OF oToolBar ACTION Cobradores_Listar() PROMPT "&Imprimir"
DEFINE BUTTON NAME "TB_FILTERADD" OF oToolBar ACTION Cobradores_Filtrar( 3 ) PROMPT "&Filtrar" MENU oPopUp1 GROUP
SET MSGBAR OF oDlg TO "INS=Nuevo, DEL=Borrar, ENTER=Editar, F3=Imprimir, F5=Filtrar, F9=Refrescar" 2010
oDlg:SetControl( oBrw )
WITH OBJECT oToolBar
:bRClicked := {|| NIL }
:bLClicked := {|| NIL }
:aControls[ 1 ]:cToolTip := "Cierra modulo."
:aControls[ 2 ]:cToolTip := "Agrega un nuevo registro."
:aControls[ 3 ]:cToolTip := "Edita datos del registro actual."
:aControls[ 4 ]:cToolTip := "Elimina datos del registro actual."
:aControls[ 5 ]:cToolTip := "Lista datos para ser impresos."
:aControls[ 6 ]:cToolTip := "Filtra registros a mostrar."
oBtnFilter := :aControls[ 06 ]
END
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_ProcesaTecla( nKey )
DO CASE
CASE nKey == VK_INSERT
Cobradores_Editar( TRUE )
CASE nKey == VK_RETURN
Cobradores_Editar( FALSE )
CASE nKey == VK_DELETE
Cobradores_Borrar()
CASE nKey == VK_F3
Cobradores_Listar()
CASE nKey == VK_F5
IF !lFiltrado
Cobradores_Filtrar( 2 )
ELSE
Cobradores_Filtrar( 3 )
ENDIF
CASE nKey == VK_F9
Refrescar_Browse( oBrw )
ENDCASE
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_Filtrar( nOpcion )
TRY
DO CASE
CASE nOpcion==1
oQryCobr:SetWhere( "ACTIVO=" + Var2Str( FALSE ), TRUE )
CASE nOpcion==2
oQryCobr:SetWhere( "ACTIVO=" + Var2Str( TRUE ), TRUE )
CASE nOpcion==3
oQryCobr:SetWhere( "", TRUE )
END
IF nOpcion < 3
WITH OBJECT oBtnFilter
:FreeBitmaps()
:LoadBitmaps( "TB_FILTERDEL" )
:cTooltip := "Elimina filtro, muestra todos los cobradores."
:Refresh()
END
lFiltrado := TRUE
ELSE
WITH OBJECT oBtnFilter
:FreeBitmaps()
:LoadBitmaps( "TB_FILTERADD" )
:cTooltip := "Filtra los cobradores por estado."
:Refresh()
END
lFiltrado := FALSE
ENDIF
CATCH oError
ShowError( oError )
RETURN
END
oBrw:GoTop()
oBrw:Refresh()
oBrw:SetFocus()
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_Borrar()
LOCAL oQryTmp
IF oQryCobr:eof()
MsgAlert( "No hay cobradores registradas, nada que borrar." )
ELSE
IF MsgNoYes( "Desea borrar datos del cobrador seleccionado?" )
TRY
oQryTmp := oServer:Query2( "SELECT COUNT(*) AS CONTADOR FROM RUTAS WHERE NUM_COBR=%1", { oQryCobr:NUM_COBR } )
IF oQryTmp:CONTADOR > 0
MsgAlert( "No se puede borrar al cobrador seleccionado, ya fue asignado a una ruta de cobro" )
ELSE
oServer:Execute2( "DELETE FROM COBRADORES WHERE NUM_COBR=%1", { oQryCobr:NUM_COBR } )
oQryCobr:ReQuery()
ENDIF
oQryTmp:End()
CATCH oError
ShowError( oError, { oQryTmp } )
END
oBrw:Refresh()
ENDIF
ENDIF
oBrw:SetFocus()
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_Editar( lNuevo )
LOCAL oQryTmp
PRIVATE oDlgE
PRIVATE nNumCiud, cNomCiud, nNumCobr, cNomCobr, cDomCobr, cTelCobr, cCedCobr, dIngCobr, dRetCobr, lActivo, cNota
PRIVATE oNomCiud
IF oQryCiud:Eof()
MsgAlert( "No hay ciudades/oficina definidas, no puede continuar." )
oBrw:SetFocus()
RETURN
ENDIF
IF lNuevo
nNumCobr := oQryCtrl:CONT_COBR + 1
nNumCiud := 0
cNomCiud := ""
cNomCobr := Space( 40 )
cDomCobr := Space( 80 )
cTelCobr := Space( 20 )
cCedCobr := Space( 16 )
dIngCobr := Date()
dRetCobr := CToD( "" )
lActivo := TRUE
cNota := ""
ELSE
IF oQryCobr:Eof()
MsgAlert( "No hay cobradores registrados, nada que editar." )
oBrw:SetFocus()
RETURN
ENDIF
TRY
oQryTmp := oServer:Query2( "SELECT * FROM vCATCOBR_E WHERE NUM_COBR=%1 LIMIT 1", { oQryCobr:NUM_COBR } )
nNumCobr := oQryTmp:NUM_COBR
nNumCiud := oQryTmp:NUM_CIUD
cNomCiud := oQryTmp:CIUDAD
cNomCobr := oQryTmp:NOMBRE
cDomCobr := oQryTmp:DOMICILIO
cTelCobr := oQryTmp:TELEFONOS
cCedCobr := oQryTmp:CEDULA
dIngCobr := oQryTmp:FECHA_ING
dRetCobr := oQryTmp:FECHA_RET
lActivo := oQryTmp:ACTIVO
cNota := oQryTmp:NOTA
oQryTmp:END()
CATCH oError
ShowError( oError, { oQryTmp } )
RETURN
END
ENDIF
DEFINE DIALOG oDlgE NAME "DLG_COBRADORESE" OF oDlg ICON GetIcon() FONT oFontD
REDEFINE GET nNumCobr ;
ID 101 OF oDlgE ;
PICTURE "999" ;
WHEN FALSE
REDEFINE GET cNomCobr ;
ID 102 OF oDlgE ;
PICTURE "@!"
REDEFINE GET cDomCobr ;
ID 103 OF oDlgE ;
PICTURE "@!"
REDEFINE GET oNomCiud VAR cNomCiud ;
ID 104 OF oDlgE ;
WHEN FALSE ;
UPDATE
REDEFINE BUTTON ;
ID 105 OF oDlgE ;
ACTION Cobradores_SeleccionarCiudad()
REDEFINE GET cTelCobr ;
ID 106 OF oDlgE ;
PICTURE "@!"
REDEFINE GET cCedCobr ;
ID 107 OF oDlgE ;
PICTURE "@!"
REDEFINE GET dIngCobr ;
ID 108 OF oDlgE ;
PICTURE "@D"
REDEFINE GET dRetCobr ;
ID 109 OF oDlgE ;
PICTURE "@D" ;
WHEN !lNuevo
REDEFINE CHECKBOX lActivo ;
ID 110 OF oDlgE ;
WHEN !lNuevo ;
ON CHANGE Cobradores_Estado() ;
UPDATE
REDEFINE GET cNota ;
ID 111 OF oDlgE ;
MEMO
REDEFINE BUTTON ;
ID 201 OF oDlgE ;
WHEN !Empty( cNomCobr ) .and. nNumCiud > 0 ;
ACTION IIf( Cobradores_Grabar( lNuevo ), oDlgE:END(), NIL )
REDEFINE BUTTON ;
ID 202 OF oDlgE ;
ACTION oDlgE:END() ;
CANCEL
ACTIVATE DIALOG oDlgE
oBrw:SetFocus()
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_Estado()
LOCAL oQryTmp
TRY
IF !lActivo
oQryTmp := oServer:Query2( "SELECT COUNT(*) AS CONTADOR FROM CLIENTES WHERE NUM_COBR=%1", { nNumCobr } )
IF oQryTmp:CONTADOR > 0
lActivo := TRUE
oDlgE:Update()
MsgAlert( "Hay una ruta de cobro que tiene a este cobrador asignado, por tanto no se puede desactivar." )
ENDIF
oQryTmp:END()
ENDIF
CATCH oError
ShowError( oError, { oQryTmp } )
END
RETURN
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_SeleccionarCiudad()
LOCAL bEval := {|| nNumCiud := oQryCiud:NUM_CIUD, ;
cNomCiud := oQryCiud:NOMBRE , ;
oNomCiud:Refresh() }
QSeleccionar( oDlgE, oQryCiud, "NOMBRE", "Lista de Ciudad/Oficina", bEval )
RETURN
/*-------------------------------------------------------------------------------------------------*/
FUNCTION Cobradores_Grabar( lNuevo )
LOCAL cWhere
LOCAL lGrabado := FALSE
TRY
oServer:BeginTransaction()
IF lNuevo
oServer:Execute2( "UPDATE CONTROL SET CONT_COBR=%1", { nNumCobr } )
oServer:Insert( "COBRADORES", { "NUM_CIUD", "NUM_COBR", "NOMBRE", "DOMICILIO", "TELEFONOS", "CEDULA", "FECHA_ING", "FECHA_RET", "ACTIVO", "NOTA" }, ;
{ nNumCiud , nNumCobr , cNomCobr, cDomCobr, cTelCobr, cCedCobr, dIngCobr, dRetCobr , lActivo , cNota } )
ELSE
cWhere := "NUM_COBR=" + Var2Str( nNumCobr )
oServer:Update( "COBRADORES", { "NUM_CIUD", "NUM_COBR", "NOMBRE", "DOMICILIO", "TELEFONOS", "CEDULA", "FECHA_ING", "FECHA_RET", "ACTIVO", "NOTA" }, ;
{ nNumCiud , nNumCobr , cNomCobr, cDomCobr, cTelCobr, cCedCobr, dIngCobr, dRetCobr , lActivo , cNota }, cWhere )
ENDIF
oServer:CommitTransaction()
IIf( lNuevo, oQryCtrl:ReQuery(), NIL )
oQryCobr:ReQuery()
lGrabado := TRUE
CATCH oError
oServer:RollBack()
ShowError( oError )
END
IF lGrabado
IIf( lNuevo, ( oBrw:GoBottom(), oBrw:Refresh() ), oBrw:RefreshCurrent() )
ELSE
oBrw:GoTop()
ENDIF
RETURN lGrabado
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE Cobradores_Listar()
RETURN
/*-------------------------------------------------------------------------------------------------*/
/*EOF*/
/*-------------------------------------------------------------------------------------------------*/