*!* 12.06.2014 *!* marius.mutu *!* listeaza_bon_fiscal, listeaza_bon_fiscal_det - adaugat suma achitata prin CARD POS. suma achitata anterior se considera numerar *!* 24.08.2015 *!* marius.mutu *!* normare_comanda - vizualizare doar comenzi active (nearhivate) *!* 31.08.2015 *!* marius.mutu *!* generare_com, factureaza_comanda - salvare id partener care a referit comanda *!* 27.01.2016 *!* marius.mutu *!* factureaza_deviz - stornare avans se preiau proc_tvav si id_jtva_coloana din avansurile anterioare, in loc de cele standard din luna curenta *!* 29.01.2016 *!* marius.mutu *!* factureaza_deviz - listare cumulata articol REPARATII AUTO in loc de MANOPERA si MATERIALE *!* 23.11.2017 *!* marius.mutu *!* factureaza_deviz - tratare factura cu valoare 0 materiale si 0 manopera. se inregistreaza in scopul listarii. *!* 12.04.2021 *!* marius.mutu *!* generare_com + numarul de zile termen de executie comanda service *!* 08.07.2024 *!* marius.mutu *!* actualizare listare factura + lot C(20) *!* 18.10.2024 *!* marius.mutu *!* factureaza_deviz > pack_facturare.initializeaza_date_Factura + poDate.tip_saft ******************************************* * PROCEDURE generare_com( ) * Data/ora : 01/05/05, 08:58:28 * autor : liana.macinic * descriere: ****** PARAMETER BLOCK ************** * Parametri : 0 * ******************************************* Procedure generare_com() Parameters tnTipFactura Private pnTipFactura, poGeneratorNumere poGeneratorNumere = Createobject('oGeneratorNumere') Local lcMesaj, lnTermenZile If Empty(tnTipFactura) pnTipFactura=0 && 0 - daca vine din meniul de generare comenzi, 1 - ITP, 2 - spalare auto, 3 - diverse lcMesaj="Nu puteti genera comenzi,deoarece aceasta luna este inchisa!" Else pnTipFactura=tnTipFactura lcMesaj="Nu puteti emite facturi,deoarece aceasta luna este inchisa!" Endif If glLunaInchisa amessagebox(lcMesaj,0+48,"Luna inchisa") Return Endif Private pntipcom,pnNrCom pntipcom = 1 If pnTipFactura=0 ofrmtipcom = Createobject('frm_alegtipcom',@pntipcom) *!* ofrmtipcom.ogtipcom.controlsource = "pntipcom" ofrmtipcom.Show(1) If buton = 2 Return Endif Endif *!* modificare v 2.0.28 *!* lcSql = [select ] + gcS + [.getdev_comanda() as nrcom from dual] *!* lcCursor = [crsNrCom] *!* lnSucces = goExecutor.oExecute(lcSql,lcCursor) *!* If lnSucces < 0 *!* amessagebox(goExecutor.cEroare,0+16,"Eroare") *!* Return *!* Endif *!* Select crsNrCom *!* *!* modificare 31.10 *!* Scatter Name ocomlistare *!* *!* *!* pnNrCom = Round(crsNrCom.nrcom,0) Private poGeneratorNumere poGeneratorNumere = Createobject('oGeneratorNumere') ocomlistare = Createobject("Custom") lnRezultat = poGeneratorNumere.creeaza_cursor_serii(20) pnNrCom = poGeneratorNumere.aloca_numar(20,Null) *!* modificare v 2.0.28 ^ Do update_asigurator In update_devize.prg Do update_inspector In update_devize.prg Private ofrmGencom,pcNr,pnIdInsp,pnIdAsig,pnIdMC,pnIdClie,pnIdOrdl,pnid_masina,pnKmInt,pnOreFct,pcNrDosar,pcSirIDOperatiiClient,pcObservatii,pcDefectiuni,pnIdPartRef Store '' To pcNr,pcNrDosar,pcSirIDOperatiiClient, pcObservatii,pcDefectiuni Store 0 To pnIdInsp,pnIdAsig,pnIdMC,pnIdClie,pnIdOrdl,pnid_masina,pnKmInt,pnOreFct,pdTermen, pnIdPartRef lnTermenZile = IIF(TYPE('gnTermenZileService') = 'N', m.gnTermenZileService, 10) && termenul implicit, daca nu exista optiune este de 10 zile pdTermen = DATE() + m.lnTermenZile && termenul de pe comanda este data curenta + optiunea TermenZile pcNr = Alltrim(Str(pnNrCom)) Do Case Case pntipcom = 2 pcNr = 'G' + Alltrim(Str(pnNrCom)) Case pntipcom = 3 pcNr = 'R' + Alltrim(Str(pnNrCom)) Case pntipcom = 4 pcNr = 'P' + Alltrim(Str(pnNrCom)) Case pntipcom = 6 pcNr = 'PR' + Alltrim(Str(pnNrCom)) CASE pntipcom = 7 pcNr = 'C' + Alltrim(Str(pnNrCom)) Endcase Private pniesire pniesire=0 If pnTipFactura=0 *!* modificare 31.10 *!* modificare v 2.0.9 =update_norme([1=2]) && 1=2 > modificare v 2.0.18 *!* modificare v 2.0.9 ^ ofrmGencom = Createobject('frm_gencom',1,@pcNr,@pnIdInsp,@pnIdAsig,@pnIdMC,@pnIdClie,@pnid_masina,@pnKmInt,@pnOreFct,@pdTermen,@pcNrDosar,,,,@pcObservatii,@pcDefectiuni) ofrmGencom.Show(1) If pniesire!=1 *!* modificare v 2.0.28 poGeneratorNumere.dezaloca_numar(20) Release poGeneratorNumere *!* modificare v 2.0.28 ^ Return Endif *!* modificare v 2.0.28 poGeneratorNumere.verifica_numar(20,Val(Substr(pcNr,Iif(pntipcom=6,3,Iif(pntipcom=1,1,2)),At([/],pcNr,1)-Iif(pntipcom=6,3,Iif(pntipcom=1,1,2))))) Release poGeneratorNumere *!* modificare v 2.0.28 ^ pnIdOrdl = 0 lcTermen = Iif(Empty(pdTermen) Or Isnull(pdTermen),'NULL',[']+Dtoc(pdTermen)+[']) lcSql = [begin pack_auto.dev_adauga_lucrare(?gcS,?gnAn,?gnLuna,?gnIdUtil,?pcNr,?pnIdInsp,] + ; [?pnIdAsig,?pcNrDosar,?pnIdMC,?pnKmInt,?pnOreFct, to_date(]+lcTermen+[,'DD/MM/YYYY'),?pntipcom,?pcSirIDOperatiiClient, ?pcObservatii, ?pcDefectiuni, ?pnIdPartRef, ?@pnIdOrdl); end;] *!* lcSql = [begin pack_devize.dev_adauga_lucrare('] + gcS +[',] + Alltrim(Str(gnAn)) + [,] + Alltrim(Str(gnLuna))+; *!* [, ]+ Alltrim(Str(gnIdUtil)) + [,'] + Alltrim(pcNr) + [',]+ Alltrim(Str(pnIdInsp)) + [,]; *!* +Alltrim(Str(pnIdAsig))+[,]+Alltrim(Str(pnIdMC)) + [,] + Alltrim(Str(pnKmInt)) + [,to_date(]; *!* +lcTermen+[,'DD/MM/YYYY'),?pntipcom,?@pnIdOrdl); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,'Eroare') Return Endif *!* * Do listare_comanda With pntipcom && 22.06.2021 DO listare_precomanda WITH m.pnIdOrdl Else *!* modificare 31.10 *!* nu se fac verificari ptr. km la bord pentru facturile de itp,de spalare si diverse *!* modificare v 2.0.9 =update_norme([1=2]) *!* modificare v 2.0.9 ^ ofrmGencom = Createobject('frm_gencom',2,@pcNr,@pnIdInsp,@pnIdAsig,@pnIdMC,@pnIdClie,@pnid_masina,@pnKmInt,@pnOreFct,@pdTermen,@pcNrDosar,,,,@pcObservatii,@pcDefectiuni) With ofrmGencom .lverificari=.F. .clb_kmint.teXT_SIMPLU1.ReadOnly=.T. .clb_termen.teXT_SIMPLU1.ReadOnly=.T. Endwith ofrmGencom.Show(1) If pniesire!=1 *!* modificare v 2.0.28 poGeneratorNumere.dezaloca_numar(20) Release poGeneratorNumere *!* modificare v 2.0.28 ^ Return Endif *!* *!* modificare v 2.0.28 poGeneratorNumere.verifica_numar(20,Val(Substr(pcNr,Iif(pntipcom=6,3,Iif(pntipcom=1,1,2)),At([/],pcNr,1)-Iif(pntipcom=6,3,Iif(pntipcom=1,1,2))))) Do factureaza_comanda With pnTipFactura Release poGeneratorNumere *!* Do factureaza_comanda With pnTipFactura *!* modificare v 2.0.28 ^ Endif Release poGeneratorNumere Endproc **********************sfarsit procedura generare_com******************* ******************************************* * PROCEDURE normare_comanda( ) * Data/ora : 01/10/05, 11:50:13 * autor : liana.macinic * descriere: ****** PARAMETER BLOCK ************** * Parametri : 0 * ******************************************* Procedure normare_comanda( ) If glLunaInchisa amessagebox("Nu puteti norma comenzi,deoarece aceasta luna este inchisa!",0+48,"Luna inchisa") Return Endif Private pcValoare1,pcValoare2,pcIntre,pnCriteriu, pnCriteriu2, pcFiltruOra, pcFiltruVFP Private pcselect,pcschema,pcfiltru,pcorder,pocomenzi,llAfiseaza Store '' To pocomenzi pcValoare1 = "" pcValoare2 = "" pnCriteriu = 1 pnCriteriu2 = 1 pcIntre = "" pcFiltruOra = "" pcFiltruVFP = "" Do Form frm_filtru_text With "nrord","Nr. comanda",pnCriteriu,pnCriteriu2 To pcFiltruOra buton=2 Private poordl,pcschema1,pcselect1 Store '' To poordl *!* pcschema1=['DATAI d,NRORD c(30),VALIDAT n(1),NUME c(50),NRINMAT c(10),ID_LUCRARE n(10),ID_ORDL n(10)'] *!* pcselect1=['select datai,nrord,validat,nume,nrinmat,id_lucrare,id_ordl from ] + gcS + [.dev_vordl where 1=2'] pcschema1=[''] pcselect1=['select * from ] + gcS + [.auto_normare_comenzi a where 1=2'] pcorder1=[datai] If !Empty(pcFiltruOra) pcFiltru1 = gcCondLuna + [ and a.inchis_fortat = 0 and a.validat=0 ] + pcFiltruOra Else pcFiltru1 = [1=2] Endif llAfiseaza = .F. gencursor('poordl','cliord',pcselect1,pcFiltru1,pcschema1,pcorder1,llAfiseaza) poordl.ca_baza1.afisare() ovs=Createobject('FRM_NOM_COM') If !Empty(pcFiltruOra) ovs.gcliord.SetAll('DynamicFontItalic','IIF(validat=1,.T.,.F.)','Column') ovs.gcliord.SetAll('DynamicForeColor','IIF(validat=1,RGB(128,128,128),RGB(0,0,0))','Column') *!* modificare v 2.0.17 With ovs.ck_nrord .cValoare1 = pcValoare1 .cValoare2 = pcValoare2 .criteriu = pnCriteriu .criteriu2 = pnCriteriu2 .cIntre = pcIntre .filtru = pcFiltruOra .filtru_vfp = pcFiltruVFP .Value = 1 Endwith *!* modificare v 2.0.17 ^ Endif ovs.Show(1) Endproc **********************sfarsit procedura normare_comanda******************* ******************************************* * PROCEDURE dec2rgb( ) * Data/ora : 02/11/05, 16:29:34 * autor : liana.macinic * descriere: ****** PARAMETER BLOCK ************** * Parametri : 0 * ******************************************* Procedure dec2rgb Lparameters lnValue lTalk=Iif(Set('TALK')='ON',.T.,.F.) Set Talk Off * Determine the hexadecimal equivalent of the decimal parameter passed lcHex = "" lnFactor = 24 && set up factor value one exponent greater than used For lnPos = 6 To 1 Step -1 lnFactor = lnFactor - 4 && decrement factorial lnExp = 2 ^ lnFactor && extrapolate next least power of two For lnOrd = 15 To 1 Step -1 If lnValue < lnExp && no value greater than current one, lcHex = lcHex + "0" && so store a zero in this position Exit && go back for the next value Endif If lnValue >= lnExp * lnOrd && is value greater than or equal to? * find the matching hex value from its ordinal position lcHex = lcHex + Substr('123456789ABCDEF', lnOrd, 1) Exit Endif Endfor lnValue = lnValue % lnExp && leave remainder of exponential division Endfor * reverse the order of the individual color indicators lcHex = Right(lcHex, 2) + Substr(lcHex, 3, 2) + Left(lcHex, 2) * convert the pairs into decimal values lnPick = 2 && offset to determine which pair to convert lcRGB = "" && start of string delineator * parse each color indicator and convert to decimal For lnColor = 1 To 3 lcHue = Substr(lcHex, (lnPick * lnColor) - 1, 2) && pull out color lnMSB = Asc(Left(lcHue, 1)) && "Most Significant Bit" lnLSB = Asc(Right(lcHue, 1)) && "Least Significant Bit" * subtract appropriate value from each to get decimal equivalent lnMSB = lnMSB - Iif(lnMSB > 57, 55, 48) lnLSB = lnLSB - Iif(lnLSB > 57, 55, 48) * then add decimals together lcRGB = lcRGB + Transform( lnMSB * 16 + lnLSB, '999') + ", " Endfor lcRGB = Left(lcRGB, Len(lcRGB) - 2) Return Alltrim(lcRGB) Endproc **********************sfarsit procedura dec2rgb******************* *------------------------------inceput procedura calc_analitic----------------------------------------- * PROCEDURE calc_analitic( tcCont, pcAct, ) * Data : 03/15/05, 14:52:49 * autor : liana.macinic * descriere: ****** PARAMETER BLOCK ************** * Parameters : 3 * Parameter 1: * Parameter 2: pcRul * Parameter 3: * ******************************************* Procedure calc_analitic Parameters tcCont,pcAct,pcRul Private pcCont,pcAct,pcRul,pParamP,pParamS Store 0 To pParamP,pParamS lcAlias = Alias() pcCont = Alltrim(tcCont) lcSel = [SELECT * from ] + gcS + [.config_analitice WHERE cont = ?pcCont] lcCursor = 'crs_cfg_ana' lnSucces = goExecutor.oExecute(lcSel,lcCursor) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Endif If lnSucces > 0 If Reccount('crs_cfg_ana')=0 Use In crs_cfg_ana lnSucces = -1 Endif Endif If lnSucces > 0 Select crs_cfg_ana Scatter Name ocfg lcCampPrefix = Nvl(Alltrim(ocfg.camp_leg_prefix),'') lcCampSufix = Nvl(Alltrim(ocfg.camp_leg_sufix),'') If !Empty(lcCampPrefix) If Type('&pcRul..'+lcCampPrefix) # 'U' pParamP = &pcRul..&lcCampPrefix Else If Type('&pcAct..'+lcCampPrefix) # 'U' pParamP = &pcAct..&lcCampPrefix Endif Endif Endif If !Empty(lcCampSufix) If Type('&pcRul..'+lcCampSufix) # 'U' pParamS = &pcRul..&lcCampSufix Else If Type('&pcAct..'+lcCampSufix) # 'U' pParamS = &pcAct..&lcCampSufix Endif Endif Endif lcSel = [{call fconturi_analitice(?gcs,?pcCont,0,?pParamP,?pParamS)}] lcCursor = 'crs_analitice' lnSucces = goExecutor.oExecute(lcSel,lcCursor) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Endif Endif && iau Primul Simbol Analitic din Tabel - ordonat pt ca e selectat cu Distinct If lnSucces > 0 Select crs_analitice Go Top lcAnalitic = Alltrim(Left(acont,4)) Endif && verificare analiticului cu Planul de Conturi If lnSucces > 0 lcSel = [SELECT cont,acont from ] + gcS + [.vplcont_analitic WHERE cont = ?pcCont and acont = ?lcAnalitic and an = ?gnAn ] lcCursor = 'crs_verific' lnSucces = goExecutor.oExecute(lcSel,lcCursor) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Endif Endif If lnSucces > 0 If Reccount('crs_verific')=0 lnSucces = -1 Endif Endif If Used('crs_cfg_ana') Use In crs_cfg_ana Endif If Used('crs_verific') Use In crs_verific Endif If Used('crs_analitice') Use In crs_analitice Endif If Used('crs_verific') Use In crs_verific Endif If lnSucces < 0 lcAnalitic = '' Endif Select (lcAlias) Return lcAnalitic Endproc *------------------------------sfarsit procedura calc_analitic----------------------------------------- *------------------------------inceput procedura factureaza_deviz ----------------------------------------- * PROCEDURE factureaza_deviz( ) * Data : 03/16/05, 14:07:08 * autor : liana.macinic * descriere: facturare ****** PARAMETER BLOCK ************** * Parameters : 0 * ******************************************* Procedure factureaza_comanda Lparameters tnTipFactura Local lcTip,lnIdSet,lnTipFactura,lnTipListare Local ofrmincasare As 'frm_incasare_avans' Local ofrmnormsect As 'frm_aleg_operatie' Local lcSql, lcTermen, lcTipJ, llTaxareInversa, lnLungime, lnProcTVA, lnSucces, loJtva *:Global oCautare, oactan, ocomanda, oincasare, otva, pnid_norme, pnore, pntimpn, poactan *:Global taValori[1], x Private pnid_norma,pnid_sectie,pcsectie,pcdenop,pnProcTva,pnTipIncasare,pnIdJtvaColoana,pnIdTva Private pniesire,pnid_mecanic,pcnume,pocomenzi Private pcselect,pcschema,pcfiltru,pcorder,llAfiseaza Private pnIdOrdl Store "" To oCautare,pocomenzi Store 1 To pnTipIncasare lnTipFactura=tnTipFactura pnProcTva = 0 pnIdTva = 0 pnIdJtvaColoana = 0 optiuni_firma() && reinitializare optiuni firma Do Case Case lnTipFactura = 1 lcTip = 'ITP' lnIdSet = 31003 pnid_sectie=Nvl(gnid_sectie_itp,0) If Empty(gnid_norme_itp) Or Isnull(gnid_norme_itp) pnid_norme=0 =ccnorme() Else pnid_norme=gnid_norme_itp =ccnorme('NORMA',pnid_norme) Endif Case lnTipFactura = 2 lcTip = 'SPALARE AUTO' lnIdSet = 31004 pnid_sectie=Nvl(gnid_sectie_spalare,0) If Empty(gnid_norme_spalare) Or Isnull(gnid_norme_spalare) pnid_norme=0 =ccnorme() Else pnid_norme=gnid_norme_spalare =ccnorme('NORMA',pnid_norme) Endif Case lnTipFactura = 3 lcTip = 'DIVERSE' lnIdSet = 31005 pnid_sectie=0 pnid_norme=0 =ccnorme() Endcase pcdenop="" pnid_mecanic=0 pcsectie="" pntimpn=1 pnore=1 Do ccsectii In update_devize.prg =ccmecanici() *!* If lnTipFactura = 1 *!* pnid_norma = gnId_itp *!* ofrmnormsect=Createobject('frm_aleg_sectie') *!* ofrmnormsect.Show(1) *!* Else ****************************************** && alegere denumire operatie + sectie + mecanic + timpn + ore pniesire=0 ofrmnormsect=Createobject('frm_aleg_operatie') ofrmnormsect.Show(1) *!* pnid_norma = gnid_spalare *!* ofrmnormsect=Createobject('frm_aleg_sectie') *!* ofrmnormsect.Show(1) *!* Else *!* Endif If pniesire !=1 Return Endif ****************************************** ****************************************** *!* 27.07.2007 *!* marius.mutu *!* lnNumarFactura = aloca_numar_fact() && adaugare lucrare SQLSetprop(gnHandle,"Transactions",2) pnIdOrdl = 0 *!* modificare v 2.0.14 *!* lcSql = [begin pack_devize.dev_adauga_lucrare(?gcS,?gnAn,?gnLuna,?gnIdUtil,?pcNr,?pnIdInsp,] + ; *!* [?pnIdAsig,?pcNrDosar,?pnIdMC,?pnKmInt,to_date(NULL,'DD/MM/YYYY'),?pntipcom,?@pnIdOrdl); end;] lcTermen = Iif(Empty(pdTermen) Or Isnull(pdTermen),'NULL',[']+Dtoc(pdTermen)+[']) lcSql = [begin pack_auto.dev_adauga_lucrare(?gcS,?gnAn,?gnLuna,?gnIdUtil,?pcNr,?pnIdInsp,] + ; [?pnIdAsig,?pcNrDosar,?pnIdMC,?pnKmInt,?pnOreFct,to_date(]+lcTermen+[,'DD/MM/YYYY'),?pntipcom,?pcSirIDOperatiiClient, ?pcObservatii, ?pcDefectiuni, ?pnIdPartRef, ?@pnIdOrdl); end;] *!* modificare v 2.0.14 ^ lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 Sqlrollback(gnHandle) SQLSetprop(gnHandle,"Transactions",1) amessagebox(goExecutor.cEroare,0+16,'Eroare') Return Endif ****************************************** ****************************************** If Used('crscomenzi') Use In crsComenzi Endif pcschema=[''] pcselect=['select * from ] + gcS + [.auto_ordl_facturare where 1=2'] pcfiltru = [ id_ordl = ] + Alltrim(Str(pnIdOrdl)) pcorder=[datai,nrord] llAfiseaza=.F. gencursor('pocomenzi','crscomenzi',pcselect,pcfiltru,pcschema,pcorder,llAfiseaza) pocomenzi.ca_baza1.afisare() Select crsComenzi Scatter Name ocomanda Use In crsComenzi ****************************************** ****************************************** && date factura lnLungime=4 Dimension taValori[lnLungime,3] taValori[1,1]="poAct.v4111" taValori[1,2]=Alltrim(ocomanda.nume) taValori[1,3]=.T. taValori[2,1]="poAct.nrord" taValori[2,2]=Alltrim(ocomanda.nrord) taValori[2,3]=.T. taValori[3,1]="poAct.id_lucrare" taValori[3,2]=Alltrim(Str(ocomanda.id_lucrare)) taValori[3,3]=.T. taValori[4,1]="poAct.id_vv4111" taValori[4,2]=Alltrim(Str(ocomanda.id_partener)) taValori[4,3]=.T. *!* taValori[5,1]="poAct.nract" *!* taValori[5,2]=Alltrim(Str(lnNumarFactura)) *!* taValori[5,3]=.F. If !Empty(pnid_sectie) Dimension taValori[lnLungime+2,3] taValori[lnLungime+1,1]="poAct.id_sectie" taValori[lnLungime+1,2]=Alltrim(Str(pnid_sectie)) taValori[lnLungime+1,3]=.T. taValori[lnLungime+2,1]="poAct.sectie" taValori[lnLungime+2,2]=Alltrim(pcsectie) taValori[lnLungime+2,3]=.T. lnLungime = lnLungime+2 Endif Dimension taValori[lnLungime+2,3] taValori[lnLungime+1,1]="poAct.id_fdoc" *!* modificare v 2.0.28 *!* taValori[lnLungime+1,2]=Alltrim(Str(gnid_fdoc_factura)) taValori[lnLungime+1,2] = Iif(Empty(Nvl(pnIdAsig,0)),Alltrim(Str(gnid_fdoc_fact)),Alltrim(Str(gnid_fdoc_factasig))) *!* modificare v 2.0.28 ^ taValori[lnLungime+1,3]=.T. taValori[lnLungime+2,1]="poAct.fdoc" taValori[lnLungime+2,2]='FACTURA' taValori[lnLungime+2,3]=.T. lnLungime=lnLungime+2 lans(lnIdSet,.F.,.T.,@taValori) If buton=2 Do deschid_actc Sqlrollback(gnHandle) SQLSetprop(gnHandle,"Transactions",1) *!* Do dezaloca_numar_fact In oserii_numere.prg poGeneratorNumere.dezaloca_numere() Return Endif *!* SELECT actactan *!* GO TOP *!* lnNumarFacturaAct = nract *!* IF lnNumarFacturaAct <> lnNumarFactura *!* DO dezaloca_numar_fact In oserii_numere.prg *!* ENDIF ****************************************** ****************************************** && introducere suma factura + incasare Use In (SELECT('v_nom_casa')) lcSql=[select id_part,nume from vcoresp_tip_part where tip_partener IN ('BANCA LEI', 'CASA LEI')] lnSucces=goExecutor.oExecute(lcSql,'v_nom_casa') If lnSucces < 0 Sqlrollback(gnHandle) SQLSetprop(gnHandle,"Transactions",1) *!* Do dezaloca_numar_fact In oserii_numere.prg poGeneratorNumere.dezaloca_numere() amessagebox(goExecutor.cEroare,0+16,'Eroare') Return Endif local lnTvaIncasare, lcContTVA Select actactan Calculate Max(tva_incasare) To lnTvaIncasare && 0/1 lnProcTVA = GetProcTvaStandard() && 21 lcTipJ = "JV" llTaxareInversa = .F. pnIdJtvaColoana = ProcentTva2IdJtva(m.lnProcTVA, m.lcTipJ, m.llTaxareInversa, m.lnTvaIncasare) loJtva = GeJtvaColoana(m.pnIdJtvaColoana, m.lnTVAIncasare, m.lcTipJ) pnIdTva = loJtva.id_tva pnProcTva = 1 + m.lnProcTVA / 100 lcContTVA = IIF(lnTvaIncasare = 1, [4428], [4427]) Private pnTotalfTva,pnTotalTva,pnTotalcTva,pnNrChit,pnIdCasa,pcCasa, pcSerieChit,pnPretCuTva, pnPOS Store 0 To pnTotalfTva,pnTotalTva,pnTotalcTva,pnIdCasa,pnNrChit,pnPretCuTva, pnPOS Store [] To pcSerieChit, pcCasa && modificare v 2.0.28 pniesire=1 *!* modificare v 2.0.42 : IIF(lnTipFactura=3,1,2) in loc de 1 ofrmincasare=Createobject('frm_incasare_avans',lnTvaIncasare,IIF(lnTipFactura=3,1,2)) ofrmincasare.lb_titlu_alb_b121.Caption=Upper(Alltrim("FACTURA "+lcTip)) ofrmincasare.Show(1) If pniesire!=1 Sqlrollback(gnHandle) SQLSetprop(gnHandle,"Transactions",1) *!* Do dezaloca_numar_fact In oserii_numere.prg poGeneratorNumere.dezaloca_numere() Return Endif Use In v_nom_casa ****************************************** Select actactan Replace suma With pnTotalfTva,explicatia With "MANOPERA "+lcTip,id_jtva_coloana With pnIdJtvaColoana,proc_tva With pnProcTva For Alltrim(scc)='704' Or Alltrim(scc)='419' Replace suma With pnTotalTva,explicatia With "TVA MANOPERA "+lcTip,id_sectie With pnid_sectie,sectie With pcsectie,id_jtva_coloana With pnIdTva,proc_tva With pnProcTva For scc=lcContTVA *!* Replace proc_tva With m.ctvam,explicatia With "MANOPERA "+lcTip For Alltrim(scd)='411' *!* modificare v 2.1.0 : am adaugat Alltrim(scd) = lcContTva Replace proc_tva With pnProcTva For Alltrim(scd)='4111' or alltrim(scd) = lcContTva If pnTipIncasare>1 *!* If !Empty(pnNrChit) *!* incasare = 5311 Select actactan Go Top Scatter Name oactan Append Blank Gather Name oactan Fields Except id_jtva_coloana,proc_tva && Fields Except suma, ascc, scc, id_partc Replace nr_nota With Recno(),partc With partd, id_partc With id_partd, suma With pnTotalcTva Replace scc With Alltrim(scd), ascc With ascd, scd With '5311', ascd With '', perecheC With nract,nract With pnNrChit Replace id_partd With pnIdCasa,partd With m.pcCasa,neimpozab With 0, explicatia With 'INCASARE '+lcTip, id_factd With id_fact, datascad With {} Do Case Case pnTipIncasare=2 Replace id_fdoc With gnid_fdoc_bonfiscal,fdoc With 'BON FISCAL' Case pnTipIncasare=3 Replace id_fdoc With gnid_fdoc_chitanta,fdoc With 'CHITANTA' && modificare v 2.0.29 : am inlocuit gnid_fdoc_incasare Endcase *!* modificare v 2.1.0 If lnTvaIncasare = 1 local lnTotalTvaNeex Select actactan calculate sum(suma) for scc = lcContTva to lnTotalTvaNeex Locate For scc = lcContTVA If Found() Scatter Name otva Locate For scd = '5311' If Found() Scatter Name oincasare Append Blank Gather Name oincasare Fields Except id_partc,id_partd,partc,partd,scc,scd,id_fact,pereched,perechec,id_jtva_coloana,suma Replace suma with lnTotalTvaNeex,scd With '4428',scc With '4427',id_fact With -5,; perechec With otva.nract,id_jtva_coloana With getIdTva(pnIdTva,0),proc_tva with otva.proc_tva Endif Endif release lnTotalTvaNeex Endif *!* modificare v 2.1.0 ^ IF m.pnTipIncasare = 2 AND m.pnPOS = 1 SELECT actactan Locate For scd = '5311' If Found() REPLACE explicatia4 WITH partd && numele bancii REPLACE scd WITH '5125', id_partd WITH id_partc, partd WITH partc ENDIF ENDIF Endif Select actactan Scan Scatter Name poactan If Type('poActan.cont') = 'U' x = AddProperty(poactan,'cont',poactan.scc) Endif poactan.ascc = calc_analitic(poactan.scc,'poActan','poActan') Select actactan Replace ascc With poactan.ascc Release poactan Select actactan Scatter Name poactan If Type('poActan.cont') = 'U' x = AddProperty(poactan,'cont',poactan.scd) Endif poactan.ascd = calc_analitic(poactan.scd,'poActan','poActan') Select actactan Replace ascd With poactan.ascd Endscan ****************************************** *!* modificare 09.07 *!* AddProperty(ocomanda,'delegat','') *!* AddProperty(ocomanda,'eliberatde','') *!* AddProperty(ocomanda,'bi','') *!* AddProperty(ocomanda,'nrinmat_exp',ocomanda.nrinmat) *!* ofrmdelegat=Createobject("frm_delegat_factura") *!* ofrmdelegat.nidpartener=ocomanda.id_partener *!* ofrmdelegat.cclient=ocomanda.nume *!* ofrmdelegat.cnrinmat_exp=ocomanda.nrinmat_exp *!* ofrmdelegat.Show(1) ****************************************** Private buton buton=1 Select actactan Replace all tva_incasare with lnTvaIncasare && modificare v 2.1.0 Go Top *!* modificare v 2.0.17 *!* Do Form verificare With .T. If !verificare_note_contabile('actactan', .T.,.T., .F.) Do Form verificare With .T. Endif *!* modificare v 2.0.17 ^ If buton=2 Sqlrollback(gnHandle) SQLSetprop(gnHandle,"Transactions",1) *!* Do dezaloca_numar_fact In oserii_numere.prg poGeneratorNumere.dezaloca_numere() Return Endif lcSql = [begin pack_auto.dev_adauga_oper_fact(?gcS,?pnIdOrdl,?pnid_sectie,?pnid_norme,?pnTotalFTva,?pntimpn,?pnore,]+; [?gnIdUtil,?pnid_mecanic); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 Sqlrollback(gnHandle) SQLSetprop(gnHandle,"Transactions",1) *!* Do dezaloca_numar_fact In oserii_numere.prg poGeneratorNumere.dezaloca_numere() amessagebox(goExecutor.cEroare,0+16,'Eroare') Return Endif *!* modificare v 2.0.28 *!* Select actactan *!* Do oscrie_in_fisiere *!* *!* Sqlrollback(gnHandle) *!* Sqlcommit(gnHandle) *!* SQLSetprop(gnHandle,"Transactions",1) *!* amessagebox("Factura a fost inregistrata!",0+64,"Confirmare facturare") *!* modificare v 2.0.28 ^ ****************************************** && listari *!* DO listare_precomanda WITH pnIdOrdl *!* modificare v 2.0.28 *!* Do listare_FACTURA With ocomanda.id_partener,'actactan',ocomanda.nrord,ocomanda.nrinmat,Iif(lnTipFactura=2,lnTipFactura,3),0,0,0,0,0,0,pcdenop,lnTipFactura In oproceduri_listari *!* modificare v 2.0.35 *!* If factureaza_deviz(ocomanda.id_lucrare,ocomanda.nrord,ocomanda.nrinmat,pcdenop) *!* modificare v 2.0.41 : am adaugat Alltrim(Str(ocomanda.id_lucrare)) If factureaza_deviz(ocomanda.id_lucrare,ocomanda.nrord,ocomanda.nrinmat,pcdenop,,,,,,,ALLTRIM(STR(pnIdOrdl)),Alltrim(Str(ocomanda.id_lucrare))) *!* modificare v 2.0.35 ^ Sqlcommit(gnHandle) Else poGeneratorNumere.dezaloca_numere() Sqlrollback(gnHandle) Endif SQLSetprop(gnHandle,"Transactions",1) *!* modificare v 2.0.28 ^ Release ocomanda *!* toClient : id-ul de client *!* tcCursor : Alias'ul cursorului *!* tnTipfact : 1 - finala, 2 - spalare , 3 - restul *!* tnProcDiscM,tnProcDiscN,tnProcDiscM,tnDiscountN,tnDiscountM,tnDiscountTvaM,tnDiscountTvaN,tcdenop Endproc *------------------------------sfarsit procedura factureaza----------------------------------------- ****************************************************************************************************************************** Procedure factureaza_deviz Lparameters tnIdComanda,tcNrOrd,tcNrInmat,tcDenop,tnMultiple,tnDiscountM,tnDiscountN,tnProcDiscM,tnProcDiscN,tnIdOrdl,tcSirIdOrdl,tcSirIdLucrare,tnPretCuTva *!* Parameters tnIdClient,tcCursor,tcSirNrord,tcNrInmat,tnTipfact,tnProcDiscM,tnProcDiscN,tnDiscountM,tnDiscountN,tnDiscountTvaM,tnDiscountTvaN,tcdenop,tnTipFactura Local lnProcTvav,lnIdJTvaColoana,lnIdSet,llScris,ltDataOra,lnPretCuTva LOCAL llArticolCumulat, llFacturaZero, lnTaxCode lnProcTvav = 0 lnIdJTvaColoana = Null lnTaxCode = NULL lnIdSet = 0 lnDiscountM = Iif(Empty(tnDiscountM),0,tnDiscountM) lnDiscountN = Iif(Empty(tnDiscountN),0,tnDiscountN) lnProcDiscM = Iif(Empty(tnProcDiscM),0,tnProcDiscM) lnProcDiscN = Iif(Empty(tnProcDiscN),0,tnProcDiscN) lnMultiple = Iif(Empty(tnMultiple),0,tnMultiple) lcDenop = Iif(Empty(tcDenop),[],Alltrim(Upper(tcDenop))) lnPretCuTva = IIF(EMPTY(tnPretCuTva),0,tnPretCuTva) && modificare v 2.0.41 lcCursorDeviz = [crsdeviz] && modificare v 2.0.41 llFacturaZero = .F. If Used('crsvanztemp') Use In crsvanztemp Endif If Used('crsfactura') Use In crsfactura Endif If Used(lcCursorDeviz) Use In (lcCursorDeviz) Endif creeaza_facturacrs([crsfactura]) *!* modificare v 2.0.41 *!* Create Cursor (lcCursorDeviz)(denumire c(100),explicatie c(240),cante N(20,4),pretv N(20,4),proc_tvav N(7,3),discunitar N(20,4),id_jtva_coloana N(10),; *!* pretvval N(20,4),id_articol N(10),um c(10) Null,serie c(10) Null Default Null,codmat c(50) Null Default Null,Pret N(7,3),pretd N(7,3),; *!* id_valuta N(10) Null Default Null) CREATE CURSOR (lcCursorDeviz)(id_vanzare_det n(10) DEFAULT RECNO(),id_articol N(10),explicatie c(240),denumire c(100),; lot C(20) NULL DEFAULT null, serie c(10) NULL DEFAULT null,codmatf c(50) NULL DEFAULT null,codmat c(50) NULL DEFAULT null,; codbare c(50) NULL DEFAULT null,id_jtva_coloana N(10),ID_JTVA_COLOANA_EX N(10) null,taxcode N(6) null, pret_achizitie N(20,4) DEFAULT 0,cantitate N(20,4),; proc_Tvav N(7,3),um c(10) null,pret_cu_tva N(1) DEFAULT 0,pret N(20,4),; pret_val N(20,4) DEFAULT 0,discount_unitar N(20,4),discount_unitar_val N(20,4) DEFAULT 0,; id_vanzare_set N(10) NULL DEFAULT null,id_gestiune N(10) NULL DEFAULT null,id_ctr N(20) NULL DEFAULT null,; numar_contract c(10) NULL DEFAULT null,id_valuta N(10) DEFAULT 0,tip_valuta N(1) DEFAULT 0,; CURS N(10,4) DEFAULT 0,multiplicator n(1) DEFAULT 1,nume_val c(50) DEFAULT " ") *!* modificare v 2.0.41 ^ Select actactan Locate For proc_tva <> 0 If Found() lnProcTvav = proc_tva lnIdJTvaColoana = id_jtva_coloana lnTaxCode = taxcode ENDIF * Verific daca factura are toate sumele 0. Daca are toate sumele 0, inregistrez totusi factura in vanzari, in scopul listarii. Select actactan LOCATE FOR suma <> 0 llFacturaZero = !FOUND() Sum suma For Alltrim(scd) = '4111' And Alltrim(scc) = '707' And Left(Alltrim(explicatia),3) = "MAT" To lnMaterialeFTva Sum suma For Alltrim(scd) = '4111' And Alltrim(scc) = '704' And Left(Alltrim(explicatia),3) = "MAN" To lnManoperaFTva Sum suma For Alltrim(explicatia)='STORNARE AVANS' And !Inlist(Alltrim(scc),'4427','4428') To lnStornareAvansFTva Sum suma For Alltrim(scd) = '4111' And Alltrim(scc) = Iif(gnAvans419=1,[419],[707]) And Like([AVANS*],Upper(Alltrim(explicatia))) To lnAvansFTva *!* modificare v 2.0.41 Sum suma For Alltrim(scd) = '4111' And Like([AVANS*],Upper(Alltrim(explicatia))) To lnAvansCTva Sum suma For Alltrim(scd) = '4111' AND (Left(Alltrim(explicatia),3) = "MAT" OR Left(Alltrim(explicatia),7) = "TVA MAT") To lnMaterialeCTva *!* modificare v 2.1.12 : am pus (-1)*SIGN(...)*ABS(suma) in loc de suma SUM (-1)*SIGN(lnMaterialeFTVA)*ABS(suma) FOR LEFT(ALLTRIM(explicatia),12) = "DISCOUNT MAT" TO lnDiscountNCTva SUM (-1)*SIGN(lnManoperaFTva)*ABS(suma) FOR LEFT(ALLTRIM(explicatia),12) = "DISCOUNT MAN" TO lnDiscountMCTva *!* modificare v 2.0.41 ^ *!* modificare v 2.0.42 Sum suma For Alltrim(scd) = '4111' And (Left(Alltrim(explicatia),3) = "MAN" OR Left(Alltrim(explicatia),7) = "TVA MAN") To lnManoperaCTva *!* modificare v 2.0.42 ^ Locate For id_set <> 0 If Found() lnIdSet = id_set Endif Private poDate poDate = Createobject("oDateFactura",lnIdSet,-12) *!* modificare ROAAUTO v 2.1.0 : tva_incasare Select Distinct dataireg,id_fdoc,dataact,datascad,serie_act,nract,id_partd As id_part,nume_val,id_valuta,id_lucrare,tva_incasare ; From actactan ; WHERE Alltrim(scd) = '4111' ; Into Cursor crstemp *!* modificare v 2.0.41 *!* If lnAvansFTva <> 0 *!* Insert Into crsdeviz(denumire,cante,pretv,proc_tvav,discunitar,id_jtva_coloana,pretvval,id_articol,Pret,pretd) ; *!* values("AVANS",1,lnAvansFTva,lnProcTvav,0,lnIdJTvaColoana,0,-10002,0,0) IF (lnAvansFTva<>0 AND lnPretCuTva = 0) OR (lnAvansCTva<>0 AND lnPretCuTva = 1) *!* Insert Into (lcCursorDeviz)(denumire,cante,pretv,proc_tvav,discunitar,id_jtva_coloana,pretvval,id_articol,Pret,pretd,cu_tva) ; *!* values("AVANS",1,IIF(lnAvansPretCTva=1,lnAvansCTva,lnAvansFTva),lnProcTvav,0,lnIdJTvaColoana,0,-10002,0,0,lnAvansPretCTva) Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,pret,discount_unitar,pret_cu_tva) ; values(-100005,"AVANS","",1,"",lnIdJTvaColoana,lnProcTvav,lnTaxCode,IIF(lnPretCuTva=1,lnAvansCTva,lnAvansFTva),0,lnPretCuTva) *!* modificare v 2.0.41 ^ Endif *!* modificare v 2.0.41 *!* If lnMaterialeFTva <> 0 *!* Insert Into (lcCursorDeviz)(denumire,cante,pretv,proc_tvav,discunitar,id_jtva_coloana,pretvval,id_articol,Pret,pretd) ; *!* values ("MATERIALE",1,lnMaterialeFTva,lnProcTvav,ABS(lnDiscountN),lnIdJTvaColoana,0,-10001,0,0) IF (lnMaterialeFTva<>0 AND !glAutoBonDet) OR (lnMaterialeCTva <> 0 AND glAutoBonDet) OR m.llFacturaZero *!* modificare v 2.1.12 : am pus SIGN(lnMaterialeFTVA) pentru ca discountul trebuie sa aiba acelasi semn ca totalul de la materiale Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,pret,discount_unitar,pret_cu_tva) ; values (-100003,"MATERIALE","",1,"",lnIdJTvaColoana,lnProcTvav,lnTaxCode,IIF(glAutoBonDet,lnMaterialeCTva,lnMaterialeFTva),; SIGN(lnMaterialeFTva)*IIF(glAutoBonDet,ABS(lnDiscountNCTva),ABS(lnDiscountN)),IIF(glAutoBonDet,1,0)) *!* modificare v 2.0.41 ^ Endif *!* modificare v 2.0.42 *!* If lnManoperaFTva <> 0 *!* *!* modificare v 2.0.41 *!* *!* Insert Into (lcCursorDeviz)(denumire,cante,pretv,proc_tvav,discunitar,id_jtva_coloana,pretvval,id_articol,Pret,pretd,explicatie) ; *!* *!* values(Iif(lnIdSet=31003,"INSPECTIE TEHNICA PERIODICA",Iif(lnIdSet=31004,"SPALARE AUTO","MANOPERA")),1,lnManoperaFTva,lnProcTvav,ABS(lnDiscountM),lnIdJTvaColoana,0,Iif(lnIdSet=31003,-10004,Iif(lnIdSet=31004,-10005,-10000)),0,0,Iif(lnIdSet=31005,lcDenop,[])) *!* Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,pret,discount_unitar) ; *!* values(Iif(lnIdSet=31003,-100007,Iif(lnIdSet=31004,-100008,-100000)),; *!* Iif(lnIdSet=31003,"INSPECTIE TEHNICA PERIODICA",Iif(lnIdSet=31004,"SPALARE AUTO","MANOPERA")),; *!* Iif(lnIdSet=31005,lcDenop,[]),1,"",; *!* lnIdJTvaColoana,lnProcTvav,lnManoperaFTva,IIF(glAutoBonDet,0,ABS(lnDiscountM))) IF (lnManoperaFTva <> 0 AND !INLIST(lnIdSet,31003,31004)) OR m.llFacturaZero *!* modificare v 2.1.12 : am pus SIGN(lnManoperaFTva) pentru ca discountul trebuie sa aiba acelasi semn ca totalul de la manopera Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,pret,discount_unitar) ; values(-100000,"MANOPERA",Iif(lnIdSet=31005,lcDenop,[]),1,"",; lnIdJTvaColoana,lnProcTvav,lnTaxCode,lnManoperaFTva,IIF(glAutoBonDet,0,SIGN(lnManoperaFTva)*ABS(lnDiscountM))) *!* modificare v 2.0.42 ^ If glAutoBonDet AND lnDiscountMCTva <> 0 *!* modificare v 2.1.12 : am pus SIGN(lnManoperaFTva) pentru ca discountul trebuie sa aiba acelasi semn ca totalul de la manopera Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,Pret,pret_cu_tva) ; values(-100001,"DISCOUNT MANOPERA","Discount "+ALLTRIM(STR(lnProcDiscM,5,2))+" %",1,"",lnIdJTvaColoana,lnProcTvav,lnTaxCode,(-1)*SIGN(lnManoperaFTva)*Abs(lnDiscountMCTva),1) Endif *!* modificare v 2.0.41 ^ Endif *!* modificare v 2.0.42 If (m.lnManoperaCTva <> 0 And Inlist(lnIdSet,31003,31004)) Insert Into (lcCursorDeviz)(id_articol,denumire,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,Pret,pret_cu_tva) ; values(Iif(lnIdSet=31003,-100007,-100008),; Iif(lnIdSet=31003,"INSPECTIE TEHNICA PERIODICA","SPALARE AUTO"),1,"",; lnIdJTvaColoana,lnProcTvav,lnTaxcode,lnManoperaCTva,1) Endif *!* modificare v 2.0.42 ^ *** Cumulez MATERIALE + MANOPERA pentru optiunea REPARATII AUTO (in loc de materiale + manopera) *** doar in cazul in care nu doresc detaliat materialele pe bonul fiscal si pe factura, fara facturi ITP, spalare auto llArticolCumulat = .F. IF !m.glAutoBonDet AND !Inlist(lnIdSet,31003,31004) AND TYPE('gnAUTOIdArticolReparatii') = 'N' AND !EMPTY(NVL(m.gnAUTOIdArticolReparatii, 0)) PRIVATE pcArticolReparatii pcArticolReparatii = '' lnSucces = goExecutor.oSelect2Value('select denumire from nom_articole where id_articol = ?gnAUTOIdArticolReparatii',@pcArticolReparatii) IF lnSucces < 0 aMESSAGEBOX(goExecutor.cEroare, 0+48,_screen.Caption) ENDIF IF EMPTY(m.pcArticolReparatii) pcArticolReparatii = 'REPARATII AUTO' ENDIF SELECT m.gnAUTOIdArticolReparatii as id_articol, m.pcArticolReparatii as denumire, MAX(explicatie) as explicatie, ; 1 as cantitate, '' as um, id_jtva_coloana, proc_Tvav, taxcode, SUM(pret) as pret, SUM(discount_unitar) as discount_unitar, pret_cu_tva ; FROM (lcCursorDeviz) ; WHERE INLIST(id_articol,-100003, -100000, -100002, -100001) ; GROUP BY id_jtva_coloana, proc_Tvav, taxcode, pret_cu_tva ; INTO CURSOR crsArtCumulat DELETE FROM (lcCursorDeviz) WHERE INLIST(id_articol,-100003, -100000, -100002, -100001) Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode, pret,discount_unitar,pret_cu_tva) ; SELECT id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,pret,discount_unitar,pret_cu_tva ; FROM crsArtCumulat llArticolCumulat = .T. USE IN (SELECT('crsArtCumulat')) ENDIF IF lnStornareAvansFTva <> 0 *!* modificare v 2.0.41 *!* Insert Into (lcCursorDeviz)(denumire,cante,pretv,proc_tvav,discunitar,id_jtva_coloana,pretvval,id_articol,Pret,pretd) ; *!* values("STORNARE AVANS",1,lnStornareAvansFTva,lnProcTvav,0,lnIdJTvaColoana,0,-10003,0,0) Local loStornare lcSql = [{call pack_auto.citeste_sume_stornare(']+tcSirIdLucrare+[',',')}] lcCursorStornare = [crsstornari] If goExecutor.oExecuta(lcSql,lcCursorStornare) Select (lcCursorStornare) Scan Scatter Name loStornare Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,Pret,discount_unitar,pret_cu_tva) ; values(-100006,"STORNARE AVANS","",1,"",loStornare.id_jtva_coloana, loStornare.proc_tvav,loStornare.taxcode,loStornare.Pret,0,loStornare.pret_cu_tva) Select (lcCursorStornare) Endscan Endif Use In (lcCursorStornare) Release loStornare *!* modificare v 2.0.41 ^ Endif If Used('crsalteserv') *!* modificare v 2.0.41 *!* Insert Into (lcCursorDeviz)(denumire,um,cante,pretv,proc_tvav,discunitar,id_jtva_coloana,pretvval,id_articol,Pret,pretd) ; *!* Select denumire,um,cantitate,pretftva,lnProcTvav,0,lnIdJTvaColoana,0,id_articol,0,0 From crsalteserv Where !Deleted() Insert Into (lcCursorDeviz)(id_articol,denumire,explicatie,cantitate,um,id_jtva_coloana,proc_Tvav,taxcode,pret,discount_unitar) ; Select id_articol,denumire,"",cantitate,um,CAST(lnIdJTvaColoana as N(6) null) as id_jtva_coloana,CAST(lnProcTvav as N(7,2) null) as proc_tvav,CAST(lnTaxCode as N(6) null) as taxcode,pretftva,0 From crsalteserv Where !Deleted() *!* modificare v 2.0.41 ^ Endif * In xml eFactura nu este permis pret unitar negativ. Cantitate negativa si pret pozitiv SELECT (m.lcCursorDeviz) SCAN FOR pret < 0 REPLACE cantitate WITH -cantitate, pret WITH -pret, discount_unitar WITH discount_unitar ENDSCAN Select crstemp poDate.dataireg = dataireg poDate.id_fdoc = id_fdoc poDate.dataact = dataact poDate.datascad = datascad poDate.nract = nract poDate.serie_act = Alltrim(serie_act) poDate.id_client = id_part poDate.nume_valuta = nume_val poDate.id_valuta = id_valuta poDate.id_lucrare = id_lucrare poDate.zi_curs = dataact poDate.id_ordl = IIF(EMPTY(NVL(tnIdOrdl,0)),NULL,tnIdOrdl) && modificare v 2.0.33 poDate.tva_incasare = tva_incasare && modificare v 2.1.0 *!* poDate.id_sectie = id_sectie Use In crstemp *!* ofrmdelegat=Createobject("frm_delegat_factura") *!* ofrmdelegat.nidpartener = poDate.id_client *!* ofrmdelegat.cclient = poDate.nume_client *!* ofrmdelegat.cnrinmat_exp = tcNrInmat && poDate.nrinmat_del *!* ofrmdelegat.Show(1) *!* Release ofrmdelegat Private ofrmdatesupl ltDataOra = Get_Ora() * Daca initializez vanzari.tip_saft cu cod 751 (factura in scop informativ) in loc de 380 (factura initiala) * pentru facturile incasate cu bon fiscal, initializez cu tip 751 ca sa nu apara duplicate in decontul TVA precompletat IF TYPE('gnEFactura_tip_saft_bf') = 'N' AND !EMPTY(NVL(m.gnEFactura_tip_saft_bf, 0)) IF pnTipIncasare = 2 && incasare bon fiscal poDate.tip_saft = m.gnEFactura_tip_saft_bf && 751/380 ENDIF ENDIF poDate.dataora_exp = ltDataOra ofrmdatesupl = Createobject("frm_alte_date") ofrmdatesupl.Show(1) Release ofrmdatesupl If gnButon = 2 lnSucces = -1 llScris = .F. Else Select actactan Locate For Alltrim(scd) = '5311' Do Case Case Found() And pnTipIncasare=2 && bon fiscal poDate.ntip_incasare = 2 poDate.nr_incasare = actactan.nract poDate.incasat = actactan.suma Case Found() And pnTipIncasare=3 && chitanta poDate.ntip_incasare = 11 poDate.nr_incasare = actactan.nract poDate.serie_chit = actactan.serie_act poDate.incasat = actactan.suma Otherwise poDate.ntip_incasare = 0 ENDCASE SELECT actactan LOCATE For Alltrim(scd) = '5125' && efecte de incasat IF Found() And m.pnTipIncasare=2 AND m.pnPos = 1 && bon fiscal incasat prin CARD POS poDate.ntip_incasare = 2 poDate.nr_incasare = actactan.nract poDate.incasatCARD = actactan.suma ENDIF *!* modificare v 2.0.35 : am adaugat STRTRAN(tcNrOrd,[,],[, ]) in loc de tcNrOrd Do Case *!* modificare v 2.0.43 Case (lnAvansFTva<>0 And lnPretCuTva = 0) Or (lnAvansCTva<>0 And lnPretCuTva = 1) ; OR (lnStornareAvansFTva <> 0 And lnManoperaFTva = 0 And lnMaterialeFTva = 0) poDate.text_aditional = [LA ]+Iif(lnMultiple=0,[COMANDA ],[COMENZILE ])+STRTRAN(tcNrOrd,[,],[, ]) + ; IIF(!Empty(poDate.text_aditional),Chr(13)+Chr(10)+poDate.text_aditional,[]) *!* *!* modificare v 2.0.41 *!* *!* Case lnAvansFTva <> 0 *!* Case (lnAvansFTva<>0 And lnPretCuTva = 0) Or (lnAvansCTva<>0 And lnPretCuTva = 1) *!* Update (lcCursorDeviz) Set explicatie = [LA ]+Iif(lnMultiple=0,[COMANDA ],[COMENZILE ])+STRTRAN(tcNrOrd,[,],[, ]) Where id_articol = -100005 *!* *!* modificare v 2.0.41 ^ *!* Case lnStornareAvansFTva <> 0 And lnManoperaFTva = 0 And lnMaterialeFTva = 0 *!* Update (lcCursorDeviz) Set explicatie = [LA ]+Iif(lnMultiple=0,[COMANDA ],[COMENZILE ])+STRTRAN(tcNrOrd,[,],[, ]) Where id_articol = -100006 *!* modificare v 2.0.43 ^ Otherwise Do Case Case (!Between(lnIdSet,31003,31005) And lnManoperaFTva <> 0 And lnMaterialeFTva <> 0) OR m.llFacturaZero lcExplicatie = [MANOPERA SI MATERIALE ] Case !Between(lnIdSet,31003,31005) And lnManoperaFTva <> 0 lcExplicatie = [MANOPERA ] Case !Between(lnIdSet,31003,31005) And lnMaterialeFTva <> 0 lcExplicatie = [MATERIALE ] Otherwise lcExplicatie = [] Endcase IF m.llArticolCumulat && REPARATII AUTO in loc DE MANOPERA + MATERIALE poDate.text_aditional = Iif(lnMultiple=0,[COMANDA/DEVIZ ],[COMENZI/DEVIZE ])+STRTRAN(tcNrOrd,[,],[, ]) + ; IIF(!Empty(poDate.text_aditional),Chr(13)+Chr(10)+poDate.text_aditional,[]) ELSE *!* modificare v 2.0.41 : am adaugat Between(lnIdSet,31003,31005) If !Empty(lcExplicatie) OR Between(lnIdSet,31003,31005) poDate.text_aditional = lcExplicatie + [CF. ]+Iif(lnMultiple=0,[COMENZII/DEVIZULUI ],[COMENZILOR/DEVIZELOR ])+STRTRAN(tcNrOrd,[,],[, ]) + ; IIF(!Empty(poDate.text_aditional),Chr(13)+Chr(10)+poDate.text_aditional,[]) ENDIF ENDIF Endcase *!* modificare v 2.0.41 *!* Insert Into ([crsfactura]) (id_temp,id_articol,denumire,explicatie,cantitate,cu_tva,pretftva,pretctva,; *!* valftva,valtva,valctva,discountftva,discountctva,valdiscountftva,; *!* valdiscounttva, valdiscountctva, valdiminuatftva, valdiminuattva, valdiminuatctva, proc_tvav,id_jtva_coloana,um,; *!* vpretftva,vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva,vvaldiminuatctva,gestionabil) ; *!* Select Recno() As id_temp,id_articol,denumire,explicatie, 1 As cantitate,cu_tva,; *!* Round(pretv,gnPc) As pretftva,; *!* Round(pretv,gnPc) + Round(Round(pretv,gnPc) * (proc_tvav-1),gnPc) As pretctva,; *!* Round(Round(pretv,gnPc)*cante,gnPc) As valftva,; *!* ROUND(Round(pretv*cante,gnPc)*(proc_tvav-1),gnPc) As valtva, ; *!* Round(Round(pretv,gnPc)*cante,gnPc) + Round(Round(pretv*cante,gnPc)*(proc_tvav-1),gnPc) As valctva, ; *!* ROUND(discunitar,gnPc) As discountftva,; *!* ROUND(discunitar,gnPc)+Round(Round(discunitar,gnPc)*(proc_tvav-1),gnPc) As discountctva,; *!* Round(Round(discunitar,gnPc)*cante,gnPc) As valdiscountftva, ; *!* ROUND(Round(discunitar*cante,gnPc)*(proc_tvav-1),gnPc) As valdiscounttva, ; *!* Round(Round(discunitar,gnPc)*cante,gnPc) + Round(Round(discunitar*cante,gnPc)*(proc_tvav-1),gnPc) As valdiscountctva,; *!* Round(Round(pretv-discunitar,gnPc)*cante,gnPc) As valdiminuatftva,; *!* ROUND(Round((pretv-discunitar)*cante,gnPc)*(proc_tvav-1),gnPc) As valdiminuattva,; *!* ROUND(Round(Round(pretv-discunitar,gnPc)*cante,gnPc)*proc_tvav,gnPc) As valdiminuatctva,; *!* proc_tvav,id_jtva_coloana, Nvl(um,Space(50)) As um, ; *!* Round(pretvval,gnPVal) As vpretftva,; *!* ROUND(Round(pretvval,gnPVal)*cante,gnPVal) As vvalftva,; *!* ROUND(Round(Round(pretvval,gnPVal)*cante,gnPVal)*(proc_tvav-1),gnPVal) As vvaltva,; *!* 0 As vdiscountftva,0 As vvaldiscountftva,0 As vvaldiscounttva,; *!* Round(Round(pretvval-0,gnPc)*cante,gnPc) As vvaldiminuatftva,; *!* ROUND(Round((pretvval-0)*cante,gnPc)*(proc_tvav-1),gnPc) As vvaldiminuattva,; *!* ROUND(Round(Round(pretvval-0,gnPc)*cante,gnPc)*proc_tvav,gnPc) As vvaldiminuatctva,; *!* 0 As gestionabil From (lcCursorDeviz) Where cante <> 0 prelucreaza_facturacrs(lcCursorDeviz,[crsfactura],lnProcTvav,0,0) *!* modificare v 2.0.41 ^ Create Cursor crsvanztemp(id_articol N(20),explicatie c(240),Pret N(20,4),proc_tvav N(7,3),id_jtva_coloana N(10),taxcode N(6) NULL,cantitate N(20,4),discount_unitar N(20,4),; id_gestiune N(20),Cont c(4),pret_cu_tva N(1),serie c(100),id_valuta N(10),codmat c(50),Curs N(20,6),multiplicator N(10),pret_achizitie N(20,4),; pretd N(20,4),id_valuta_d N(10)) *!* modificare v 2.0.41 *!* Insert Into crsvanztemp(id_articol,explicatie,Pret,proc_tvav,id_jtva_coloana,cantitate,discount_unitar,pret_cu_tva,; *!* serie,codmat,id_valuta,Curs,multiplicator,pret_achizitie,pretd,id_valuta_d) ; *!* SELECT id_articol,explicatie,pretv As Pret,proc_tvav,id_jtva_coloana,cante As cantitate,; *!* discunitar As discount_unitar,cu_tva As pret_cu_tva,Nvl(serie,Space(100)) As serie,Nvl(codmat,Space(50)) As codmat,; *!* 0 As id_valuta,0 As Curs,1 As multiplicator,Pret,pretd,Cast(Nvl(id_valuta,0) As N(5)) As id_valuta_d From (lcCursorDeviz) Where cante <> 0 Insert Into crsvanztemp(id_articol,explicatie,Pret,proc_tvav,id_jtva_coloana,taxcode,cantitate,discount_unitar,pret_cu_tva,; serie,codmat,id_valuta,Curs,multiplicator,pret_achizitie,pretd,id_valuta_d) ; SELECT id_articol,explicatie,Pret,proc_tvav,id_jtva_coloana,taxcode,cantitate,; discount_unitar,pret_cu_tva,Nvl(serie,Space(100)) As serie,Nvl(codmat,Space(50)) As codmat,; id_valuta,Curs,multiplicator,pret_achizitie,0 as pretd,Cast(Nvl(id_valuta,0) As N(5)) As id_valuta_d ; From (lcCursorDeviz) Where cantitate <> 0 OR m.llFacturaZero *!* modificare v 2.0.41 ^ lnSucces = SQLSetprop(gnHandle,"Transactions",2) If lnSucces >= 0 lcSql = [begin ] + gcS +[.pack_facturare.initializeaza_date_factura(] + ; [to_date('] + Alltrim(Dtoc(poDate.dataireg,2)) + [','YYYYMMDD'),] + ; Nvl(Alltrim(Str(poDate.id_fdoc)),[NULL]) + [,to_date('] + Alltrim(Dtoc(poDate.dataact,2)) + [','YYYYMMDD'),] + ; [to_date('] + Alltrim(Dtoc(poDate.datascad,2)) + [','YYYYMMDD'),'] + Nvl(poDate.serie_act,[]) + [',] + ; Alltrim(Str(poDate.nract,14,0)) + [,] + ; Iif(Isnull(poDate.id_client),[NULL],Alltrim(Str(poDate.id_client))) + [,] + ; Iif(Isnull(poDate.id_lucrare),[NULL],Alltrim(Str(poDate.id_lucrare))) + [,] + ; Iif(Isnull(poDate.id_sectie),[NULL],Alltrim(Str(poDate.id_sectie))) + [,] + ; Iif(Isnull(poDate.id_venchelt),[NULL],Alltrim(Str(poDate.id_venchelt))) + [,] + ; Iif(Isnull(poDate.id_responsabil),[NULL],Alltrim(Str(poDate.id_responsabil))) + [,] + ; IIF(EMPTY(nvl(poDate.explicatia4,[])),[NULL],['] + STRTRAN(ALLTRIM(poDate.explicatia4),['],['']) + [']) + [,] + ; && modificare v 2.0.33 IIF(EMPTY(NVL(poDate.id_ordl,0)),[NULL],ALLTRIM(STR(poDate.id_ordl))) + [,NULL,] + ; ['] + Strtran(Alltrim(Nvl(poDate.descriere,[])),['],['']) + [',] + ; Alltrim(Str(poDate.tip)) + [,] + Alltrim(Str(poDate.id_set)) + [,] + ; [to_date('] + Dtoc(poDate.zi_curs,2) + [','YYYYMMDD'),] + Alltrim(Str(poDate.id_valuta)) + [,] + ; Alltrim(Str(poDate.in_valuta)) + [,] + ; alltrim(str(poDate.tva_incasare)) + [,] + ; && modificare ROAAUTO v 2.1.0 Iif(Isnull(gnIdSucursala),[NULL],Alltrim(Str(gnIdSucursala))) + [,] + ; Alltrim(Str(gnIdUtil)) + [,NULL,NULL,] + ; IIF(EMPTY(NVL(poDate.tip_saft,0)), [NULL], ALLTRIM(STR(poDate.tip_saft))) + [); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") ELSE Private poArticol Select crsvanztemp Scan Scatter Name poArticol lcSql = [begin ] + gcS + [.pack_facturare.adauga_articol_factura_deviz(] + ; Alltrim(Str(poArticol.id_articol)) + [,] + ; ['] + Strtran(Alltrim(Nvl(poArticol.explicatie,[])),['],['']) + [',] + ; ['] + Strtran(Alltrim(Nvl(poArticol.serie,[])),['],['']) + [',] + ; Alltrim(Str(poArticol.pret_achizitie,18,gnPPret)) + [,] + ; Alltrim(Str(poArticol.pretd,18,gnPVal)) + [,] + ; Alltrim(Str(poArticol.id_valuta_d)) + [,] + ; Alltrim(Str(poArticol.Pret,18,Iif(poDate.in_valuta = 1,gnPVal,gnPPretV))) + [,] + ; Iif(poDate.in_valuta=1,Alltrim(Str(poArticol.id_valuta)),[NULL]) + [,] + ; Alltrim(Str(poArticol.Curs,18,6)) + [,] + ; Alltrim(Str(poArticol.multiplicator)) + [,] + ; Alltrim(Str(poArticol.proc_tvav,18,2)) + [,] + ; Alltrim(Str(poArticol.id_jtva_coloana)) + [,] + ; Alltrim(Str(poArticol.cantitate,18,gnPCant)) + [,] + ; Alltrim(Str(poArticol.discount_unitar,18,gnPPretV)) + [,] + ; Alltrim(Str(poArticol.id_gestiune)) + [,] + ; ['] + Alltrim(Nvl(poArticol.Cont,'')) + [',] + ; Alltrim(Str(poArticol.pret_cu_tva)) + [,NULL,NULL,] + IIF(ISNULL(poArticol.taxcode), [NULL], ALLTRIM(TRANSFORM(poArticol.taxcode))) + [); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") Exit Endif Endscan If !Used('INFISIERE') lcCaleDateMenu = gcAppPath+[\COMUN\DATEMENU\] Use &lcCaleDateMenu.INFISIERE In 0 Alias INFISIERE Endif If lnSucces >= 0 lnSucces = oscrie_in_fisiere(0,.F.,.T.) && ? If lnSucces >= 0 *!* modificare v 2.0.47 : am adaugat lnIdSet la pack_devize.actualizeaza_deviz lcSql = [begin ] + gcS + [.pack_facturare.scrie_in_vanzari(0,] + ; IIF(Isnull(poDate.id_delegat),[NULL],Alltrim(Str(poDate.id_delegat))) + [,] + ; IIF(Isnull(poDate.id_masina),[NULL],Alltrim(Str(poDate.id_masina))) + [,] + ; IIF(Isnull(poDate.id_facturare),[NULL],Alltrim(Str(poDate.id_facturare))) + [,] + ; IIF(Isnull(poDate.nListareDetaliata),[0],Alltrim(Str(poDate.nListareDetaliata))) + [,] + ; [?poDate.dataora_exp,] + ; IIF(Isnull(poDate.id_agent),[NULL],Alltrim(Str(poDate.id_agent))) + [,] + ; ['] + Strtran(Alltrim(Nvl(poDate.text_aditional,[])),['],['']) + [',?@poDate.nid_vanzare); ] + ; [pack_auto.actualizeaza_deviz(] + ALLTRIM(STR(lnProcTvav,10,4)) + [,'] + ALLTRIM(tcSirIdOrdl) + [',] + ALLTRIM(STR(lnIdSet)) + [); end;] *!* modificare v 2.0.35 : am scos apelul catre pack_devize.dev_completeaza_rul; e inclus in actualizeaza_deviz lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") ELSE * Completare vanzari.id_fact cu act.id_fact TEXT TO lcSql TEXTMERGE NOSHOW merge into vanzari a using (SELECT v.cod, (select min(id_fact) from act where cod = v.cod and scd = '4111') as id_fact from vanzari v where v.id_vanzare=?poDate.nid_vanzare) b on (a.cod = b.cod) when matched then update set id_fact = b.id_fact; endtext llSucces = goExecutor.oExecuta(m.lcSql) Endif Endif Endif Endif Endif If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") lcSql = "ROLLBACK" llScris = .F. Else lcSql = "COMMIT" llScris = .T. Endif lnSucces2 = goExecutor.oExecute(lcSql) Do Case Case lnSucces2 < 0 amessagebox(lcSql + Chr(13) + goExecutor.cEroare,0+16,"Eroare") llScris = .F. Case lnSucces2 >=0 And lcSql = "COMMIT" listeaza_ofacturare() If poDate.ntip_incasare = 2 && bon fiscal If glAutoBonDet And !Inlist(lnIdSet,31001,31002) listeaza_bon_fiscal_det(ltDataOra,poDate.nr_incasare,poDate.incasat,poDate.incasatCARD,poDate.proc_tva,lnProcDiscN,lnProcDiscM) Else listeaza_bon_fiscal(ltDataOra,poDate.nr_incasare,poDate.incasat,poDate.incasatCARD,poDate.proc_tva,poDate.nract) Endif Endif Endcase lnSucces2 = SQLSetprop(gnHandle,"Transactions",1) If lnSucces2 < 0 amessagebox('Programul nu a reusit sa treaca pe tranzactie automata. Iesiti din program si intrati din nou!',48,'Atentie!') Endif Endif If Used('crsvanztemp') Use In crsvanztemp Endif If Used('crsfactura') Use In crsfactura Endif Release poDate Return llScris Endproc ******************************************************************************************************************* Procedure listeaza_bon_fiscal_det Lparameters ttDataOra,tnNrBon,tnSumaAchitNumerar,tnSumaAchitCARD,tnProcentTva,tnProcDiscMat,tnProcDiscMan Local lcCursor lcCursor = [crsDateBon] Create Cursor (lcCursor) (denumire c(100), um c(10), CANT N(10,4), Pret N(18,4), DEPARTAMENT N(2), proc_tvav N(5,2),PROCENT N(5,2),DISCOUNT N(2) Default 0) If Used('crsBonDetaliat') Insert Into (lcCursor) (denumire,um,CANT,Pret,DEPARTAMENT,proc_tvav) ; Select denumire, Nvl(um,'BUC') As um, CANT, Pret, 1, 1+(tnProcentTva/100) From crsBonDetaliat Endif If tnProcDiscMat <> 0 Select (lcCursor) Append Blank Replace denumire With 'DISCOUNT MATERIALE',um With 'BUC',CANT With 1,PROCENT With tnProcDiscMat,; DEPARTAMENT With 1,proc_tvav With 1+(tnProcentTva/100),DISCOUNT With 2 Endif Select crsfactura Locate For id_articol = -100000 && Manopera If Found() lnSumaManopera = valctva Select (lcCursor) Append Blank Replace denumire With 'MANOPERA',um With 'BUC',CANT With 1,Pret With lnSumaManopera,; DEPARTAMENT With 1,proc_tvav With 1+(tnProcentTva/100) Endif If tnProcDiscMan <> 0 Select (lcCursor) Append Blank Replace denumire With 'DISCOUNT MANOPERA',um With 'BUC',CANT With 1,PROCENT With tnProcDiscMan,; DEPARTAMENT With 1,proc_tvav With 1+(tnProcentTva/100),DISCOUNT With 1 Endif Select crsfactura Scan For !Inlist(id_articol,-100000,-100001,-100003) && fara manopera, discount manopera, materiale lcDenumire = denumire lcUM = Nvl(um,'BUC') lnCantitate = cantitate lnPret = pretctva Select (lcCursor) Append Blank Replace denumire With lcDenumire,um With lcUM,CANT With lnCantitate,Pret With lnPret,; DEPARTAMENT With 1,proc_tvav With 1+(tnProcentTva/100) Select crsfactura Endscan loHash = GetHash() loHash.SetValue("cTip", "1;") loHash.SetValue("nNumarBon", tnNrBon) loHash.SetValue("nValoareNumerar", m.tnSumaAchitNumerar) loHash.SetValue("nValoareCARD", m.tnSumaAchitCard) loHash.SetValue("nValoareTotal", m.tnSumaAchitNumerar + m.tnSumaAchitCard) loHash.SetValue("cCursor",lcCursor) loHash.SetValue("tDataOra",ttDataOra) goControllerEcr.imprima(loHash) Use In (lcCursor) Release loHash Endproc && listeaza_bon_fiscal_det ******************************************************************************************************************* Procedure listeaza_bon_fiscal Lparameters ttDataOra,tnNrBon,tnSumaAchitNumerar,tnSumaAchitCARD,tnProcentTva,tnNrFact *!* lcSir=[1;Fact.]+Alltrim(Str(tnNrFact))+[;1;1;1;]+Alltrim(Str(tnSumaAchit*100))+[;1000;0\n]+CRLF *!* lcSir=lcSir+[5;]+Alltrim(Str(tnSumaAchit*100))+[;0;0;0\n]+Chr(13)+Chr(10)+Chr(13)+Chr(10) *!* imprimare_bon_fiscal(lcSir,tdDataOra,tnNrBon) Local lcCursor lcCursor = [crsDateBon] Create Cursor (lcCursor) (denumire c(100), um c(10), CANT N(10,4), Pret N(18,4), DEPARTAMENT N(2), proc_tvav N(5,2)) Append Blank Replace denumire With [Fact.]+Alltrim(Str(tnNrFact)),CANT With 1,Pret With m.tnSumaAchitNumerar + m.tnSumaAchitCARD,proc_tvav With 1+(tnProcentTva/100),DEPARTAMENT With 1 loHash = GetHash() loHash.SetValue("cTip", "1;") loHash.SetValue("nNumarBon", tnNrBon) loHash.SetValue("nValoareNumerar", m.tnSumaAchitNumerar) loHash.SetValue("nValoareCARD", m.tnSumaAchitCard) loHash.SetValue("nValoareTotal", m.tnSumaAchitNumerar + m.tnSumaAchitCard) loHash.SetValue("cCursor",lcCursor) loHash.SetValue("tDataOra",ttDataOra) goControllerEcr.imprima(loHash) Use In (lcCursor) Release loHash Endproc && listeaza_bon_fiscal ******************************************************************************************************************* Procedure alege_facturi_relistare LPARAMETERS tcCursorComenzi * tcCursorComenzi cursor cu comenzile selectate pentru listare * trebuie sa aiba coloanele: ales N(1), id_lucrare I, nrord C Local lnRaspuns,lcFisier,lcSql,lnSucces,lnIdLucrare,ldDataAct,lnNrAct,lcSelect,lcFiltru,lcSchema,lcOrder,llAfisare,lnnr,lnExp,lncounta,lncountb,lncountcod, lcFieldAles Select (m.tcCursorComenzi) lnRecno = Recno() If Reccount(m.tcCursorComenzi)>0 lcFieldAles = tcCursorComenzi + '.ales' IF TYPE(m.lcFieldAles) = 'U' lnAlese = 0 ELSE Calculate Sum(ales) To lnAlese ENDIF If lnAlese = 0 Select * From (tcCursorComenzi) Where Recno() = lnRecno Into Cursor crsRelistare Else Select * From (tcCursorComenzi) With (Buffering = .T.) Where ales = 1 Into Cursor crsRelistare ENDIF Select crsRelistare Scan Scatter Name ocomanda lnIdLucrare=crsrelistare.id_lucrare If Used('crsexport') Use In crsexport Endif lcSql = [Select distinct 0 as ales,cod,serie_act,nract,MAX(datascad) as datascad,dataact from act ] + ; [where id_set between 31000 and 31020 ] + ; [and id_lucrare = ] + Alltrim(Str(lnIdLucrare)) + [ and SUBSTR(scd,1,3) not in ('711','531') ] + ; [and sters = 0] + gcCondSucursala + [ and cod in (select cod from vanzari where sters = 0) ] + ; [group by cod,serie_act,nract,dataact ] + ; [order by dataact,nract] lnSucces = goExecutor.oExecute(lcSql,[crsexport]) If lnSucces < 0 amessagebox(goExecutor.cEroare,48,"Atentie") Else Do Case Case Reccount([crsexport]) = 0 amessagebox("Nu exista documente pentru comanda " + Alltrim(crsrelistare.nrord)+ " !",0+48,"Atentie") Case Reccount([crsexport]) = 1 Select ([crsexport]) relisteaza_factura_deviz(cod,serie_act,nract,dataact,datascad) Otherwise loFrmDocLuc=Createobject('frm_documente_lucrare',crsrelistare.nrord) loFrmDocLuc.Show(1) Select ([crsexport]) Scan For ales = 1 relisteaza_factura_deviz(cod,serie_act,nract,dataact,datascad) Select ([crsexport]) Endscan Endcase Endif Endscan Use In (Select('crsrelistare')) Use In (Select('crsexport')) SELECT (m.tcCursorComenzi) Go Max(Min(lnRecno,Reccount(tcCursorComenzi)),1) Else amessagebox("Nu ati selectat nici o comanda!",0+48,"Atentie") Endif Endproc ******************************************************************************************************************* Procedure relisteaza_factura_deviz Lparameters tnCod,tcSerie,tnNrAct,tdDataAct,tdDataScad pnCod = tnCod poDate=Createobject("oDateFactura",0,0) poDate.serie_act = tcSerie poDate.nract = tnNrAct poDate.dataact = Iif(Type('tdDataAct')='T',Ttod(tdDataAct),tdDataAct) poDate.datascad = Iif(Type('tdDataScad')='T',Ttod(tdDataScad),tdDataScad) *!* modificare v 2.1.0 : am adaugat tva_incasare lcSql = [select id_vanzare,id_comanda,dataora,dataora_exp,data_act,sters,dataoras,numar_act,serie_act,]+; [tip,id_part,discount,disc_fara_tva,discount_evidentiat,text_aditional,facturat,data_facturat,]+; [explicatie,altele,client,cod,utilizator,utils,utilfact,delegat,bidelegat,cnpdelegat,]+; [nume_agent,nrinmat,total_fara_tva,total_tva,total_cu_tva,id_gestiune,serie_chit,nr_incasare,incasat,]+; [in_valuta,sucursala,id_ruta,ruta,curs,multiplicator,nume_val,id_delegat,id_agent,id_masina,valoarea,]+; [nume_gestiune,id_sectie,sectie,id_lucrare,lucrare,tip_incasare,afisare_scadenta,id_ordl,tva_incasare from fact_vfacturi where cod = ] + ALLTRIM(STR(m.pnCod)) lnSucces = goExecutor.oExecute(lcSql,[crsfacturiTemp]) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Return Endif Select crsfacturiTemp poDate.nRelistare = 1 poDate.nid_vanzare = id_vanzare poDate.tip = tip poDate.discount_evidentiat = discount_evidentiat poDate.text_aditional = Nvl(text_aditional,[]) poDate.nrinmat = nrinmat poDate.nume_delegat = delegat poDate.bidelegat = bidelegat poDate.cnpdelegat = cnpdelegat poDate.dataora_exp = dataora_exp poDate.afisare_scadenta = afisare_scadenta poDate.listaid = Iif(poDate.tip = 3,Alltrim(Str(id_comanda)), [0]) poDate.ntip_incasare = tip_incasare poDate.serie_chit = Nvl(serie_chit,[]) poDate.nr_incasare = nr_incasare poDate.incasat = incasat poDate.id_client = id_part poDate.nume_client = client poDate.in_valuta = in_valuta poDate.id_ordl = id_ordl poDate.tva_incasare = tva_incasare && modificare v 2.1.0 lnDiscount = DISCOUNT lnDiscountVal = 0 Use In (SELECT('crsfacturiTemp')) lcSql = [select * from fact_vfacturi_detalii where id_vanzare = ] + ALLTRIM(STR(poDate.nid_vanzare)) lnSucces = goExecutor.oExecute(lcSql,[crsdetalii]) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Return Endif Select crsdetalii Calculate Max(proc_tvav) To lnProcTvav creeaza_facturacrs([crsfactura]) prelucreaza_facturacrs([crsdetalii],[crsfactura],lnProcTvav,lnDiscount,lnDiscountVal) Use In crsdetalii listeaza_ofacturare() If Used('crsfactura') Use In crsfactura Endif Release poDate Endproc *!* ****************************************************************************************************************************** *!* Procedure listeaza_ofacturare_deviz *!* listeaza_ofacturare() *!* If poDate.nRelistare = 0 And poDate.eProforma = 0 And poDate.nSalveazaAtasamente = 1 *!* lnSucces2 = goExecutor.oexecute([COMMIT]) *!* Endif *!* Endproc *!* ****************************************************************************************************************************** ******************************************* * PROCEDURE export_comanda_xml( ) * Data/ora : 08/03/13, 08:58:28 * autor : liana.neagu * descriere: ****** PARAMETER BLOCK ************** * Parametri : 0 * ******************************************* PROCEDURE export_comanda_xml tlCautPlus = .t. Store "" To loCauta *!* tlCautPlus - daca se foloseste formularul caut_alfa_form_plus cu butonul but_start_criterii *!* 24.07.2009 *!* 29.01.2013 : am adaugat um2 in selectie Local lcStringCriterii,lcCursor,lcXML,lcDateStyle,lcMark LOCAL lcFisierXml,lcCursor ,lcCaleFisier PRIVATE pcCodTehnician lcStringCriterii = "" lcStringCriterii="Lucrare\nrord\T\none\" + crlf + ; "Client\nume\T\none"+ crlf + ; "Nr. inmatriculare\nrinmat\T\none"+ crlf+; "Serie sasiu\series\T\none"+ crlf+; "Data\datai\D\none"+ crlf lcTitluColoane = [Nr lucrare,Data,Client,Nr. inmatriculare,Serie sasiu] lccoloane = [nrord,TTOD(datai),nume,nrinmat,series] lcFiltru = [2=2] lcSchema = [] lcOrder = [datai] lcNumeProc = [] lcTitlu = [Alege_i comenzile (mouse-click pe denumire sau apasa_i SPACE)] lcSelect = [select nrord,datai,nume,nrinmat,series,validat,id_ordl from auto_normare_comenzi a] lcFiltruOriginal = gcCondLuna + [ and a.validat=0 ] pcschema1=[''] llToateIreg = .t. lcPrimaColoana = [nrord] lnPornire = 1 lnTipReturn = 1 lcIdColumn = "id_ordl" loHash = GetHash() loHash.SetValue("cSelect", lcSelect) loHash.SetValue("cFiltru", lcFiltru) loHash.SetValue("cSchema", lcSchema) loHash.SetValue("cOrder", lcOrder) loHash.SetValue("cColoana", lccoloane) loHash.SetValue("cTitlu", lcTitlu) loHash.SetValue("cTitluColoana", lcTitluColoane) loHash.SetValue("cNumeProc", lcNumeProc) loHash.SetValue("lToateIreg", llToateIreg) loHash.SetValue("cFiltruOriginal", lcFiltruOriginal) loHash.SetValue("cPrimaColoana", lcPrimaColoana) loHash.SetValue("nPornire", lnPornire) loHash.SetValue("nTipReturn", lnTipReturn) loHash.SetValue("cIdColumn", lcIdColumn) loHash.SetValue("cStringCriterii", lcStringCriterii) loCauta = cauta_alfa_hash(loHash) *---------------------export in xml---------------------------------------- IF gnButon = 2 OR empty(NVL(loCauta,[])) RETURN ENDIF lcCursor = [crsDateSelect] XMLTOCURSOR(loCauta,lcCursor ) lcFisierXml = m.gcFISIERXMLCOMENZI lcCaleFisier = JUSTPATH(lcFisierXml) If !Directory(m.lcCaleFisier) Md (m.lcCaleFisier) Endif lcSql = [select * from DEV_UTILIZATORI_CODURI where id_util = ?gnIdutil] lnSucces = goExecutor.oExecute(lcSql,[crscodUtil]) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Return Endif SELECT crsCodUtil pcCodTehnician = ALLTRIM(cod) USE IN crsCodUtil IF empty(NVL(pcCodTehnician,[])) oadaugcod = CREATEOBJECT('frm_codutilizator') *!* oadaugcod.Clb_tx_simplu1.text_simplu1.controlsource= 'pcCodTehnician' oadaugcod.show(1) IF gnbuton = 2 RETURN ENDIF lcSql = [merge into DEV_UTILIZATORI_CODURI a using (select ']+ALLTRIM(pcCodTehnician)+; [' as cod,?gnIdutil as id_util from dual) b ON (a.id_util = b.id_util) WHEN NOT MATCHED THEN insert (id_util,cod) values (?gnIdutil,']+ALLTRIM(pcCodTehnician)+; [') WHEN MATCHED THEN UPDATE SET cod = ']+ALLTRIM(pcCodTehnician)+[' where id_util = ?gnIdutil] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.cEroare,0+16,"Eroare") Return Endif ENDIF lcDateStyle = Set("Date") lcMark = Set("Mark") Set Date To Dmy Set Mark To '.' Set Textmerge On To Memvar lcXML NOSHOW \ SELECT (lcCursor) *!* modificare 30.07.2012 \ SCAN \ \<> \<> \<> \<> \<> \<> \1 \ ENDSCAN \ Set Textmerge To Strtofile(lcXML, m.lcFisierXml ) Set Date To &lcDateStyle Set Mark To &lcMark aMESSAGEBOX('S-a creat fisierul '+m.lcFisierXml ,0+64,_screen.Caption) ENDPROC **********************sfarsit procedura export_comanda_xml******************* ***************************************************************************** * citeste procentele de discount pe contractul tip CLIENT AUTO * pentru completarea procentelor de discount la facturare ***************************************************************************** PROCEDURE citeste_discount_contract LPARAMETERS tnIdPart, tnIdCtr, tnProcDiscountManopera, tnProcDiscountMateriale * tnIdPart IN - id client * tnProcDiscountManopera, tnProcDiscountMateriale OUT Local lcSql, llSucces PRIVATE pnDiscountManopera, pnDiscountMateriale, pnIdCtr, pnIdPart pnIdPart = tnIdPart pnIdCtr = 0 pnDiscountManopera = 0.00 pnDiscountMateriale = 0.00 lcSql = [begin pack_auto.citeste_discount_contract(?pnIdPart, ?gnIdSucursala, ?@pnIdCtr, ?@pnDiscountManopera, ?@pnDiscountMateriale); end;] llSucces = goExecutor.oExecuta(m.lcSql) IF !m.llSucces pnDiscountManopera = 0.00 pnDiscountMateriale = 0.00 ENDIF tnIdCtr = pnIdCtr tnProcDiscountManopera = NVL(m.pnDiscountManopera, 0.00) tnProcDiscountMateriale = NVL(pnDiscountMateriale, 0.00) ENDPROC && citeste_discount_contract ***************************************************************************** * salveaza procentele de discount pe contractul tip CLIENT AUTO (il creeaza daca nu exista) * in formularul onom_devize.vcx:frm_dev_clienti ***************************************************************************** PROCEDURE salveaza_discount_contract LPARAMETERS tnIdPart, tnIdCtr, tnProcDiscountManopera, tnProcDiscountMateriale * tnIdPart IN - id client * tnIdCtr IN - id contract SERVICE AUTO * tnProcDiscountManopera, tnProcDiscountMateriale IN Local lcSql, llSucces PRIVATE pnDiscountManopera, pnDiscountMateriale, pnIdCtr, pnIdPart pnIdPart = tnIdPart pnIdCtr = tnIdCtr pnDiscountManopera = tnProcDiscountManopera pnDiscountMateriale = tnProcDiscountMateriale lcSql = [begin pack_auto.salveaza_discount_contract(?pnIdPart, ?gnIdSucursala, ?pnIdCtr, ?pnDiscountManopera, ?pnDiscountMateriale); end;] llSucces = goExecutor.oExecuta(m.lcSql) RETURN m.llSucces ENDPROC && salveaza_discount_contract * ----------------------------------- * Intoarce .T. daca un tip de comanda se inchide prin validare sau .F. daca se inchide in alt mod ( nota inchidere, factura) * ----------------------------------- FUNCTION getOptiuneInchidereValidare LPARAMETERS tnTipComanda * tnTipComanda: 1 = garantie, 2 = postgarantie ...(DEV_TIP_DEVIZ) LOCAL lnReturnValue, llReturn, llSucces PRIVATE pnTipComanda pnTipComanda = m.tnTipComanda lnReturnValue = 0 llSucces = goExecutor.oSelecteaza2Value("Select getOptiuneInchidere(?pnTipComanda) from dual", @lnReturnValue) llReturn = (m.lnReturnValue = 1) RETURN m.llReturn ENDFUNC && getOptiuneInchidereValidare * ----------------------------------- * Salveaza optiunea de inchidere prin validare pe un tip de comanda * ----------------------------------- FUNCTION setOptiuneInchidereValidare LPARAMETERS tnTipComanda, tlInchidereValidare LOCAL lnReturnValue PRIVATE pnTipComanda, pnInchidereValidare pnTipComanda = m.tnTipComanda pnInchidereValidare = IIF(m.tlInchidereValidare,1, 0) llSucces = goExecutor.oExecuta("begin setOptiuneInchidere(?pnTipComanda, ?pnInchidereValidare); end;") RETURN m.llSucces ENDFUNC && setOptiuneInchidereValidare