He modificado el código para hacerlo "funcional" a mi manera como diría Frank Sinatra
, sin embargo, si alguien de Uds. desea mejorarlo sería muy bueno para aprender otra opción
Code: Select all
#include <hmg.ch>
Function Main
SET CENT ON
SET DATE FREN
PUBLIC COD,NOM,PVP
PASE=0
QU=''
FACT='001001000012345'
CLI='1234567890123'
VEN='123'
FEC=DTOC(DATE())
aCtrl_1 := {'TEXTBOX','CHARACTER','99'}
aCtrl_2 := {'TEXTBOX','CHARACTER'}
aCtrl_3 := {'TEXTBOX','CHARACTER'}
aCtrl_4 := {'TEXTBOX','NUMERIC','99999.99'}
aCtrl_5 := {'TEXTBOX','NUMERIC','99999.99'}
aCtrl_6 := {'TEXTBOX','NUMERIC','99.99'}
aCtrl_7 := {'TEXTBOX','NUMERIC','99999.99'}
SELE 1
USE FACTURA
SELE 2
USE ITEMS
SELE 1
GOTO TOP
DEFINE WINDOW SAMPLE AT 0,0 WIDTH 1280 HEIGHT 768 MAIN NOCAPTION
@ 00,0 LABEL Label_1 PARENT SAMPLE VALUE "GENERANDO UNA FACTURA DE VENTA" WIDTH 1280 HEIGHT 768 FONT "CALIBRI" SIZE 48 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 64,0 LABEL Label_2 PARENT SAMPLE VALUE "PRINCIPAL DE PRODUCTOS DETALLE DE LA FACTURA " WIDTH 1280 HEIGHT 704 FONT "CALIBRI" SIZE 36 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 115,575 GRID GRID_1 PARENT SAMPLE ;
WIDTH 700 HEIGHT 658 ;
HEADERS {'BD','C O D I G O','D E S C R I P C I O N','CANT.','PRECIO','DSCTO %','A PAGAR'} ;
WIDTHS {30,99,275,70,70,70,70} ;
COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 , aCtrl_7 } ;
COLUMNVALID { {|| .t. }, {|| X1() }, {|| X2() }, {|| .t. }, {|| X3() }, {|| .t. }, {|| .t. } } ;
ROWSOURCE "FACTURA" ;
COLUMNFIELDS {'BD','CODIGO','DETALLE','CANTIDAD','PRECIO','DSCTO','TOTAL'} ;
FONTCOLOR {160,240,20} ;
BACKCOLOR {0,100,180} ;
EDIT ;
ALLOWAPPEND ;
ALLOWDELETE
ON KEY ESCAPE ACTION FIN()
END WINDOW
sample.activate
RETURN
*----------------
Procedure FIN()
commit
USE
SELE 2 && ITEMS
USE
release all like *
USE FACTURA
IF FLOCK()
REPLA ALL FACTURA WITH FACT FOR EMPT(FACTURA)
REPLA ALL FECHA WITH DATE()
REPLA ALL TOTAL WITH CANTIDAD*PRECIO*(100-DSCTO)/100
REPLA CLIENTE WITH CLI FOR EMPT(CLIENTE)
REPLA VENDEDOR WITH VEN FOR EMPT(VENDEDOR)
ENDIF
SUM ALL CANTIDAD*PRECIO TO VALO1
SUM ALL CANTIDAD*PRECIO*DSCTO/100 TO VALO2
VALO3 := VALO1-VALO2
VALO4 := (VALO1-VALO2)*.14
SUM ALL TOTAL TO VALO5
VALO5 := VALO5+VALO4
CLOS ALL
SAMPLE.hide
DEFINE WINDOW SAMPLE2 AT 0,0 WIDTH 1280 HEIGHT 768 NOCAPTION
@ 000,0 LABEL Label_1 PARENT SAMPLE2 VALUE "RESUMEN DE LA FACTURA DE VENTA # &FACT" WIDTH 1280 HEIGHT 768 FONT "CALIBRI" SIZE 36 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 100,0 LABEL Label_2 PARENT SAMPLE2 VALUE "FECHA: &FEC" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 140,0 LABEL Label_3 PARENT SAMPLE2 VALUE "CLIENTE: &CLI" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 180,0 LABEL Label_4 PARENT SAMPLE2 VALUE "VENDEDOR: &VEN" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 240,000 LABEL Label_5 PARENT SAMPLE2 VALUE "VALOR BRUTO:" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 240,250 LABEL Label_M VALUE (Transform(VALO1,'$99,999,999.99')) FONT "TAHOMA" SIZE 24 FONTCOLOR YELLOW BOLD WIDTH 250 HEIGHT 120 TRANSP
@ 280,000 LABEL Label_6 PARENT SAMPLE2 VALUE "DESCUENTO:" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 280,250 LABEL Label_N VALUE (Transform(VALO2,'$99,999,999.99')) FONT "TAHOMA" SIZE 24 FONTCOLOR YELLOW BOLD WIDTH 250 HEIGHT 120 TRANSP
@ 320,0 LABEL Label_7 PARENT SAMPLE2 VALUE "----------------------------------------------" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 360,000 LABEL Label_8 PARENT SAMPLE2 VALUE "SUBTOTAL:" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 360,250 LABEL Label_O VALUE (Transform(VALO3,'$99,999,999.99')) FONT "TAHOMA" SIZE 24 FONTCOLOR YELLOW BOLD WIDTH 250 HEIGHT 120 TRANSP
@ 400,000 LABEL Label_9 PARENT SAMPLE2 VALUE "IMPUESTO:" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 400,250 LABEL Label_P VALUE (Transform(VALO4,'$99,999,999.99')) FONT "TAHOMA" SIZE 24 FONTCOLOR YELLOW BOLD WIDTH 250 HEIGHT 120 TRANSP
@ 440,0 LABEL Label_10 PARENT SAMPLE2 VALUE "----------------------------------------------" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 480,000 LABEL Label_11 PARENT SAMPLE2 VALUE "TOTAL A COBRAR:" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
@ 480,250 LABEL Label_Q VALUE (Transform(VALO5,'$99,999,999.99')) FONT "TAHOMA" SIZE 24 FONTCOLOR YELLOW BOLD WIDTH 250 HEIGHT 120 TRANSP
@ 520,0 LABEL Label_12 PARENT SAMPLE2 VALUE "=============================" WIDTH 1280 HEIGHT 30 FONT "CALIBRI" SIZE 24 BOLD ITALIC FONTCOLOR WHITE BACKCOLOR BLUE
ON KEY ESCAPE ACTION FIN2()
END WINDOW
sample2.activate
RETURN
*---------------
Procedure FIN2()
SAMPLE2.RELEASE
SAMPLE.RELEASE
RETURN
*---------------
Procedure X1()
QU = ALLTRIM(THIS.CELLValue)
QU = ALLTRIM(QU)
SELE 2 && ITEMS
GOTO TOP
LOCA FOR CODIGO=QU
IF FOUN()
*OK
ELSE
MSGINFO ('CODIGO NO EXISTE !!!')
GOTO TOP
IF PASE=0
@ 115,0 GRID GRID_2 PARENT SAMPLE ;
WIDTH 570 HEIGHT 658 ;
HEADERS {'CODIGO','D E S C R I P C I O N','S T O C K','PRECIO'} ;
WIDTHS {100,300,70,100} ;
ROWSOURCE "ITEMS" ;
FONTCOLOR {160,240,20} ;
BACKCOLOR {0,100,180} ;
COLUMNFIELDS {'CODIGO','NOMBRE','STOCK','PRECIO'}
PASE=1
ENDIF
ENDIF
NOM=NOMBRE
MSGINFO ('&NOM')
COD=CODIGO
PVP=PRECIO
SELE 1 && FACTURA
This.CellValue := COD
Return
*---------------
Procedure X2()
IF Empty ( This.CellValue )
This.CellValue := NOM
ENDIF
RETURN
*---------------
Procedure X3()
IF Empty ( This.CellValue )
This.CellValue := PVP
ENDIF
RETURN