#13: formular de facturare unificat - etapa curenta
Squash al branch-ului de lucru plan13-s2. Clase: ofacturare (nucleul formularului unificat), ofacturare_comun, ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de cautare), omodificari. Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie si cota standard de TVA cand articolul nu are cota pe politica. Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte proiecte sunt rezolvate pastrand ambele parti. Loguri de rulare a testelor scoase din versionare; testele raman. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
This commit is contained in:
@@ -1262,6 +1262,10 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cInstitutiePublica._checkbox1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cCodFiscal.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cCodFiscal.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cUtilm.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cUtilm.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cDataoram.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_facturi.cDataoram.Text1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_detalii" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_detalii.cNume_lista_preturi.Header1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="grid_detalii.cNume_lista_preturi.Text1" UniqueID="" Timestamp="" />
|
||||
@@ -1337,6 +1341,7 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
*<DefinedPropArrayMethod>
|
||||
*m: do_editare_factura
|
||||
*m: do_editare_unificata
|
||||
*m: do_listare_cc
|
||||
*m: do_listare_centr
|
||||
*m: do_listare_document
|
||||
@@ -2225,7 +2230,7 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
ADD OBJECT 'grid_facturi' AS _grdrow WITH ;
|
||||
Anchor = 15, ;
|
||||
ColumnCount = 44, ;
|
||||
ColumnCount = 46, ;
|
||||
DeleteMark = .F., ;
|
||||
FontSize = 10, ;
|
||||
HeaderHeight = 36, ;
|
||||
@@ -2543,7 +2548,21 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
Column44.FontSize = 10, ;
|
||||
Column44.Name = "cCodFiscal", ;
|
||||
Column44.ReadOnly = .T., ;
|
||||
Column44.Width = 103
|
||||
Column44.Width = 103, ;
|
||||
Column45.ColumnOrder = 45, ;
|
||||
Column45.ControlSource = "utilm", ;
|
||||
Column45.FontName = "Arial", ;
|
||||
Column45.FontSize = 10, ;
|
||||
Column45.Name = "cUtilm", ;
|
||||
Column45.ReadOnly = .T., ;
|
||||
Column45.Width = 107, ;
|
||||
Column46.ColumnOrder = 46, ;
|
||||
Column46.ControlSource = "dataoram", ;
|
||||
Column46.FontName = "Arial", ;
|
||||
Column46.FontSize = 10, ;
|
||||
Column46.Name = "cDataoram", ;
|
||||
Column46.ReadOnly = .T., ;
|
||||
Column46.Width = 99
|
||||
*< END OBJECT: ClassLib="_grd_base.vcx" BaseClass="grid" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cAdresaFacturare.Header1' AS header WITH ;
|
||||
@@ -2759,6 +2778,26 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
SelectedBackColor = 0,0,255
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cDataoram.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Dataora modificarii", ;
|
||||
FontName = "Arial", ;
|
||||
FontSize = 10, ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cDataoram.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial", ;
|
||||
FontSize = 10, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T., ;
|
||||
SelectedBackColor = 0,0,255
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cDataoras.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Dataora stergerii", ;
|
||||
@@ -3381,6 +3420,26 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
SelectedBackColor = 0,0,255
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cUtilm.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Operator modificare", ;
|
||||
FontName = "Arial", ;
|
||||
FontSize = 10, ;
|
||||
Name = "Header1"
|
||||
*< END OBJECT: BaseClass="header" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cUtilm.Text1' AS textbox WITH ;
|
||||
BackColor = 255,255,255, ;
|
||||
BorderStyle = 0, ;
|
||||
FontName = "Arial", ;
|
||||
FontSize = 10, ;
|
||||
ForeColor = 0,0,0, ;
|
||||
Margin = 0, ;
|
||||
Name = "Text1", ;
|
||||
ReadOnly = .T., ;
|
||||
SelectedBackColor = 0,0,255
|
||||
*< END OBJECT: BaseClass="textbox" />
|
||||
|
||||
ADD OBJECT 'grid_facturi.cUtils.Header1' AS header WITH ;
|
||||
Alignment = 2, ;
|
||||
Caption = "Operator stergere", ;
|
||||
@@ -3679,11 +3738,26 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
#DEFINE T41 41 && 'RETUR TRANSFER'
|
||||
#DEFINE T_6 -6 && 'RETUR TRANSFER DIN GESTIUNE VALORICA'
|
||||
|
||||
LOCAL loFactura
|
||||
LOCAL loFactura, lcSql, lnFacturi
|
||||
|
||||
IF !This.IsCopy(crsFacturi.tip)
|
||||
RETURN
|
||||
ENDIF
|
||||
* proforma deja facturata: se avertizeaza, nu se blocheaza
|
||||
IF Nvl(crsFacturi.eproforma,0) = 1
|
||||
lcSql = [SELECT COUNT(*) AS nr FROM vanzari_coresp WHERE sters = 0 AND tip = 4 ] + ;
|
||||
[AND id_vanzare_aviz = ] + Alltrim(Str(crsFacturi.id_vanzare,20,0))
|
||||
IF goExecutor.oExecute(lcSql,[crsprofact]) >= 0 AND Used('crsprofact')
|
||||
lnFacturi = crsprofact.nr
|
||||
Use In (Select('crsprofact'))
|
||||
IF lnFacturi > 0
|
||||
IF amessagebox("Din aceasta proforma s-au emis deja " + Alltrim(Str(lnFacturi)) + ;
|
||||
" facturi. Doriti sa continuati?",4+32,"Confirmare") <> 6
|
||||
RETURN
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
* Copiez orice document, dar il tratez ca pe un caz simplu (factura din lista de preturi, aviz din lista de preturi, transfer simplu)
|
||||
* De exemplu, factura din contract sau din comanda, nu are sens sa fie copiata, dar o tratez ca pe o factura din lista de preturi
|
||||
@@ -3871,6 +3945,96 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE do_editare_unificata
|
||||
If !This.lactiv3
|
||||
Return
|
||||
Endif
|
||||
|
||||
If Reccount('crsfacturi') = 0
|
||||
amessagebox("Nu exista inregistrari pentru editare!",0+48,"Atentie")
|
||||
Return
|
||||
Endif
|
||||
|
||||
If glLunaInchisa
|
||||
Return
|
||||
Endif
|
||||
|
||||
Local lnSters, llEProforma, lnTipDoc, loForm, pnDiscountRon, pnDiscountValuta
|
||||
Private pnAn, pnLuna, lnCod, lnIdFact, lnIdVanzare, poDate, poSnapshotEditare
|
||||
Store 0 To pnAn, pnLuna, lnCod, lnIdFact, lnIdVanzare
|
||||
Select crsfacturi
|
||||
lnIdVanzare = id_vanzare
|
||||
lnCod = cod
|
||||
pnAn = Year(data_act)
|
||||
pnLuna = Month(data_act)
|
||||
lnSters = sters
|
||||
lnIdFact = id_fact
|
||||
llEProforma = (eproforma = 1)
|
||||
lnTipDoc = tip
|
||||
|
||||
If lnSters = 1
|
||||
amessagebox("Acest document este deja sters!",0+48,"Atentie")
|
||||
Return
|
||||
Endif
|
||||
|
||||
If llEProforma
|
||||
amessagebox("Proformele nu pot fi editate pe aceasta cale!",0+48,"Atentie")
|
||||
Return
|
||||
Endif
|
||||
|
||||
If Inlist(lnTipDoc, 44, 45, 46, 51)
|
||||
amessagebox("Documentele acestui modul nu pot fi editate pe aceasta cale!",0+48,"Atentie")
|
||||
Return
|
||||
Endif
|
||||
|
||||
If (pnAn * 12) + pnLuna <> (gnAn * 12) + gnLuna
|
||||
amessagebox('Nu puteti edita decat inregistrari din luna curenta!',0,'Atentie!')
|
||||
Return
|
||||
Endif
|
||||
|
||||
If ReferinteDocumenteNota(pnAn, pnLuna, lnCod) && odocumente.prg
|
||||
amessagebox("Documentul are referinte (incasari/plati). Nu poate fi editat.", 0+48,"Editare")
|
||||
Return
|
||||
Endif
|
||||
|
||||
If EsteInEFactura(lnIdFact) && ofacturare_editare.prg
|
||||
amessagebox("Documentul a fost trimis in eFactura. Nu poate fi editat.", 0+48,"Editare")
|
||||
Return
|
||||
Endif
|
||||
|
||||
If DocumentAreUrmasi(lnIdVanzare) && ofacturare_editare.prg
|
||||
amessagebox("Documentul are facturi sau avize emise pe lantul lui. Nu poate fi editat.", 0+48,"Editare")
|
||||
Return
|
||||
Endif
|
||||
|
||||
poDate = IncarcaAntetFacturaEditare(lnIdVanzare, @pnDiscountRon, @pnDiscountValuta) && ofacturare_editare.prg
|
||||
If Vartype(poDate) <> 'O'
|
||||
Return
|
||||
Endif
|
||||
|
||||
IncarcaLiniiFacturaEditare(poDate, lnIdVanzare) && ofacturare_editare.prg
|
||||
|
||||
update_jtva_coloane([JV], [jtva_coloane_temp]) && updateserver.prg
|
||||
update_saft_taxtable() && updateserver.prg
|
||||
If Used('jtva_coloane')
|
||||
Use In jtva_coloane
|
||||
Endif
|
||||
If poDate.tva_incasare = 0
|
||||
Select * From jtva_coloane_temp Where Isnull(id_jtva_ex) And !'RORTC'$Upper(coloana_jv) Into Cursor jtva_coloane
|
||||
Else
|
||||
Select * From jtva_coloane_temp Where Isnull(id_jtva_neex) And !'RORTC'$Upper(coloana_jv) Into Cursor jtva_coloane
|
||||
Endif
|
||||
|
||||
loForm = Createobject('frm_facturare_articole2')
|
||||
loForm.ndiscfactron = pnDiscountRon
|
||||
loForm.ndiscfactval = pnDiscountValuta
|
||||
loForm.do_calculeaza_totaluri()
|
||||
*!* S8b: instantaneul se ia AICI - primul punct unde discountul e deja corect si formularul
|
||||
*!* inca nu a fost aratat; ramane in viata cat formularul e deschis (Show() e modal)
|
||||
poSnapshotEditare = CreeazaSnapshotEditare(poDate, loForm.ndiscfactron, loForm.ndiscfactval, lnIdVanzare, lnIdFact, lnCod, pnAn, pnLuna)
|
||||
loForm.Show()
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE do_listare
|
||||
*!* 26.11.2019
|
||||
*!* marius.mutu
|
||||
@@ -4929,12 +5093,14 @@ DEFINE CLASS frm_facturi AS _frmbase OF "_frm_base.vcx"
|
||||
|
||||
PROCEDURE inainte_de_do_modifica
|
||||
Local lnOptiune
|
||||
lnOptiune = xmenu('Modificare \<date factura;Editare \<factura (note, rulaje, articole)')
|
||||
lnOptiune = xmenu('Modificare \<date factura;Editare \<factura (note, rulaje, articole);Editare \<unificata (articole)')
|
||||
Do Case
|
||||
Case lnOptiune = 1
|
||||
This.do_modifica()
|
||||
Case lnOptiune = 2
|
||||
This.do_editare_factura()
|
||||
Case lnOptiune = 3
|
||||
This.do_editare_unificata()
|
||||
Endcase
|
||||
ENDPROC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user