by mariordz » Thu Apr 19, 2007 5:52 pm
Antonio muchas gracias por tu pronta respuesta, como te imaginaras estoy incursionando en esta plataforma y me falta un buen por aprender, en cuanto a tu pregunta te puedo decir que no uso fonts, bitmaps o brushes en este programa, te transcribo parte del codigo para que tengas una mejor idea de lo que hago (y posiblemente me puedas sugerir alguna alternativa para hacer el programa mas eficiente.
*Funcion para capturar facturas
function capfacts()
public odial4
sino="S"
do while sino="S"
cNfac=space(12)
nMonf=0
dFechf=date()
ivapor=15
nrep1 := nrep1+" "+nrep2+" "+nrep3+" "+nrep4
nomtec="Nombre del técnico: "+alltrim(n1)+" "+alltrim(n2)
nomsolo=alltrim(n1)+" "+alltrim(n2)
public aConcepto := {"Alimentos","Hospedaje","Telefono","Combustible","Papelería","Otros","Casetas","Transporte","Sin comprobación"}
cConcepto := " "
define dialog odial4 resource "capfacs" of oVentprinc
redefine get nomtec ID 0 of oDial4
redefine get numcomp ID 2 of oDial4
redefine get cNfac ID 4 of oDial4 picture"@!" valid IIF(cNfac=" ",.f.,.t.)
redefine get nMonf ID 6 of Odial4 picture("$###,###.##") valid IIF(nMonf=0,.f.,.t.)
redefine get dFechf ID 7 of oDial4
redefine get ivapor ID 9 of oDial4 picture "##" valid IIF(ivapor=0,.f.,.t.)
redefine combobox cconcepto ID 12 ITEMS aconcepto on change eltipo() of oDial4
activate dialog oDial4
sino="N"
enddo
return
*funcion para elegir tipo de factura
function eltipo()
odial4:end()
public oDialpro
do case
case cconcepto="Alimentos"
facalim()
case cconcepto="Hospedaje"
fachosp()
case cconcepto="Telefono"
factele()
case cconcepto="Combustible"
faccomb()
case cconcepto="Papelería"
facpape()
case cconcepto="Otros"
facotro()
case cconcepto="Casetas"
faccase()
case cconcepto="Transporte"
factran()
case cconcepto="Sin comprobación"
sincomp()
endcase
return
**Inician ordenes y funciones para captura de factura de alimentos
function facalim()
prop=0
tope1=150
define dialog oDialpro resource "propina" of oDial4
redefine get prop ID 1 of oDialpro picture"$###.##"
redefine button ID 2 action oDialpro:end()
activate dialog oDialpro
ivapo=ivapor/100
subt1=nMonf-prop
subt2=subt1/(ivapo+1)
miva=subt2*(ivapo)
define dialog oDialrali resource "resali" of oDial4
redefine get folcom ID 9 of oDialrali
redefine get cNfac ID 10 of oDialrali
redefine get cconcepto ID 11 of oDialrali
redefine get subt2 ID 12 of oDialrali picture"$###,###.##"
redefine get miva ID 13 of oDialrali picture"$###,###.##"
redefine get prop ID 14 of oDialrali picture"$###,###.##"
redefine get nMonf ID 15 of oDialrali picture"$###,###.##"
redefine button ID 7 of oDialrali action regali()
redefine button ID 8 of oDialrali action rechali()
activate dialog oDialrali
return
*funcion que agrega el registro capturado a la base de datos
function regali()
odialrali:end()
comexed=space(60)
IF subt2>tope1
define dialog oDialalex resource "alimexed" of oVentprinc
redefine get comexed ID 1 of oDialalex
redefine button ID 2 of oDialalex action oDialalex:end()
activate dialog oDialalex
ENDIF
use &tmpcap
append blank
go bottom
IF lock()
replace comp_orig with folcom, fechcomp with date(), clase with 1, fechaf with dFechf, nofact with cNfac
replace alimentos with subt2, iva with miva, totalxf with nMonf, tech_id with ctechid, subtotal with subt2
replace total with nMonf, propina with prop, reports with nrep1, iva_por with ivapor, observa with comexed
replace status with "G"
unlock
ENDIF
agrotra()
return
*funcion que desecha el registro capturado
function rechali()
oDialrali:end()
agrotra()
return
****************************************
*Finalizan ordenes y funciones de factura de alimentos (de aqui en *adelante muestro ventanas para el desglose por tipo de factura y *despues le pregunto al usuario si desea capturar otra factura)
****************************************
*funcion que permite elegir si desea capturar otra factura
function agrotra()
define dialog oDialotra resource "otraf" of oventprinc
redefine button ID 1 of odialotra action agreotra()
redefine button ID 2 of oDialotra action noagreotra()
activate dialog oDialotra
return
*funcion que al elegir capturar otra llama nuevamente a la funcion de captura
function agreotra()
oDialotra:end()
capfacts()
return
*Funcion que al elegir no agregar factura pide declaracion de rembolso
function noagreotra()
public oDialreem
oDialotra:end()
define dialog oDialreem resource "reembolso" of oVentprinc
redefine button ID 1 of oDialreem action (odialreem:end(),decdev())
redefine button ID 2 of oDialreem action (oDialreem:end(),addreg())
activate dialog oDialreem
return
*funcion que declara el rembolos a la empresa
function decdev()
public oDialdede
montdep := 0
fechdep := date()
obser1 := space(60)
oDialreem:end()
define dialog oDialdede resource "declarad" of oVentprinc
redefine get nomsolo ID 1 of oDialdede
redefine get folcom ID 3 of oDialdede
redefine get montdep ID 7 of oDialdede picture"$###,###.##"
redefine get fechdep ID 9 of oDialdede
redefine get obser1 ID 13 of oDialdede
redefine button ID 14 of oDialdede action (oDialdede:end(), insregde())
redefine button ID 15 of oDialdede action oDialdede:end()
activate dialog oDialdede
return
*Funcion que inserta el registro de rembolso a la base de datos
function insregde()
oDialdede:end()
use &tmpcap
append blank
IF rlock()
replace nofact with " ", comp_orig with folcom, fechcomp with date(), clase with 0, fechr with fechdep
replace tech_id with ctechid, reports with nrep1, observa with obser1, rembolso with montdep
replace status with "G"
unlock
ENDIF
do addreg
return
*Agrega todos los registros capturdos de la base de datos de captura (temporal) a la base de datos central
function addreg()
use &dbgast
append from &tmpcap
return