Page 1 of 1

Completare date delegat pe factură

Posted: 07 Dec 2012, 19:12
by tibor.kiss
Dezvoltând ideea Completare mai rapida TBON, BVINZ scris de Bodosi Imre in http://www.hamorsoft.eu/forum/viewtopic.php?f=7&t=194
găsiți mai jos un script pentru completarea datelor delegatului pe factura.

Code: Select all

// script DELEG
//
// In operatia de Adaugare factura
// completeaza cod client in antetul facturii,
// si datele delegatului in textul liber.
// 
// Scriptul este apelat in Initializare - Formule.
// Dupa randul # xF_lOpTva := {"1Ix"}  (sau similar)
// se scrie:   # gcmd_exec("DELEG")
//
// Textul liber al documentului trebuie sa contina urmatorul text:
//
// Nume delegat:
// CI:
//
// Datele delegatului se completeaza in Persoane.
// Campuri folosite: Numele si prenumele
// si primul rand din Observatii pentru datele de buletin.
// (Se pot folosi si alte campuri, modificand adecvat scriptul.)

// activat numai pt. un anumit model de document
#IF ! fac_model = "D"
	Abandon()
#ENDIF

// citire cod client
cCodFirma := SPACE(7)
h_GetParam(@cCodFirma,;
	"Alegere client",;
	"Cod firma",;
	"hlp_firm (2, 1, , .F.)",;
	"h_Valid(vf_firm(sParam),'Cod client inexistent.')",;
	"@!")
	
// iesit cu ESC
#IF EMPTY(cCodFirma)
	Abandon()
#ENDIF

// salvare alias curent
cAlias := ALIAS()

// deschidere Persoane
#IF ! h_UseAlias("per")
	Abandon()
#ENDIF
DBSELECTAREA("per")

// filtru pe persoanele firmei alese anterior
DBSETFILTER({|| (per->CODFIRMA=cCodFirma) })
DBGOTOP()

// nu exista persoana pt. aceasta firma
#IF EOF()
	h_MesErr("Nu exista persoane introduse pentru firma "+firm->INITIALE,0)
	h_CloseAlias("per")
	DBSELECTAREA(cAlias)
	Abandon()
#ENDIF

// citire cod persoana
cCodPers := SPACE(5)
h_GetParam(@cCodPers,;
	"Alegere delegat",;
	"Cod persoana",;
	"hlp_per (2, 1, , .F.)",;
	"h_Valid(vf_per(sParam),'Cod persoana inexistent.')",;
	"@!")

// iesit cu ESC
#IF EMPTY(cCodPers)
	h_CloseAlias("per")
	DBSELECTAREA(cAlias)
	Abandon()
#ENDIF

// completare cod client in antetul facturii
fac_codbenef := cCodFirma

// completare nume delegat si date buletin in text liber
fac_txtlib := STRTRAN(fac_txtlib, "delegat:", "delegat: "+ALLTRIM(per->NUME))
fac_txtlib := STRTRAN(fac_txtlib, "CI:", "CI: "+ALLTRIM(per->OBS))


// inchidere fis. persoane
h_CloseAlias("per")

// revenire la alias initial
DBSELECTAREA(cAlias)

// Optional: ca sa apara si datele firmei in antet. Cursorul trece in text liber.
h_KeyBoard(REPLICATE(CHR(13),7)+CHR(28)+CHR(13))