1158 lines
44 KiB
Plaintext
1158 lines
44 KiB
Plaintext
PROCEDURE makexmlfacturaelectronica
|
||
|
||
LPARAMETERS plrectificativa, ;
|
||
mlnumefisier, ;
|
||
plcalefacturi
|
||
LOCAL mtipfactura, i, mlinii, ;
|
||
mliniireducere, ;
|
||
mliniistornare, mid, ;
|
||
maccize, mtotalcharges, ;
|
||
mtotalallowances, mmoneda, ;
|
||
minvoicetype, mcodfiscal, ;
|
||
mcomanda, mtara, mtiptert, ;
|
||
mtiptvacurent, mtvai, ;
|
||
mincasat, mindicetva, ;
|
||
mexpliesirilot
|
||
STORE 1 TO i
|
||
STORE 0 TO maccize, ;
|
||
mliniireducere, ;
|
||
mtotalcharges, ;
|
||
mtotalallowances, mtvai, ;
|
||
mincasat
|
||
STORE "" TO mexpliesirilot
|
||
IF EMPTY(pcodfiscal)
|
||
MESSAGEBOX( ;
|
||
"Completati codul fiscal al societatii, in ecranul 'Configurare societati'.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
IF .NOT. USED("SOC_SUPL")
|
||
myot("SOC_SUPL","SOC_SUPL", ;
|
||
1)
|
||
ENDIF
|
||
UPDATE C_IES_FORM SET indice = ;
|
||
IIF(INLIST(cont, '667', ;
|
||
'709', '609'), -1, 0)
|
||
UPDATE C_IES_FORM SET protva = 0 ;
|
||
WHERE INLIST(tip, "U", ;
|
||
"H")
|
||
DELETE FROM C_IES_FORM WHERE ;
|
||
EMPTY(id_u)
|
||
mid = c_id_tip.id_iesire
|
||
IF pisfb
|
||
SQLEXEC(gnconnhandle, ;
|
||
"SELECT CONTRACTE.nr, CONTRACTE.data,CONTRACTE_TIP.recurenta FROM CONTRACTE INNER JOIN CONTR_DET ON CONTRACTE.id = CONTR_DET.id JOIN CONTRACTE_TIP ON CONTRACTE.cod_contr=CONTRACTE_TIP.cod WHERE id_fact=?mId", ;
|
||
"C_CONTRACT_FACTURA")
|
||
ELSE
|
||
SELECT contracte.nr, ;
|
||
contracte.data, ;
|
||
contracte_tip.recurenta ;
|
||
FROM CONTRACTE INNER ;
|
||
JOIN CONTR_DET ON ;
|
||
contracte.id = ;
|
||
contr_det.id INNER ;
|
||
JOIN CONTRACTE_TIP ON ;
|
||
contracte.cod_contr = ;
|
||
contracte_tip.cod ;
|
||
WHERE id_fact = mid ;
|
||
INTO CURSOR ;
|
||
C_CONTRACT_FACTURA
|
||
ENDIF
|
||
SELECT protva, ROUND(SUM(valoare) * ;
|
||
protva / 100, 2) AS tva, ;
|
||
SUM(valoare) AS valoare, ;
|
||
' ' AS tip, REPLICATE(' ', ;
|
||
30) AS explicatie, ;
|
||
REPLICATE(' ', 30) AS ;
|
||
motiv FROM C_IES_FORM ;
|
||
GROUP BY protva INTO ;
|
||
CURSOR C_TVA_FACTURA ;
|
||
READWRITE
|
||
SELECT c_tva_factura
|
||
SUM tva TO mtotaltva
|
||
INDEX ON protva TAG procent
|
||
IF pisfb
|
||
SQLEXEC(gnconnhandle, ;
|
||
"SELECT DISTINCT ies_det.id_u,com_m.nr,com_m.data FROM iesiri INNER JOIN ies_det ON iesiri.id_iesire=ies_det.id_iesire" + ;
|
||
" JOIN FACT_COMENZI ON ies_det.id_u=fact_comenzi.id_factura JOIN COMENZI ON FACT_COMENZI.id_comanda = comenzi.id_com JOIN com_m ON comenzi.id=com_m.id WHERE IESIRI.id_iesire=?mId", ;
|
||
"C_COMENZI_FACTURA")
|
||
ELSE
|
||
SELECT DISTINCT ies_det.id_u, ;
|
||
com_m.nr, com_m.data ;
|
||
FROM iesiri INNER ;
|
||
JOIN ies_det ON ;
|
||
iesiri.id_iesire = ;
|
||
ies_det.id_iesire ;
|
||
INNER JOIN ;
|
||
FACT_COMENZI ON ;
|
||
ies_det.id_u = ;
|
||
fact_comenzi.id_factura ;
|
||
INNER JOIN COMENZI ON ;
|
||
fact_comenzi.id_comanda = ;
|
||
comenzi.id_com INNER ;
|
||
JOIN com_m ON ;
|
||
comenzi.id = com_m.id ;
|
||
WHERE ;
|
||
iesiri.id_iesire = ;
|
||
mid INTO CURSOR ;
|
||
C_COMENZI_FACTURA
|
||
ENDIF
|
||
SELECT DISTINCT nr, data FROM ;
|
||
C_COMENZI_FACTURA INTO ;
|
||
CURSOR ;
|
||
C_COMENZI_INDIVIDUALE
|
||
IF RECCOUNT("C_COMENZI_INDIVIDUALE") = ;
|
||
1
|
||
mcomanda = ALLTRIM(c_comenzi_individuale.nr) + ;
|
||
"/" + ;
|
||
ALLTRIM(DTOC(c_comenzi_individuale.data))
|
||
ELSE
|
||
mcomanda = ""
|
||
ENDIF
|
||
IF pisfb
|
||
SQLEXEC(gnconnhandle, ;
|
||
"SELECT SUM(suma) AS suma FROM NOTE_FACTURI WHERE id_factura=?mId", ;
|
||
"C_FB")
|
||
IF RECCOUNT("C_FB") > 0 ;
|
||
.AND. .NOT. ;
|
||
ISNULL(c_fb.suma)
|
||
mincasat = c_fb.suma
|
||
ENDIF
|
||
ELSE
|
||
SELECT SUM(suma) FROM ;
|
||
NOTE_FACTURI WHERE ;
|
||
id_factura = mid INTO ;
|
||
ARRAY ;
|
||
atestincasareefactura
|
||
IF _TALLY > 0 .AND. .NOT. ;
|
||
ISNULL(atestincasareefactura)
|
||
mincasat = atestincasareefactura(1)
|
||
ENDIF
|
||
ENDIF
|
||
SELECT c_ies_form
|
||
mmoneda = ALLTRIM(c_ies_form.moneda)
|
||
mcodfiscal = c_ies_form.cod_fiscal
|
||
mtipfactura = c_ies_form.tip
|
||
mtara = c_ies_form.tara
|
||
mtiptert = c_ies_form.tip_tert
|
||
mtiptvacurent = gettva(c_ies_form.data)
|
||
mtvai = c_ies_form.tvai
|
||
minf_suplm = c_ies_form.inf_suplm
|
||
IF .NOT. INLIST(mtipfactura, ' ', ;
|
||
'S', 'M', 'U', 'H')
|
||
MESSAGEBOX( ;
|
||
"Pentru acest document nu se genereaza factura electronica momentan.", ;
|
||
64, "Atentie...")
|
||
RETURN
|
||
ENDIF
|
||
COUNT TO mlinii
|
||
COUNT FOR indice = -1 TO ;
|
||
mliniireducere
|
||
COUNT FOR indice >= 0 .AND. ;
|
||
valoare < 0 TO ;
|
||
mliniistornare
|
||
COUNT FOR cont = '419' TO ;
|
||
mnrliniiavans
|
||
SUM ABS(valoare) TO mdiscounturi ;
|
||
FOR indice = -1
|
||
mtotalallowances = mtotalallowances + ;
|
||
mdiscounturi
|
||
LOCATE
|
||
SELECT c_tva_factura
|
||
SCAN
|
||
DO CASE
|
||
CASE mtipfactura = 'T' ;
|
||
.OR. mtiptert = ;
|
||
'I'
|
||
REPLACE tip WITH ;
|
||
'AE', ;
|
||
explicatie ;
|
||
WITH ;
|
||
'Taxare inversa', ;
|
||
motiv WITH ;
|
||
'VATEX-EU-AE'
|
||
CASE mtipfactura = 'S'
|
||
REPLACE tip WITH ;
|
||
'E', ;
|
||
explicatie ;
|
||
WITH ;
|
||
'Scutit cu drept de deducere'
|
||
CASE EMPTY(mtipfactura) ;
|
||
.AND. ;
|
||
c_tva_factura.protva = ;
|
||
0
|
||
IF mtiptvacurent < ;
|
||
3
|
||
REPLACE tip ;
|
||
WITH ;
|
||
'Z'
|
||
ELSE
|
||
REPLACE tip ;
|
||
WITH ;
|
||
'Z'
|
||
ENDIF
|
||
CASE mtipfactura = 'H'
|
||
REPLACE tip WITH ;
|
||
'E', ;
|
||
explicatie ;
|
||
WITH ;
|
||
'Bunuri second-hand', ;
|
||
motiv WITH ;
|
||
'VATEX-EU-F'
|
||
CASE mtipfactura = 'U'
|
||
REPLACE tip WITH ;
|
||
'E', ;
|
||
explicatie ;
|
||
WITH ;
|
||
'Regim special agentii de turism', ;
|
||
motiv WITH ;
|
||
'VATEX-EU-D'
|
||
OTHERWISE
|
||
REPLACE tip WITH ;
|
||
'S'
|
||
ENDCASE
|
||
ENDSCAN
|
||
IF c_ies_form.accize > 0
|
||
maccize = c_ies_form.accize
|
||
mtotalcharges = mtotalcharges + ;
|
||
maccize
|
||
SELECT COUNT(*) FROM ;
|
||
C_TVA_FACTURA WHERE ;
|
||
tip = 'Z' INTO ARRAY ;
|
||
agetcotaz
|
||
IF _TALLY > 0 .AND. .NOT. ;
|
||
ISNULL(agetcotaz(1)) ;
|
||
.AND. agetcotaz(1) > 0
|
||
UPDATE C_TVA_FACTURA ;
|
||
SET valoare = ;
|
||
valoare + ;
|
||
maccize WHERE ;
|
||
tip = 'Z'
|
||
ELSE
|
||
INSERT INTO ;
|
||
C_TVA_FACTURA ;
|
||
(protva, tva, ;
|
||
valoare, tip, ;
|
||
explicatie, ;
|
||
motiv) VALUES (0, ;
|
||
0, maccize, 'Z', ;
|
||
'Acciza', '')
|
||
ENDIF
|
||
ENDIF
|
||
SELECT c_ies_form
|
||
LOCATE
|
||
oxml = CREATEOBJECT("msxml2.DOMDocument")
|
||
oxml.appendchild(oxml.createnode("PROCESSINGINSTRUCTION", ;
|
||
"xml",""))
|
||
oinvoice = oxml.appendchild(oxml.createelement("Invoice"))
|
||
oinvoice.setattribute("xmlns:cbc", ;
|
||
"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" ;
|
||
)
|
||
oinvoice.setattribute("xmlns:udt", ;
|
||
"urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2" ;
|
||
)
|
||
oinvoice.setattribute("xmlns:cac", ;
|
||
"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" ;
|
||
)
|
||
oinvoice.setattribute("xmlns:ccts", ;
|
||
"urn:un:unece:uncefact:documentation:2")
|
||
oinvoice.setattribute("xmlns", ;
|
||
"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" ;
|
||
)
|
||
oinvoice.setattribute("xmlns:qdt", ;
|
||
"urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" ;
|
||
)
|
||
oinvoice.setattribute("xsi:schemaLocation", ;
|
||
"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 ../../UBL-2.1(1)/xsd/maindoc/UBL-Invoice-2.1.xsd" ;
|
||
)
|
||
oinvoice.setattribute("xmlns:xsi", ;
|
||
"http://www.w3.org/2001/XMLSchema-instance" ;
|
||
)
|
||
oinvoice.appendchild(oxml.createelement("cbc:UBLVersionID"))
|
||
oinvoice.lastchild.text = "2.1"
|
||
oinvoice.appendchild(oxml.createelement("cbc:CustomizationID"))
|
||
oinvoice.lastchild.text = "urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:CIUS-RO:1.0.0"
|
||
oinvoice.appendchild(oxml.createelement("cbc:ID"))
|
||
oinvoice.lastchild.text = ALLTRIM(c_ies_form.nr)
|
||
oinvoice.appendchild(oxml.createelement("cbc:IssueDate"))
|
||
oinvoice.lastchild.text = ALLTRIM(STR(YEAR(c_ies_form.data))) + ;
|
||
"-" + ;
|
||
PADL(ALLTRIM(STR(MONTH(c_ies_form.data))), ;
|
||
2, "0") + ;
|
||
"-" + ;
|
||
PADL(ALLTRIM(STR(DAY(c_ies_form.data))), ;
|
||
2, ;
|
||
"0")
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.scadent) ;
|
||
.AND. .NOT. ;
|
||
ISNULL(c_ies_form.scadent) ;
|
||
.AND. c_ies_form.scadent <> ;
|
||
{}
|
||
oinvoice.appendchild(oxml.createelement("cbc:DueDate"))
|
||
oinvoice.lastchild.text = ALLTRIM(STR(YEAR(c_ies_form.scadent))) + ;
|
||
"-" + ;
|
||
PADL(ALLTRIM(STR(MONTH(c_ies_form.scadent))), ;
|
||
2, ;
|
||
"0") + ;
|
||
"-" + ;
|
||
PADL(ALLTRIM(STR(DAY(c_ies_form.scadent))), ;
|
||
2, ;
|
||
"0")
|
||
ENDIF
|
||
minvoicetype = ""
|
||
DO CASE
|
||
CASE plrectificativa = 1
|
||
minvoicetype = "384"
|
||
CASE ALLTRIM(getnrfromstring(mcodfiscal)) == ;
|
||
ALLTRIM(pcodfiscal)
|
||
minvoicetype = "389"
|
||
CASE mliniistornare = mlinii
|
||
minvoicetype = "381"
|
||
OTHERWISE
|
||
minvoicetype = "380"
|
||
ENDCASE
|
||
oinvoice.appendchild(oxml.createelement("cbc:InvoiceTypeCode"))
|
||
oinvoice.lastchild.text = minvoicetype
|
||
IF mtvai = 1
|
||
oinvoice.appendchild(oxml.createelement("cbc:Note"))
|
||
oinvoice.lastchild.text = "TVA la incasare"
|
||
ENDIF
|
||
IF .NOT. EMPTY(mtipfactura = 'T' ;
|
||
.OR. mtiptert = 'I')
|
||
oinvoice.appendchild(oxml.createelement("cbc:Note"))
|
||
oinvoice.lastchild.text = "Taxare inversa"
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.inf_suplm)
|
||
oinvoice.appendchild(oxml.createelement("cbc:Note"))
|
||
oinvoice.lastchild.text = ALLTRIM(minf_suplm)
|
||
ENDIF
|
||
oinvoice.appendchild(oxml.createelement("cbc:DocumentCurrencyCode"))
|
||
IF pisexport
|
||
oinvoice.lastchild.text = ALLTRIM(moneda)
|
||
ELSE
|
||
oinvoice.lastchild.text = "RON"
|
||
ENDIF
|
||
oinvoice.appendchild(oxml.createelement("cbc:TaxCurrencyCode"))
|
||
oinvoice.lastchild.text = "RON"
|
||
IF .NOT. EMPTY(mcomanda)
|
||
oorderreference = oinvoice.appendchild(oxml.createelement("cac:OrderReference"))
|
||
oorderreference.appendchild(oxml.createelement("cbc:ID"))
|
||
oorderreference.lastchild.text = ;
|
||
mcomanda
|
||
ENDIF
|
||
IF RECCOUNT("C_CONTRACT_FACTURA") > ;
|
||
0
|
||
ocontractreference = oinvoice.appendchild(oxml.createelement("cac:ContractDocumentReference"))
|
||
ocontractreference.appendchild(oxml.createelement("cbc:ID"))
|
||
ocontractreference.lastchild.text = ;
|
||
ALLTRIM(c_contract_factura.nr) + ;
|
||
"/" + ;
|
||
ALLTRIM(DTOC(c_contract_factura.data))
|
||
ENDIF
|
||
osupplier = oinvoice.appendchild(oxml.createelement("cac:AccountingSupplierParty"))
|
||
oparty = osupplier.appendchild(oxml.createelement("cac:Party"))
|
||
IF EMPTY(pcs.email)
|
||
MESSAGEBOX( ;
|
||
"Completati adresa de email a societatii in ecranul 'Configurare societati'." + ;
|
||
CHR(13) + ;
|
||
"Aceasta este necesara pentru primirea raspunsului facturii electronice.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
oendpointid = oparty.appendchild(oxml.createelement("cbc:EndpointID"))
|
||
oendpointid.setattribute("schemeID", ;
|
||
"EM")
|
||
oendpointid.text = ALLTRIM(pcs.email)
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.cod_fiscal)
|
||
opartyidentification = oparty.appendchild(oxml.createelement("cac:PartyIdentification"))
|
||
oidparty = opartyidentification.appendchild(oxml.createelement("cbc:ID"))
|
||
oidparty.text = pcodfiscal
|
||
ENDIF
|
||
oadresa = oparty.appendchild(oxml.createelement("cac:PostalAddress"))
|
||
IF EMPTY(pcs.strada)
|
||
MESSAGEBOX( ;
|
||
"Completati strada in ecranul 'Configurare societati'.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
oadresa.appendchild(oxml.createelement("cbc:StreetName"))
|
||
oadresa.lastchild.text = ALLTRIM(pcs.strada)
|
||
IF EMPTY(pcs.localitate)
|
||
MESSAGEBOX( ;
|
||
"Completati localitatea in ecranul 'Configurare societati'.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
IF EMPTY(pcs.judet)
|
||
MESSAGEBOX( ;
|
||
"Alegeti judetul in ecranul 'Configurare societati'.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ELSE
|
||
IF pcs.judet = "BUCURESTI" ;
|
||
.AND. EMPTY(pcs.sect)
|
||
MESSAGEBOX( ;
|
||
"Completati sectorul in ecranul 'Configurare societati'.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
ENDIF
|
||
oadresa.appendchild(oxml.createelement("cbc:CityName"))
|
||
IF pcs.judet = "B "
|
||
oadresa.lastchild.text = "SECTOR " + ;
|
||
ALLTRIM(pcs.sect)
|
||
ELSE
|
||
oadresa.lastchild.text = ALLTRIM(UPPER(pcs.localitate))
|
||
ENDIF
|
||
SELECT cod FROM FREETAB\JUDETE ;
|
||
WHERE denjud = pcs.judet ;
|
||
INTO ARRAY agetjudadresa
|
||
mcodjudet = ""
|
||
IF _TALLY > 0 .AND. .NOT. ;
|
||
ISNULL(agetjudadresa(1))
|
||
mcodjudet = agetjudadresa(1)
|
||
ENDIF
|
||
oadresa.appendchild(oxml.createelement("cbc:CountrySubentity"))
|
||
oadresa.lastchild.text = "RO-" + ;
|
||
ALLTRIM(mcodjudet)
|
||
otara = oadresa.appendchild(oxml.createelement("cac:Country"))
|
||
otara.appendchild(oxml.createelement("cbc:IdentificationCode"))
|
||
otara.lastchild.text = "RO"
|
||
otaxe = oparty.appendchild(oxml.createelement("cac:PartyTaxScheme"))
|
||
otaxe.appendchild(oxml.createelement("cbc:CompanyID"))
|
||
otaxe.lastchild.text = "RO" + ;
|
||
pcodfiscal
|
||
oschemataxe = otaxe.appendchild(oxml.createelement("cac:TaxScheme"))
|
||
oschemataxe.appendchild(oxml.createelement("cbc:ID"))
|
||
oschemataxe.lastchild.text = "VAT"
|
||
oformalegala = oparty.appendchild(oxml.createelement("cac:PartyLegalEntity"))
|
||
oformalegala.appendchild(oxml.createelement("cbc:RegistrationName"))
|
||
oformalegala.lastchild.text = ALLTRIM(pdensoc)
|
||
IF .NOT. EMPTY(pregcom)
|
||
oidentificatorformalegala = oformalegala.appendchild(oxml.createelement("cbc:CompanyID"))
|
||
oidentificatorformalegala.text = ;
|
||
ALLTRIM(pregcom)
|
||
ENDIF
|
||
mdensoc = UPPER(pdensoc) + " "
|
||
mprefix = ""
|
||
msufix = ""
|
||
DO CASE
|
||
CASE mdensoc = "S.C. " .OR. ;
|
||
mdensoc = "SC "
|
||
mprefix = "Societate comerciala"
|
||
CASE mdensoc = "P.F. " .OR. ;
|
||
mdensoc = "PF "
|
||
mprefix = "Persoana fizica"
|
||
CASE mdensoc = "P.F.A. " ;
|
||
.OR. mdensoc = "PFA "
|
||
mprefix = "Persoana fizica autorizata"
|
||
CASE mdensoc = "A.F. " .OR. ;
|
||
mdensoc = "AF "
|
||
mprefix = "Asociatie familiala"
|
||
ENDCASE
|
||
DO CASE
|
||
CASE " S.R.L." $ mdensoc ;
|
||
.OR. " SRL " $ mdensoc
|
||
msufix = "Societate cu raspundere limitata"
|
||
CASE " S.A." $ mdensoc .OR. ;
|
||
" SA " $ mdensoc
|
||
msufix = "Societate pe actiuni"
|
||
ENDCASE
|
||
IF .NOT. EMPTY(mprefix)
|
||
oformalegala.appendchild(oxml.createelement("cbc:CompanyLegalForm"))
|
||
oformalegala.lastchild.text = ;
|
||
ALLTRIM(mprefix)
|
||
ENDIF
|
||
IF .NOT. EMPTY(pcs.numea) .OR. ;
|
||
.NOT. EMPTY(pcs.prea) .OR. ;
|
||
.NOT. EMPTY(pcs.email) .OR. ;
|
||
.NOT. EMPTY(pcs.telefon)
|
||
ocontact = oparty.appendchild(oxml.createelement("cac:Contact"))
|
||
IF .NOT. EMPTY(pcs.numea) ;
|
||
.OR. .NOT. ;
|
||
EMPTY(pcs.prea)
|
||
ocontact.appendchild(oxml.createelement("cbc:Name"))
|
||
ocontact.lastchild.text = ;
|
||
ALLTRIM(pcs.numea) + ;
|
||
" " + ;
|
||
ALLTRIM(pcs.prea)
|
||
ENDIF
|
||
IF .NOT. EMPTY(pcs.telefon)
|
||
ocontact.appendchild(oxml.createelement("cbc:Telephone"))
|
||
ocontact.lastchild.text = ;
|
||
ALLTRIM(pcs.telefon)
|
||
ENDIF
|
||
IF .NOT. EMPTY(pcs.email)
|
||
ocontact.appendchild(oxml.createelement("cbc:ElectronicMail"))
|
||
ocontact.lastchild.text = ;
|
||
ALLTRIM(pcs.email)
|
||
ENDIF
|
||
ENDIF
|
||
SELECT c_ies_form
|
||
LOCATE
|
||
ocustomer = oinvoice.appendchild(oxml.createelement("cac:AccountingCustomerParty"))
|
||
opartys = ocustomer.appendchild(oxml.createelement("cac:Party"))
|
||
IF .NOT. EMPTY(c_ies_form.email)
|
||
oendpointid = opartys.appendchild(oxml.createelement("cbc:EndpointID"))
|
||
oendpointid.setattribute("schemeID", ;
|
||
"EM")
|
||
oendpointid.text = ALLTRIM(c_ies_form.email)
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.cod_fiscal) ;
|
||
.AND. ;
|
||
verifcf(ALLTRIM(c_ies_form.cod_fiscal))
|
||
opartyidentifications = opartys.appendchild(oxml.createelement("cac:PartyIdentification"))
|
||
oidpartys = opartyidentifications.appendchild(oxml.createelement("cbc:ID"))
|
||
oidpartys.text = ALLTRIM(c_ies_form.cod_fiscal)
|
||
ENDIF
|
||
oadresas = opartys.appendchild(oxml.createelement("cac:PostalAddress"))
|
||
IF EMPTY(c_ies_form.adresa)
|
||
MESSAGEBOX( ;
|
||
"Completati adresa clientului.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
oadresas.appendchild(oxml.createelement("cbc:StreetName"))
|
||
oadresas.lastchild.text = ALLTRIM(c_ies_form.adresa)
|
||
IF EMPTY(c_ies_form.localitate)
|
||
MESSAGEBOX( ;
|
||
"Completati localitatea in adresa clientului.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
oadresas.appendchild(oxml.createelement("cbc:CityName"))
|
||
IF EMPTY(c_ies_form.judet)
|
||
MESSAGEBOX( ;
|
||
"Alegeti judetul clientului.", ;
|
||
48, ;
|
||
"Date incomplete..." ;
|
||
)
|
||
RETURN
|
||
ENDIF
|
||
IF c_ies_form.judet = "B "
|
||
msector = ""
|
||
IF .NOT. "SECTOR" $ ;
|
||
UPPER(c_ies_form.localitate)
|
||
MESSAGEBOX( ;
|
||
"Alegeti un sector valid pentru Bucuresti in adresa clientului.", ;
|
||
48, ;
|
||
"Atentie...")
|
||
RETURN
|
||
ENDIF
|
||
oadresas.lastchild.text = "SECTOR " + ;
|
||
RIGHT(ALLTRIM(c_ies_form.localitate), ;
|
||
1)
|
||
ELSE
|
||
oadresas.lastchild.text = ALLTRIM(c_ies_form.localitate)
|
||
ENDIF
|
||
oadresas.appendchild(oxml.createelement("cbc:CountrySubentity"))
|
||
oadresas.lastchild.text = ALLTRIM(c_ies_form.judet)
|
||
otaras = oadresas.appendchild(oxml.createelement("cac:Country"))
|
||
otaras.appendchild(oxml.createelement("cbc:IdentificationCode"))
|
||
otaras.lastchild.text = IIF( ;
|
||
.NOT. ;
|
||
EMPTY(c_ies_form.tara), ;
|
||
c_ies_form.tara, ;
|
||
"RO")
|
||
IF (EMPTY(c_ies_form.tara) .OR. ;
|
||
c_ies_form.tara = 'RO') .AND. ;
|
||
.NOT. ;
|
||
EMPTY(c_ies_form.cod_fiscal) ;
|
||
.AND. ;
|
||
verifcf(c_ies_form.cod_fiscal)
|
||
otaxes = opartys.appendchild(oxml.createelement("cac:PartyTaxScheme"))
|
||
otaxes.appendchild(oxml.createelement("cbc:CompanyID"))
|
||
otaxes.lastchild.text = "RO" + ;
|
||
getnrfromstring(c_ies_form.cod_fiscal)
|
||
oschemataxes = otaxes.appendchild(oxml.createelement("cac:TaxScheme"))
|
||
oschemataxes.appendchild(oxml.createelement("cbc:ID"))
|
||
oschemataxes.lastchild.text = ;
|
||
"VAT"
|
||
ENDIF
|
||
oformalegalas = opartys.appendchild(oxml.createelement("cac:PartyLegalEntity"))
|
||
oformalegalas.appendchild(oxml.createelement("cbc:RegistrationName"))
|
||
oformalegalas.lastchild.text = ALLTRIM(c_ies_form.den_cli)
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.reg_com)
|
||
oidentificatorformalegalas = ;
|
||
oformalegalas.appendchild(oxml.createelement("cbc:CompanyID"))
|
||
oidentificatorformalegalas.text = ;
|
||
ALLTRIM(c_ies_form.reg_com)
|
||
ENDIF
|
||
mdensoc = ALLTRIM(c_ies_form.den_cli) + ;
|
||
" "
|
||
mprefix = ""
|
||
msufix = ""
|
||
DO CASE
|
||
CASE mdensoc = "S.C. " .OR. ;
|
||
mdensoc = "SC "
|
||
mprefix = "Societate comerciala"
|
||
CASE mdensoc = "P.F. " .OR. ;
|
||
mdensoc = "PF "
|
||
mprefix = "Persoana fizica"
|
||
CASE mdensoc = "P.F.A. " ;
|
||
.OR. mdensoc = "PFA "
|
||
mprefix = "Persoana fizica autorizata"
|
||
CASE mdensoc = "A.F. " .OR. ;
|
||
mdensoc = "AF "
|
||
mprefix = "Asociatie familiala"
|
||
ENDCASE
|
||
DO CASE
|
||
CASE " S.R.L." $ mdensoc ;
|
||
.OR. " SRL " $ mdensoc
|
||
msufix = "Societate cu raspundere limitata"
|
||
CASE " S.A." $ mdensoc .OR. ;
|
||
" SA " $ mdensoc
|
||
msufix = "Societate pe actiuni"
|
||
ENDCASE
|
||
IF .NOT. EMPTY(mprefix)
|
||
oformalegalas.appendchild(oxml.createelement("cbc:CompanyLegalForm"))
|
||
oformalegalas.lastchild.text = ;
|
||
mprefix
|
||
ENDIF
|
||
IF .NOT. EMPTY(c_ies_form.tel) ;
|
||
.OR. .NOT. ;
|
||
EMPTY(c_ies_form.email) .OR. ;
|
||
.NOT. ;
|
||
EMPTY(c_ies_form.delegat)
|
||
ocontacts = opartys.appendchild(oxml.createelement("cac:Contact"))
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.delegat)
|
||
ocontacts.appendchild(oxml.createelement("cbc:Name"))
|
||
ocontacts.lastchild.text = ;
|
||
ALLTRIM(c_ies_form.delegat)
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.tel)
|
||
ocontacts.appendchild(oxml.createelement("cbc:Telephone"))
|
||
ocontacts.lastchild.text = ;
|
||
ALLTRIM(c_ies_form.tel)
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.email)
|
||
ocontacts.appendchild(oxml.createelement("cbc:ElectronicMail"))
|
||
ocontacts.lastchild.text = ;
|
||
ALLTRIM(c_ies_form.email)
|
||
ENDIF
|
||
ENDIF
|
||
IF USED("C_GET_ADRLIV") .AND. ;
|
||
RECCOUNT("C_GET_ADRLIV") > 0
|
||
SELECT c_get_adrliv
|
||
odelivery = oinvoice.appendchild(oxml.createelement("cac:Delivery"))
|
||
odeliverylocation = odelivery.appendchild(oxml.createelement("cac:DeliveryLocation"))
|
||
oadresalivrare = odeliverylocation.appendchild(oxml.createelement("cac:Address"))
|
||
oadresalivrare.appendchild(oxml.createelement("cbc:StreetName"))
|
||
oadresalivrare.lastchild.text = ;
|
||
ALLTRIM(c_get_adrliv.adresa)
|
||
oadresalivrare.appendchild(oxml.createelement("cbc:CityName"))
|
||
IF EMPTY(c_get_adrliv.localitate)
|
||
MESSAGEBOX( ;
|
||
"Alegeti localitatea din adresa de livrare.", ;
|
||
48, ;
|
||
"Atentie...")
|
||
RETURN
|
||
ENDIF
|
||
IF EMPTY(c_get_adrliv.judet)
|
||
MESSAGEBOX( ;
|
||
"Alegeti judetul din adresa de livrare.", ;
|
||
48, ;
|
||
"Atentie...")
|
||
RETURN
|
||
ENDIF
|
||
IF c_get_adrliv.judet = "B "
|
||
msector = ""
|
||
IF .NOT. "SECTOR" $ ;
|
||
UPPER(c_get_adrliv.localitate)
|
||
MESSAGEBOX( ;
|
||
"Alegeti un sector valid pentru Bucuresti, in adresa de livrare.", ;
|
||
48, ;
|
||
"Atentie...")
|
||
RETURN
|
||
ENDIF
|
||
oadresalivrare.lastchild.text = ;
|
||
"SECTOR " + ;
|
||
RIGHT(ALLTRIM(c_get_adrliv.localitate), ;
|
||
1)
|
||
ELSE
|
||
oadresalivrare.lastchild.text = ;
|
||
ALLTRIM(c_get_adrliv.localitate)
|
||
ENDIF
|
||
oadresalivrare.appendchild(oxml.createelement("cbc:CountrySubentity"))
|
||
oadresalivrare.lastchild.text = ;
|
||
"RO-" + ;
|
||
ALLTRIM(c_get_adrliv.judet)
|
||
otaralivrare = oadresalivrare.appendchild(oxml.createelement("cac:Country"))
|
||
otaralivrare.appendchild(oxml.createelement("cbc:IdentificationCode"))
|
||
otaralivrare.lastchild.text = ;
|
||
"RO"
|
||
ENDIF
|
||
SELECT c_ies_form
|
||
IF mliniireducere > 0
|
||
SELECT c_ies_form
|
||
SCAN FOR indice = -1
|
||
oallowancecharge = oinvoice.appendchild(oxml.createelement("cac:AllowanceCharge"))
|
||
oallowancecharge.appendchild(oxml.createelement("cbc:ChargeIndicator"))
|
||
oallowancecharge.lastchild.text = ;
|
||
"false"
|
||
oallowancecharge.appendchild(oxml.createelement("cbc:AllowanceChargeReasonCode"))
|
||
oallowancecharge.lastchild.text = ;
|
||
"95"
|
||
oallowancecharge.appendchild(oxml.createelement("cbc:AllowanceChargeReason"))
|
||
oallowancecharge.lastchild.text = ;
|
||
IIF(c_ies_form.cont = ;
|
||
"667", "Scont", ;
|
||
IIF(c_ies_form.cont = ;
|
||
"709", ;
|
||
"Reducere comerciala", ;
|
||
"Discount"))
|
||
odocallowancecharge = oallowancecharge.appendchild(oxml.createelement("cbc:Amount"))
|
||
odocallowancecharge.setattribute("currencyID", ;
|
||
mmoneda)
|
||
odocallowancecharge.text = ;
|
||
ALLTRIM(STR(ABS(c_ies_form.valoare), ;
|
||
15, 2))
|
||
otaxcategoryallowance = ;
|
||
oallowancecharge.appendchild(oxml.createelement("cac:TaxCategory"))
|
||
otaxcategoryallowance.appendchild(oxml.createelement("cbc:ID"))
|
||
SELECT tip FROM ;
|
||
C_TVA_FACTURA ;
|
||
WHERE protva = ;
|
||
c_ies_form.protva ;
|
||
INTO ARRAY ;
|
||
agettipcota
|
||
otaxcategoryallowance.lastchild.text = ;
|
||
ALLTRIM(agettipcota(1))
|
||
otaxcategoryallowance.appendchild(oxml.createelement("cbc:Percent"))
|
||
otaxcategoryallowance.lastchild.text = ;
|
||
ALLTRIM(STR(c_ies_form.protva, ;
|
||
2, 0))
|
||
otaxschemeallowance = otaxcategoryallowance.appendchild(oxml.createelement("cac:TaxScheme"))
|
||
otaxschemeallowance.appendchild(oxml.createelement("cbc:ID"))
|
||
otaxschemeallowance.lastchild.text = ;
|
||
"VAT"
|
||
ENDSCAN
|
||
ENDIF
|
||
IF maccize > 0
|
||
oallowancecharge = oinvoice.appendchild(oxml.createelement("cac:AllowanceCharge"))
|
||
oallowancecharge.appendchild(oxml.createelement("cbc:ChargeIndicator"))
|
||
oallowancecharge.lastchild.text = ;
|
||
"true"
|
||
oallowancecharge.appendchild(oxml.createelement("cbc:AllowanceChargeReason"))
|
||
oallowancecharge.lastchild.text = ;
|
||
"Acciza"
|
||
odocallowancecharge = oallowancecharge.appendchild(oxml.createelement("cbc:Amount"))
|
||
odocallowancecharge.setattribute("currencyID", ;
|
||
mmoneda)
|
||
odocallowancecharge.text = ALLTRIM(STR(maccize, ;
|
||
15, ;
|
||
2))
|
||
otaxcategorycharge = oallowancecharge.appendchild(oxml.createelement("cac:TaxCategory"))
|
||
otaxcategorycharge.appendchild(oxml.createelement("cbc:ID"))
|
||
otaxcategorycharge.lastchild.text = ;
|
||
"Z"
|
||
otaxcategorycharge.appendchild(oxml.createelement("cbc:Percent"))
|
||
otaxcategorycharge.lastchild.text = ;
|
||
"0"
|
||
otaxschemeallowance = otaxcategorycharge.appendchild(oxml.createelement("cac:TaxScheme"))
|
||
otaxschemeallowance.appendchild(oxml.createelement("cbc:ID"))
|
||
otaxschemeallowance.lastchild.text = ;
|
||
"VAT"
|
||
ENDIF
|
||
IF RECCOUNT("C_TVA_FACTURA") > 0
|
||
otaxtotal = oinvoice.appendchild(oxml.createelement("cac:TaxTotal"))
|
||
mtvatotal = 000000000.00
|
||
IF .NOT. INLIST(mtipfactura, ;
|
||
"U", "H")
|
||
SELECT ROUND(SUM(valoare * ;
|
||
protva / 100), ;
|
||
2) AS tva FROM ;
|
||
C_TVA_FACTURA ;
|
||
GROUP BY protva ;
|
||
INTO CURSOR ;
|
||
C_COTE_T
|
||
SELECT c_cote_t
|
||
SUM (tva) TO mtvatotal
|
||
ELSE
|
||
SUM (tva) TO mtvatotal
|
||
ENDIF
|
||
ototal = otaxtotal.appendchild(oxml.createelement("cbc:TaxAmount"))
|
||
ototal.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototal.text = ALLTRIM(STR(mtvatotal, ;
|
||
15, 2))
|
||
SELECT c_tva_factura
|
||
SET ORDER TO procent
|
||
LOCATE
|
||
SCAN
|
||
otaxablesubtotal = otaxtotal.appendchild(oxml.createelement("cac:TaxSubtotal"))
|
||
osubtotal = otaxablesubtotal.appendchild(oxml.createelement("cbc:TaxableAmount"))
|
||
osubtotal.setattribute("currencyID", ;
|
||
mmoneda)
|
||
osubtotal.text = ALLTRIM(STR(c_tva_factura.valoare, ;
|
||
15, ;
|
||
2))
|
||
osubtotaltaxa = otaxablesubtotal.appendchild(oxml.createelement("cbc:TaxAmount"))
|
||
osubtotaltaxa.setattribute("currencyID", ;
|
||
mmoneda)
|
||
osubtotaltaxa.text = ALLTRIM(STR(c_tva_factura.tva, ;
|
||
15, ;
|
||
2))
|
||
otaxcategorytotals = otaxablesubtotal.appendchild(oxml.createelement("cac:TaxCategory"))
|
||
otaxcategorytotals.appendchild(oxml.createelement("cbc:ID"))
|
||
otaxcategorytotals.lastchild.text = ;
|
||
ALLTRIM(c_tva_factura.tip)
|
||
otaxcategorytotals.appendchild(oxml.createelement("cbc:Percent"))
|
||
otaxcategorytotals.lastchild.text = ;
|
||
ALLTRIM(STR(c_tva_factura.protva, ;
|
||
2, 0))
|
||
IF .NOT. ;
|
||
EMPTY(c_tva_factura.motiv)
|
||
otaxcategorytotals.appendchild(oxml.createelement("cbc:TaxExemptionReasonCode"))
|
||
otaxcategorytotals.lastchild.text = ;
|
||
ALLTRIM(c_tva_factura.motiv)
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_tva_factura.explicatie)
|
||
otaxcategorytotals.appendchild(oxml.createelement("cbc:TaxExemptionReason"))
|
||
otaxcategorytotals.lastchild.text = ;
|
||
ALLTRIM(c_tva_factura.explicatie)
|
||
ENDIF
|
||
otaxschemetotals = otaxcategorytotals.appendchild(oxml.createelement("cac:TaxScheme"))
|
||
otaxschemetotals.appendchild(oxml.createelement("cbc:ID"))
|
||
otaxschemetotals.lastchild.text = ;
|
||
"VAT"
|
||
ENDSCAN
|
||
SELECT c_ies_form
|
||
LOCATE
|
||
IF mmoneda <> "RON"
|
||
otaxtotal = oinvoice.appendchild(oxml.createelement("cac:TaxTotal"))
|
||
ototal = otaxtotal.appendchild(oxml.createelement("cbc:TaxAmount"))
|
||
ototal.setattribute("currencyID", ;
|
||
"RON")
|
||
ototal.text = ALLTRIM(STR(ROUND(mtvatotal * ;
|
||
c_ies_form.curs, ;
|
||
2), 15, ;
|
||
2))
|
||
ENDIF
|
||
ENDIF
|
||
SELECT c_ies_form
|
||
LOCATE
|
||
SUM valoare TO mtotalnet FOR ;
|
||
indice >= 0
|
||
LOCATE
|
||
mtotalnetliniifactura = mtotalnet
|
||
mtotalnet = mtotalnet + ;
|
||
mtotalcharges - ;
|
||
mtotalallowances
|
||
mtotalbrut = mtotalnet + ;
|
||
mtotaltva
|
||
omonetarytotal = oinvoice.appendchild(oxml.createelement("cac:LegalMonetaryTotal"))
|
||
ototalnet = omonetarytotal.appendchild(oxml.createelement("cbc:LineExtensionAmount"))
|
||
ototalnet.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototalnet.text = ALLTRIM(STR(mtotalnetliniifactura, ;
|
||
15, 2))
|
||
ototalnetfaratva = omonetarytotal.appendchild(oxml.createelement("cbc:TaxExclusiveAmount"))
|
||
ototalnetfaratva.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototalnetfaratva.text = ALLTRIM(STR(mtotalnet, ;
|
||
15, 2))
|
||
ototalbrut = omonetarytotal.appendchild(oxml.createelement("cbc:TaxInclusiveAmount"))
|
||
ototalbrut.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototalbrut.text = ALLTRIM(STR(mtotalbrut, ;
|
||
15, 2))
|
||
IF mtotalallowances > 0
|
||
ototaldeduceri = omonetarytotal.appendchild(oxml.createelement("cbc:AllowanceTotalAmount"))
|
||
ototaldeduceri.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototaldeduceri.text = ALLTRIM(STR(mtotalallowances, ;
|
||
15, ;
|
||
2))
|
||
ENDIF
|
||
IF mtotalcharges > 0
|
||
ototaltaxe = omonetarytotal.appendchild(oxml.createelement("cbc:ChargeTotalAmount"))
|
||
ototaltaxe.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototaltaxe.text = ALLTRIM(STR(mtotalcharges, ;
|
||
15, 2))
|
||
ENDIF
|
||
IF mincasat > 0
|
||
ototalincasat = omonetarytotal.appendchild(oxml.createelement("cbc:PrepaidAmount"))
|
||
ototalincasat.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototalincasat.text = ALLTRIM(STR(mincasat, ;
|
||
15, ;
|
||
2))
|
||
ENDIF
|
||
ototalplata = omonetarytotal.appendchild(oxml.createelement("cbc:PayableAmount"))
|
||
ototalplata.setattribute("currencyID", ;
|
||
mmoneda)
|
||
ototalplata.text = ALLTRIM(STR(mtotalbrut - ;
|
||
mincasat, 15, ;
|
||
2))
|
||
SELECT c_ies_form
|
||
SCAN FOR indice = 0
|
||
oinvoiceline = oinvoice.appendchild(oxml.createelement("cac:InvoiceLine"))
|
||
oinvoiceline.appendchild(oxml.createelement("cbc:ID"))
|
||
oinvoiceline.lastchild.text = ;
|
||
ALLTRIM(STR(i, 4, 0))
|
||
IF .NOT. ;
|
||
EMPTY(ALLTRIM(c_ies_form.text_supl))
|
||
oinvoiceline.appendchild(oxml.createelement("cbc:Note"))
|
||
oinvoiceline.lastchild.text = ;
|
||
ALLTRIM(c_ies_form.text_supl)
|
||
ENDIF
|
||
SELECT cod FROM FREETAB\um ;
|
||
WHERE cod_ro = ;
|
||
c_ies_form.um INTO ;
|
||
ARRAY agetumfact
|
||
mum = "H87"
|
||
IF _TALLY > 0 .AND. .NOT. ;
|
||
ISNULL(agetumfact(1))
|
||
mum = ALLTRIM(agetumfact(1))
|
||
ENDIF
|
||
oum = oinvoiceline.appendchild(oxml.createelement("cbc:InvoicedQuantity"))
|
||
oum.setattribute("unitCode", ;
|
||
mum)
|
||
oum.text = ALLTRIM(STR(c_ies_form.cantitate, ;
|
||
15, 3))
|
||
oamount = oinvoiceline.appendchild(oxml.createelement("cbc:LineExtensionAmount"))
|
||
oamount.setattribute("currencyID", ;
|
||
mmoneda)
|
||
oamount.text = ALLTRIM(STR(c_ies_form.valoare, ;
|
||
15, 2))
|
||
SELECT * FROM ;
|
||
C_COMENZI_FACTURA ;
|
||
WHERE id_u = ;
|
||
c_ies_form.id_u ;
|
||
INTO ARRAY ;
|
||
agetcomenzilinie
|
||
IF _TALLY > 0 .AND. .NOT. ;
|
||
ISNULL(agetcomenzilinie(1, ;
|
||
2)) .AND. .NOT. ;
|
||
ISNULL(agetcomenzilinie(1, ;
|
||
3))
|
||
oorderlinereference = oinvoiceline.appendchild(oxml.createelement("cac:OrderLineReference"))
|
||
oorderlinereference.appendchild(oxml.createelement("cbc:LineID"))
|
||
oorderlinereference.lastchild.text = ;
|
||
ALLTRIM(agetcomenzilinie(1, ;
|
||
2)) + "/" + ;
|
||
ALLTRIM(DTOC(agetcomenzilinie(1, ;
|
||
3)))
|
||
ENDIF
|
||
oitem = oinvoiceline.appendchild(oxml.createelement("cac:Item"))
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.is_a)
|
||
oitem.appendchild(oxml.createelement("cbc:Description"))
|
||
oitem.lastchild.text = ALLTRIM(c_ies_form.is_a)
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.denumire)
|
||
oitem.appendchild(oxml.createelement("cbc:Name"))
|
||
oitem.lastchild.text = ALLTRIM(c_ies_form.denumire)
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.cod_art_cl)
|
||
obuyeritem = oitem.appendchild(oxml.createelement("cac:BuyersItemIdentification"))
|
||
obuyeritem.appendchild(oxml.createelement("cbc:ID"))
|
||
obuyeritem.lastchild.text = ;
|
||
c_ies_form.cod_art_cl
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(c_ies_form.cod)
|
||
oselleritem = oitem.appendchild(oxml.createelement("cac:SellersItemIdentification"))
|
||
oselleritem.appendchild(oxml.createelement("cbc:ID"))
|
||
oselleritem.lastchild.text = ;
|
||
ALLTRIM(c_ies_form.cod)
|
||
ENDIF
|
||
IF isi
|
||
SELECT c_get_cbare
|
||
LOCATE FOR cod = ;
|
||
c_ies_form.cod ;
|
||
.AND. ;
|
||
c_get_cbare.cod_bare <> ;
|
||
0
|
||
IF FOUND()
|
||
ostandarditem = oitem.appendchild(oxml.createelement("cac:StandardItemIdentification"))
|
||
oidstandard = ostandarditem.appendchild(oxml.createelement("cbc:ID"))
|
||
oidstandard.setattribute("schemeID", ;
|
||
"0160")
|
||
oidstandard.text = ;
|
||
ALLTRIM(STR(c_get_cbare.cod_bare, ;
|
||
13, 0))
|
||
ENDIF
|
||
IF pcs.is_loturi
|
||
SELECT c_get_cbare
|
||
LOCATE FOR cod = ;
|
||
c_ies_form.cod ;
|
||
.AND. ;
|
||
is_lot = 1
|
||
IF FOUND()
|
||
IF c_ies_form.cantitate >= ;
|
||
0
|
||
IF .NOT. ;
|
||
USED("TMPDESC1")
|
||
getdescarcari(c_ies_form.cod, ;
|
||
c_ies_form.gestiune, ;
|
||
c_id_tip.id_iesire, ;
|
||
0, ;
|
||
1, ;
|
||
.F.)
|
||
ENDIF
|
||
SELECT tmpdesc1
|
||
mexpliesirilot = ;
|
||
""
|
||
SCAN FOR ;
|
||
.NOT. ;
|
||
EMPTY(lot)
|
||
IF pisfb
|
||
SQLEXEC(gnconnhandle, "SELECT garantie,fabricatie,explicatie FROM LOTURI WHERE cod=?TMPDESC1.lot", "C_FB")
|
||
SELECT * FROM C_FB INTO ARRAY agetgarantie
|
||
ELSE
|
||
SELECT garantie, fabricatie, explicatie FROM LOTURI WHERE cod = tmpdesc1.lot INTO ARRAY agetgarantie
|
||
ENDIF
|
||
IF _TALLY > ;
|
||
0
|
||
mexpliesirilot = mexpliesirilot + IIF(EMPTY(mexpliesirilot), "Lot ", "." + " Lot ") + ALLTRIM(tmpdesc1.lot) + IIF( .NOT. EMPTY(agetgarantie(1,1)) .AND. .NOT. ISNULL(agetgarantie(1,1)), " exp. " + DTOC(agetgarantie(1,1)), "") + IIF( .NOT. EMPTY(agetgarantie(1,2)) .AND. .NOT. ISNULL(agetgarantie(1,2)), " fabr. " + DTOC(agetgarantie(1,2)), "")
|
||
ELSE
|
||
mexpliesirilot = IIF(EMPTY(mexpliesirilot), "Lot " + ALLTRIM(tmpdesc1.lot), mexpliesirilot + ", " + ALLTRIM(tmpdesc1.lot))
|
||
ENDIF
|
||
ENDSCAN
|
||
ENDIF
|
||
ENDIF
|
||
IF .NOT. ;
|
||
EMPTY(mexpliesirilot)
|
||
oclassificationlot = ;
|
||
oitem.appendchild(oxml.createelement("cac:CommodityClassification"))
|
||
olot = oclassificationlot.appendchild(oxml.createelement("cbc:ItemClassificationCode"))
|
||
olot.setattribute("listID", ;
|
||
"BB")
|
||
olot.text = IIF(LEN(ALLTRIM(mexpliesirilot)) > ;
|
||
50, ;
|
||
LEFT(ALLTRIM(mexpliesirilot), ;
|
||
50), ;
|
||
ALLTRIM(mexpliesirilot))
|
||
ENDIF
|
||
ENDIF
|
||
SELECT c_get_cbare
|
||
LOCATE FOR cod = ;
|
||
c_ies_form.cod ;
|
||
.AND. ;
|
||
c_get_cbare.cod_bare <> ;
|
||
0
|
||
IF FOUND()
|
||
oclassificationcodbare = ;
|
||
oitem.appendchild(oxml.createelement("cac:CommodityClassification"))
|
||
ocodbare = oclassificationcodbare.appendchild(oxml.createelement("cbc:ItemClassificationCode"))
|
||
ocodbare.setattribute("listID", ;
|
||
"EN")
|
||
ocodbare.text = ALLTRIM(STR(c_get_cbare.cod_bare, ;
|
||
13, ;
|
||
0))
|
||
ENDIF
|
||
SELECT c_get_cbare
|
||
LOCATE FOR cod = ;
|
||
c_ies_form.cod ;
|
||
.AND. .NOT. ;
|
||
EMPTY(c_get_cbare.cod_fe) ;
|
||
.AND. .NOT. ;
|
||
ISNULL(c_get_cbare.cod_fe)
|
||
IF FOUND()
|
||
oclassificationnc = ;
|
||
oitem.appendchild(oxml.createelement("cac:CommodityClassification"))
|
||
oclassificationstandardidnc = ;
|
||
oclassificationnc.appendchild(oxml.createelement("cbc:ItemClassificationCode"))
|
||
oclassificationstandardidnc.setattribute("listID", ;
|
||
"TSP")
|
||
oclassificationstandardidnc.text = ;
|
||
ALLTRIM(c_get_cbare.cod_fe)
|
||
ENDIF
|
||
ENDIF
|
||
oitemtaxcategory = oitem.appendchild(oxml.createelement("cac:ClassifiedTaxCategory"))
|
||
SELECT tip FROM ;
|
||
C_TVA_FACTURA WHERE ;
|
||
protva = ;
|
||
c_ies_form.protva ;
|
||
INTO ARRAY ;
|
||
agettipcota
|
||
oitemtaxcategory.appendchild(oxml.createelement("cbc:ID"))
|
||
oitemtaxcategory.lastchild.text = ;
|
||
ALLTRIM(agettipcota(1))
|
||
oitemtaxcategory.appendchild(oxml.createelement("cbc:Percent"))
|
||
oitemtaxcategory.lastchild.text = ;
|
||
ALLTRIM(STR(c_ies_form.protva, ;
|
||
2, 0))
|
||
oitemtaxscheme = oitemtaxcategory.appendchild(oxml.createelement("cac:TaxScheme"))
|
||
oitemtaxscheme.appendchild(oxml.createelement("cbc:ID"))
|
||
oitemtaxscheme.lastchild.text = ;
|
||
"VAT"
|
||
oitemprice = oinvoiceline.appendchild(oxml.createelement("cac:Price"))
|
||
oitemamount = oitemprice.appendchild(oxml.createelement("cbc:PriceAmount"))
|
||
oitemamount.setattribute("currencyID", ;
|
||
mmoneda)
|
||
oitemamount.text = ALLTRIM(STR(c_ies_form.pret_vanz, ;
|
||
15, 4))
|
||
i = i + 1
|
||
ENDSCAN
|
||
mdencomplet = plcalefacturi + ;
|
||
mlnumefisier + ;
|
||
".xml"
|
||
mdenfisierraspuns = plcalefacturi + ;
|
||
mlnumefisier + ;
|
||
'.txt'
|
||
oxml.save(mdencomplet)
|
||
IF FILE(mdenfisierraspuns)
|
||
DELETE FILE ;
|
||
(mdenfisierraspuns)
|
||
ENDIF
|
||
cfilename = 'FREETAB\dist\Efactura\DUKIntegrator.jar'
|
||
cparams = ' -c FREETAB\dist\Efactura\config -v FACT1 ' + ;
|
||
mdencomplet + ' ' + ;
|
||
mdenfisierraspuns
|
||
shellexecute(0,"open",cfilename, ;
|
||
cparams,"",1)
|
||
WAIT WINDOW TIMEOUT 2 ""
|
||
shellexecute(0,"open", ;
|
||
plcalefacturi,"","", ;
|
||
1)
|
||
IF FILE(mdenfisierraspuns)
|
||
IF FILETOSTR(mdenfisierraspuns) = ;
|
||
"ok"
|
||
MESSAGEBOX( ;
|
||
"Factura este valida. O puteti <20>ncarca prin SPV, la sectiunea 'Factura electronica', cu optiunea de sintaxa XML - UBL sau cu programul 'Declaratii ANAF'.", ;
|
||
64, ;
|
||
"Validare declaratie" ;
|
||
)
|
||
DELETE FILE ;
|
||
(mdenfisierraspuns)
|
||
ELSE
|
||
MODIFY FILE ;
|
||
(mdenfisierraspuns)
|
||
ENDIF
|
||
ENDIF
|
||
ENDPROC
|
||
|
||
|
||
|