Code: Select all
**********************************************************
* PROGRAMA DE INVENTARIOS Y COSTOS DE PRODUCCION EN MYSQL*
* Modulo: Catálogo de Bodegas *
* Inicio: 06 de Abril de 2006 *
* Actual: 19 de Febrero de 2008 *
**********************************************************
#include "fivewin.ch"
#include "xbrowse.ch"
#include "report.ch"
#include "Ado.ch"
pBodegas()
********************
*Catalogo de Bodegas
********************
PROC pBodegas()
LOCAL aCol:={0,0},oCuadro
oLamcla:oC1vg1:=space(100)
oLamcla:vOrden:="b_nombre"
oLamcla:oTimpr:=1
oVar := "SELECT * from "+oLamcla:tBode+" ORDER BY "+alltrim(oLamcla:vOrden)
TRY
oLamcla:oRsBodega:=tOleAuto():New("ADODB.RecordSet")
CATCH oError
MsgStop( "No se ha podido crear el RECORDSET !","Error de Datos" )
END
oLamcla:oRsBodega:CursorLocation := adUseClient //adUseServer
oLamcla:oRsBodega:LockType := adLockOptimistic
oLamcla:oRsBodega:CursorType := adOpenKeyset
oLamcla:oRsBodega:Source := oVar
oLamcla:oRsBodega:ActiveConnection( oLamcla:oServer )
TRY
oLamcla:oRsBodega:Open()
CATCH oError
MsgStop( "No se ha podido ejecutar el comando !", "Error de Datos" )
END
DEFINE BRUSH oFondo FILE ".\res\res_403.BMP"
DEFINE DIALOG oCuadro RESOURCE "orMedida" ICON "#8001" TRANSPARENT BRUSH oFondo
REDEFINE BUTTONBMP Btn_Limp ID 4003 OF oCuadro BITMAP "Blimpi2" TOOLTIP oLamcla:mTfil ACTION pBusBod(oLamcla:oC1vg1:=space(100))
REDEFINE GET oC1og1 VAR oLamcla:oC1vg1 ID 4002 OF oCuadro UPDATE VALID(pBusBod(),.T.)
oLamcla:oBrwBode := TXBrowse():New( oCuadro )
oLamcla:oBrwBode:nMarqueeStyle := MARQSTYLE_HIGHLROW
oLamcla:oBrwBode:nColDividerStyle := LINESTYLE_RAISED
oLamcla:oBrwBode:nHeaderLines := 1
oLamcla:oBrwBode:lColDividerComplete := .t.
oLamcla:oBrwBode:lRecordSelector := .t.
oLamcla:oBrwBode:bClrSel := {|| { CLR_BLACK,oLamcla:cClr7 } }
oLamcla:oBrwBode:bClrStd := {|| IF( (oLamcla:oRsBodega:AbsolutePosition()%2)==0,{CLR_BLACK,oLamcla:cClr2},{CLR_BLACK,oLamcla:cClr1} ) }
oLamcla:oBrwBode:bClrSelFocus := {|| { CLR_WHITE,RGB(147,160,112) } }
aCol[ 1] := oLamcla:oBrwBode:AddCol()
aCol[ 1]:bStrData := { || If( oLamcla:oRsBodega:Eof, Space( nWidth ), cValtoChar( oLamcla:oRsBodega:Fields( "b_bodega" ):Value ) ) }
aCol[ 1]:cHeader := "Codigo"
aCol[ 1]:nHeadStrAlign := AL_LEFT
aCol[ 1]:nDataStrAlign := AL_LEFT
aCol[ 1]:nWidth := 80
aCol[ 2] := oLamcla:oBrwBode:AddCol()
aCol[ 2]:bStrData := { || If( oLamcla:oRsBodega:Eof, Space( nWidth ), cValtoChar( oLamcla:oRsBodega:Fields( "b_nombre" ):Value ) ) }
aCol[ 2]:cHeader := "Nombre"
aCol[ 2]:nHeadStrAlign := AL_LEFT
aCol[ 2]:nDataStrAlign := AL_LEFT
aCol[ 2]:nWidth := 225
oLamcla:oBrwBode:SetADO( oLamcla:oRsBodega )
oLamcla:oBrwBode:CreateFromResource( 102 )
oCuadro:cTitle := "Tabla de Bodegas"
oCuadro:bKeyDown := {|nKey|iif(nKey == 114,(oLamcla:vgraba:=.t.,oLamcla:autoriza(64)),(iif(nKey == 115,(oLamcla:vgraba:=.f.,oLamcla:autoriza(65)),(iif(nKey == 116,(oLamcla:autoriza(66)),(""))))))}
ACTIVATE DIALOG oCuadro NOWAIT On Init (Centra( oCuadro ),oCuadro:refresh(),BarraBod( oCuadro )) CENTERED
**************************************
*CREA LA BARRA DE HERRAMIENTAS BODEGAS
**************************************
FUNCTION BarraBod( oCuadro )
LOCAL oBar,oBtn,oCodigo,oNombre
MENU oOrdTal POPUP 2007
MENUITEM oCodigo PROMPT "Código" ACTION (oCodigo:SetCheck( .T. ),oNombre:SetCheck( .F. ),oLamcla:vOrden:="b_bodega",pOrdBod())
MENUITEM oNombre PROMPT "Nombre" ACTION (oCodigo:SetCheck( .F. ),oNombre:SetCheck( .T. ),oLamcla:vOrden:="b_nombre",pOrdBod())
ENDMENU
MENU oPopup POPUP 2007
MENUITEM "Configurar Impresora" ACTION PrinterSetup()
SEPARATOR
MENUITEM "Generar reporte a impresora" ACTION (oLamcla:oTimpr:=1,oLamcla:autoriza(67))
MENUITEM "Generar reporte a Excel" ACTION (oLamcla:oTimpr:=2,oLamcla:autoriza(67))
ENDMENU
oCodigo:SetCheck( .T. )
oNombre:SetCheck( .F. )
DEFINE BUTTONBAR oBar OF oCuadro SIZE 60,60 2007
DEFINE BUTTON OF oBar RESOURCE "#8016" PROMPT "Agregar" TOOLTIP "Agregar Registro - F3" ACTION (oLamcla:vgraba:=.t.,oLamcla:autoriza(64))
DEFINE BUTTON OF oBar RESOURCE "#8014" PROMPT "Modificar" TOOLTIP "Modificar Registro - F4" ACTION (oLamcla:vgraba:=.f.,oLamcla:autoriza(65))
DEFINE BUTTON OF oBar RESOURCE "#8017" PROMPT "Borrar" TOOLTIP "Borrar Registro - F5" ACTION oLamcla:autoriza(66)
DEFINE BUTTON OF oBar RESOURCE "#8012" PROMPT "Imprimir" TOOLTIP "Imprimir Listado" MENU oPopup ACTION (oLamcla:oTimpr:=1,oLamcla:autoriza(67))
DEFINE BUTTON OF oBar RESOURCE "#8019" PROMPT "Ordenar" TOOLTIP "Organizar Información" MENU oOrdTal ACTION (oCodigo:SetCheck( .F. ),oNombre:SetCheck( .T. ),oLamcla:vOrden:="b_nombre",pOrdBod())
DEFINE BUTTON OF oBar RESOURCE "#8013" PROMPT "Cerrar" TOOLTIP "Cerra Ventana" ACTION (oLamcla:oRsBodega:Close(),oCuadro:End())
oBar:GoTop()
RETURN .T.
****************
*Agregar Bodegas
****************
PROC pAgreBod()
oB2vg1:=space(3)
oB2vg2:=space(50)
oB2vg3:=space(50)
oB2vg4:=space(20)
DEFINE BRUSH oFondo FILE ".\res\res_403.BMP"
DEFINE DIALOG oCuadr1 RESOURCE "orBodeg1" ICON "#8001" TRANSPARENT BRUSH oFondo
REDEFINE BUTTONBMP Btn_Grab ID 11 OF oCuadr1 BITMAP "Bgrab" ACTION pValiBod()
REDEFINE BUTTONBMP Btn_Canc ID 10 OF oCuadr1 BITMAP "Bcanc" ACTION oCuadr1:End()
REDEFINE GET oB2og1 VAR oB2vg1 ID 4001 OF oCuadr1
REDEFINE GET oB2og2 VAR oB2vg2 ID 4003 OF oCuadr1
REDEFINE GET oB2og3 VAR oB2vg3 ID 4004 OF oCuadr1
REDEFINE GET oB2og4 VAR oB2vg4 ID 4006 OF oCuadr1
oCuadr1:cTitle := "Agregar Registro Bodegas"
ACTIVATE DIALOG oCuadr1 CENTERED
****************
*Validar Bodegas
****************
PROC pValiBod()
IF Empty(oB2vg1)
MsgStop("Digite Codigo Bodega",oLamcla:mImco)
oB2og1:setfocus()
ELSE
IF Empty(oB2vg2)
MsgStop("Digite Nombre Bodega",oLamcla:mImco)
oB2og2:setfocus()
ELSE
IF oLamcla:vgraba=.t.
oVar:="SELECT * from " + oLamcla:tBode +" WHERE b_bodega='"+alltrim(oB2vg1)+"'"
TRY
oConsBO := CreateObject("ADODB.Recordset")
CATCH oError
MsgStop(oLamcla:mErnt,oLamcla:mErco)
RETURN(.F.)
END
oConsBO:CursorLocation := adUseClient //adUseServer
oConsBO:LockType := adLockOptimistic
oConsBO:CursorType := adOpenKeyset
oConsBO:Source := oVar
oConsBO:ActiveConnection( oLamcla:oServer )
TRY
oConsBO:Open()
CATCH oError
MsgStop(oLamcla:mComa,mDato)
END
nRegistros := oConsBO:RecordCount()
IF nRegistros#0
oConsBO:MoveFirst()
vMedi:=oConsBO:Fields("b_bodega"):Value
vNomb:=oConsBO:Fields("b_nombre"):Value
oConsBO:close()
MsgAlert("Bodega Existente:"+CRLF+;
"Código:->"+alltrim(vMedi)+CRLF+;
"Nombre:->"+alltrim(vNomb)+CRLF+;
"Digite Nuevamente",oLamcla:mDato)
oB2og1:setfocus()
ELSE
oConsBO:close()
pGrabBod()
ENDIF
ELSEIF oLamcla:vgraba=.f.
pGrabBod()
ENDIF
ENDIF
ENDIF
************************************
*Graba los datos en la base de datos
************************************
PROC pGrabBod()
uFec:=date()
uTim:=subs(time(),1,8)
uCou:=alltrim(oLamcla:vCous)
IF oLamcla:vgraba=.t.
oLamcla:oRsBodega:Addnew()
oLamcla:oRsBodega:Fields("b_bodega"):value := alltrim(oB2vg1)
oLamcla:oRsBodega:Fields("b_nombre"):value := alltrim(oB2vg2)
oLamcla:oRsBodega:Fields("b_direcc"):value := alltrim(oB2vg3)
oLamcla:oRsBodega:Fields("b_telefo"):value := alltrim(oB2vg4)
oLamcla:oRsBodega:Fields("umovim"):value := 0
oLamcla:oRsBodega:Fields("usuari"):value := uCou
oLamcla:oRsBodega:Fields("ufecha"):value := uFec
oLamcla:oRsBodega:Fields("uhoras"):value := uTim
oLamcla:oRsBodega:Update()
ELSE
oLamcla:oRsBodega:Fields("b_bodega"):value := alltrim(oB2vg1)
oLamcla:oRsBodega:Fields("b_nombre"):value := alltrim(oB2vg2)
oLamcla:oRsBodega:Fields("b_direcc"):value := alltrim(oB2vg3)
oLamcla:oRsBodega:Fields("b_telefo"):value := alltrim(oB2vg4)
oLamcla:oRsBodega:Fields("usuari"):value := uCou
oLamcla:oRsBodega:Fields("ufecha"):value := uFec
oLamcla:oRsBodega:Fields("uhoras"):value := uTim
oLamcla:oRsBodega:Update()
ENDIF
oLamcla:oRsBodega:Requery()
oLamcla:oBrwBode:Refresh()
oCuadr1:end()
******************
*Modificar Bodegas
******************
PROC pModiBod()
tama:=50-len(oLamcla:oRsBodega:Fields("b_nombre"):Value)
tamb:=50-len(oLamcla:oRsBodega:Fields("b_direcc"):Value)
tamc:=20-len(oLamcla:oRsBodega:Fields("b_telefo"):Value)
oB2vg1:=oLamcla:oRsBodega:Fields("b_bodega"):Value
oB2vg2:=oLamcla:oRsBodega:Fields("b_nombre"):Value+space(tama)
oB2vg3:=oLamcla:oRsBodega:Fields("b_direcc"):Value+space(tamb)
oB2vg4:=oLamcla:oRsBodega:Fields("b_telefo"):Value+space(tamc)
DEFINE BRUSH oFondo FILE ".\res\res_403.BMP"
DEFINE DIALOG oCuadr1 RESOURCE "orBodeg1" ICON "#8001" TRANSPARENT BRUSH oFondo
REDEFINE BUTTONBMP Btn_Grab ID 11 OF oCuadr1 BITMAP "Bgrab" ACTION pValiBod()
REDEFINE BUTTONBMP Btn_Canc ID 10 OF oCuadr1 BITMAP "Bcanc" ACTION oCuadr1:End()
REDEFINE GET oB2og1 VAR oB2vg1 ID 4001 OF oCuadr1
REDEFINE GET oB2og2 VAR oB2vg2 ID 4003 OF oCuadr1
REDEFINE GET oB2og3 VAR oB2vg3 ID 4004 OF oCuadr1
REDEFINE GET oB2og4 VAR oB2vg4 ID 4006 OF oCuadr1
oB2og1:disable()
oCuadr1:cTitle := "Modificar Registro Tabla Bodegas"
ACTIVATE DIALOG oCuadr1 CENTERED
****************
*Borrar Registro
****************
PROC pBorrBod()
nRegistros := oLamcla:oRsBodega:RecordCount()
IF nRegistros#0
oM2vg1:=oLamcla:oRsBodega:Fields("b_bodega"):Value
oM2vg2:=oLamcla:oRsBodega:Fields("b_nombre"):Value
IF MSGNOYES("Confirma Eliminar Bodega"+CRLF+;
"Código:->"+alltrim(oM2vg1)+CRLF+;
"Nombre:->"+alltrim(oM2vg2),oLamcla:mCoto)
oLamcla:oRsBodega:Delete()
oLamcla:oRsBodega:Requery()
oLamcla:oBrwBode:Refresh()
ENDIF
ENDIF
************************************
*hace la busqueda global en la tabla
************************************
PROC pBusBod()
IF Empty(oLamcla:oC1vg1)
oLamcla:oRsBodega:Filter := ""
ELSE
oLamcla:oRsBodega:Filter := oLamcla:vOrden+" LIKE '%" + alltrim(oLamcla:oC1vg1) + "%'"
IF oLamcla:oRsBodega:EOF .and. oLamcla:oRsBodega:BOF
MsgStop( oLamcla:mBusc,oLamcla:mDato)
oLamcla:oRsBodega:Filter := ""
ENDIF
ENDIF
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()
RETURN( NIL )
******************
*orden de la tabla
******************
PROC pOrdBod()
oLamcla:oRsBodega:Sort := oLamcla:vOrden
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()
*********************
*Imprimir Información
*********************
PROC pImprBod()
nRegistros := oLamcla:oRsBodega:RecordCount()
IF nRegistros#0
IF (oLamcla:oTimpr=1,pIPBod(),pIXBod())
ELSE
Msginfo(oLamcla:mErim,oLamcla:mDato)
ENDIF
********************
*IMPRIME EN PANTALLA
********************
PROC pIPBod()
local oReport,nLinea := 1, nHasta := oLamcla:oRsBodega:RECORDCOUNT(), ;
nBookMark := oLamcla:oRsBodega:BookMark
oLamcla:oRsBodega:MoveFirst()
uFec:=dtoc(date())
uTim:=subs(time(),1,8)
REPORT oReport CAPTION "TABLA DE BODEGAS" HEADER oLamcla:vGnom,"NIT:"+lymatrim(oLamcla:vGnit)+"-"+lymatrim(oLamcla:vGdig),"TABLA DE BODEGAS","Página Número: " + STR (oReport:nPage, 3),"Fecha Reporte: "+uFec+" - Hora: "+uTim;
CENTER PREVIEW
COLUMN TITLE "Código" DATA oLamcla:oRsBodega:Fields("b_bodega"):value SIZE 9
COLUMN TITLE "Nombre" DATA oLamcla:oRsBodega:Fields("b_nombre"):value SIZE 25
COLUMN TITLE "Dirección" DATA oLamcla:oRsBodega:Fields("b_direcc"):value SIZE 25
COLUMN TITLE "Teléfono" DATA oLamcla:oRsBodega:Fields("b_telefo"):value SIZE 15
END REPORT
oReport:bWhile := { || nLinea <= nHasta }
oReport:oDevice:SetPortrait()
oReport:oDevice:lPrvModal := .T.
IF oReport:lCreated
oReport:bSkip := { | | nLinea++, oLamcla:oRsBodega:MoveNext() }
ENDIF
ACTIVATE REPORT oReport ;
ON END oLamcla:oRsBodega:BookMark := nBookMark
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()
********************
*IMPRIME EN EXCEL
********************
PROC pIXBod()
LOCAL fila:=1
LOCAL vCod:="CODIGO"
LOCAL vNom:="NOMBRE"
LOCAL vDir:="DIRECCION"
LOCAL vTel:="TELEFONO"
Gvtitu:="TABLA DE BODEGAS"
oXls := Txls():New( ".\xls\Bodegas.xls",, .T. )
oXls:Width( 01 , 10 )
oXls:Width( 02 , 50 )
oXls:Width( 03 , 50 )
oXls:Width( 04 , 20 )
oXls:Say( fila, 01, Gvtitu ,,,,,1 )
++fila
oXls:Say( fila, 01, vCod ,,,,,1 )
oXls:Say( fila, 02, vNom ,,,,,1 )
oXls:Say( fila, 03, vDir ,,,,,1 )
oXls:Say( fila, 04, vTel ,,,,,1 )
++fila
oLamcla:oRsBodega:MoveFirst()
Do While !oLamcla:oRsBodega:Eof()
oXls:Say( fila, 01, oLamcla:oRsBodega:Fields( "b_bodega" ):Value ,,,,,0 )
oXls:Say( fila, 02, oLamcla:oRsBodega:Fields( "b_nombre" ):Value ,,,,,0 )
oXls:Say( fila, 03, oLamcla:oRsBodega:Fields( "b_direcc" ):Value ,,,,,0 )
oXls:Say( fila, 04, oLamcla:oRsBodega:Fields( "b_telefo" ):Value ,,,,,0 )
oLamcla:oRsBodega:MoveNext()
++fila
EndDo
oXls:End()
oLamcla:oRsBodega:REQUERY()
oLamcla:oBrwBode:Refresh()
SHELLEXECUTE(,"OPEN",".\xls\Bodegas.xls",,,)