*!* 20.02.2015 *!* marius.mutu *!* + caut_facturi_multiple_client_articol: alegere factura dupa client si articol in scop de retur articol pe o factura de vanzare normala *!* 16.06.2015 *!* marius.mutu *!* vizualizare_facturi + coloane:id_facturare, listare_detaliata *!* 11.05.2017 *!* marius.mutu *!* caut_contract_facturare: se poate adauga un contract din cautarea de contracte - parametru contracte_nou with tnIdPart *!* 16.12.2019 *!* marius.mutu *!* vizualizare_facturi, vizualizare_facturi2 crsDetalii.id_jtva_coloana_ex, jtva_coloana_ex *!* 29.12.2019 *!* marius.mutu *!* vizualizare_facturi, vizualizare_facturi2 crsFcturi.email_facturare, adresa_client, email_client, adresa_beneficiar, email_beneficiar pentru trimiterea facturii pe email la clienti *!* 20.01.2020 *!* marius.mutu *!* vizualizare_facturi, vizualizare_facturi2 crsFacturi.codmatc - codmat client *!* 30.01.2020 *!* marius.mutu *!* vizualizare_facturi, vizualizare_facturi2 + id_util pentru listarea facturii cu responsabilul care a introdus factura *!* 25.03.2020 *!* marius.mutu *!* vizualizare_facturi, vizualizare_facturi2 + tlShowRecords - arata facturile din luna la intrarea in formular *************************************************************************************************************** **** Proceduri: **** vizualizare_optiuni_facturare **** configurare_serii_facturare **** facturare_lista_de_preturi **** facturare_contracte **** facturare_comenzi **** facturare_avize **** facturare_articole_compuse **** emitere_aviz_clienti **** emitere_aviz_clienti_debitori **** emitere_aviz_clienti_custodie **** emitere_aviz_transfer **** emitere_dispozitii_livrare **** vizualizare_facturi **** vizualizare_proforme **** verifica_setari **** vanzare_materii_prime **** vanzare_produse **** vanzare_marfa_pret_achi **** vanzare_marfa_pret_vanz **** vanzare_marfa_pret_achi_vanz **** selecteaza_gestiuni **** creeaza_cursor_seturi **** creeaza_cursor_seturi_proforme **** recreeaza_cursoare_retur **** calculeaza_totaluri **** Functii : **** actualizeaza_optiuni_program - inlocuita de actualizeaza_optiuni_program din oinit_optiuni.prg **** caut_comanda_client **** caut_comanda_gestiune **** caut_contract_facturare **** caut_avize **** caut_facturi_client **** caut_facturi_multiple_client **** caut_gestiune_sursa **** caut_utilizator_facturare **** caut_gestiune_dest - am mutat-o in ocautare.prg **** caut_politici_curente_util - veche 26.01 *************************************************************************************************************** ************************************ INCEPUT: vizualizare_optiuni_facturare *********************************** Procedure vizualizare_optiuni_facturare Lparameters tnTip && 1 = optiuni de pe server && 2 = optiuni din registrul Windows Local lnTipOptiuni If Used('crsoptiuni') Use In crsoptiuni Endif If gcNumeProgram = 'ROACONTRACTE' lnTipOptiuni = 2 Else lnTipOptiuni = 1 Endif Do Case Case tnTip = 1 If actualizeaza_optiuni_program() ofrmoptiune = Createobject('frm_optiuni_facturare', lnTipOptiuni) ofrmoptiune.Show(1) Release ofrmoptiune Endif Case tnTip = 2 ofrmoptiune = Createobject('frm_optiuni_facturare_local', lnTipOptiuni) ofrmoptiune.Show(1) Release ofrmoptiune Otherwise *!* amessagebox("Optiune invalida!",16,"Eroare") lnTipOptiuni = 0 Endcase If Used('crsoptiuni') Use In crsoptiuni Endif Release lnTipOptiuni Endproc && vizualizare_optiuni_facturare ************************************ SFARSIT: vizualizare_optiuni_facturare *********************************** *!* ************************************ INCEPUT: facturare_din_stoc ******************************************* *!* Procedure facturare_din_stoc *!* factureaza(7) *!* Endproc && facturare_din_stoc *!* ************************************ SFARSIT: facturare_din_stoc ******************************************* ************************************ INCEPUT: facturare_lista_de_preturi *********************************** Procedure facturare_lista_de_preturi Do politica.mpr Endproc && facturare_lista_de_preturi ************************************ SFARSIT: facturare_lista_de_preturi *********************************** ************************************ INCEPUT: facturare_contracte ****************************************** Procedure facturare_contracte LPARAMETERS tcTip LOCAL lcTip lcTip = UPPER(ALLTRIM(TRANSFORM(m.tcTip))) IF EMPTY(m.lcTip) OR !INLIST(m.lcTip, 'FACTURA LEI', 'INVOICE', 'FACTURA VALUTA') lcTip = 'FACTURA LEI' ENDIF DO CASE CASE m.lcTip = 'FACTURA LEI' factureaza(2) CASE m.lcTip = 'INVOICE' factureaza(6) CASE m.lcTip = 'FACTURA VALUTA' factureaza(52) ENDCASE Endproc && facturare_contracte ************************************ SFARSIT: facturare_contracte ****************************************** ************************************ INCEPUT: facturare_comenzi ******************************************** Procedure facturare_comenzi factureaza(3) Endproc && facturare_comenzi ************************************ SFARSIT: facturare_comenzi ******************************************** ************************************ INCEPUT: facturare_avize *********************************************** Procedure facturare_avize factureaza(4) Endproc && facturare_avize ************************************ SFARSIT: facturare_avize *********************************************** ************************************ INCEPUT: copiere_factura *********************************************** PROCEDURE copiere_factura LPARAMETERS toFactura factureaza(toFactura.Tip, toFactura) ENDPROC && copiere_factura ************************************ SFARSIT: copiere_factura *********************************************** ********************************** INCEPUT: facturare_articole_compuse *************************************** Function facturare_articole_compuse Private ofrmfactseturi Local lnNrInregRate *!* modificare v 2.0.56 *!* Dimension laStructura(1,18) *!* Afields(laStructura,[crsfactura]) *!* If Used('crsfacturaset') *!* Use In crsfacturaset *!* Endif *!* Create Cursor crsfacturaset From Array laStructura *!* modificare v 2.0.67 *!* copiaza_structura_cursor([crsfactura],[crsfacturaset]) *!* modificare v 2.0.67 ^ *!* modificare v 2.0.56 ^ gnButon = 1 Select crsfactura lnRecno = Recno() Replace id_set_fact With 0 All *!* modificare v 2.0.67 Calculate Cnt() For Inlist(opt_facturare, 1, 2) To lnNrInregRate Set Filter To !Inlist(opt_facturare, 1, 2) If lnNrInregRate <> Reccount('crsfactura') copiaza_structura_cursor([crsfactura], [crsfacturaset]) Select crsfactura *!* modificare v 2.0.67 ^ Go Top ofrmfactseturi = Createobject('frm_articole_compuse') ofrmfactseturi.Show(1) Release ofrmfactseturi *!* modificare v 2.0.67 Endif Release lnNrInregRate *!* modificare v 2.0.67 ^ Select crsfactura *!* modificare v 2.0.67 Set Filter To *!* modificare v 2.0.67 ^ Go Min(lnRecno, Reccount('crsfactura')) Return Iif(gnButon = 1, .T., .F.) Endfunc ********************************** SFARSIT: facturare_articole_compuse *************************************** ************************************ INCEPUT: emitere_aviz_clienti ***************************************** Procedure emitere_aviz_clienti Lparameters tnTip Do Case Case tnTip = 1 factureaza(21) && pe baza de comenzi Case tnTip = 2 factureaza(22) && pe baza de lista de preturi Case tnTip = 3 factureaza(26) && pe baza de lista de contract Case tnTip = 4 && Retur aviz \>) ENDTEXT lcCursor = SYS(2015) llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursor) *************** * Suprascriere ctip_factura special pentru ACN, pentru ca voiau ENERGIE ELECTRICA in loc de CHIRII SI UTILITATI pe borderou * si nu am adaugat un tip nou de prestatii ENERGIE ELECTRICA *************** IF !EMPTY(m.tcCursorFacturi) AND USED(m.tcCursorFacturi) SELECT (m.tcCursorFacturi) SCAN lnIdVanzare = id_vanzare lcTipFactura = ALLTRIM(NVL(ctip_factura,'')) UPDATE (m.lcCursor) SET ctip_factura = m.lcTipFactura WHERE id_vanzare = m.lnIdVanzare ENDSCAN ENDIF Select distinct id_borderou, data_borderou, id_client, client, email_client, .F. As email_succes, Space(250) As email_mesaj ; From (m.lcCursor) ; ORDER BY id_borderou ; Into Cursor cBorderouEmail READWRITE Select id_borderou, id_vanzare, data_act, numar_act, ctip_factura ; From (m.lcCursor) ; ORDER BY data_act, numar_act ; Into Cursor cFacturiEmail Readwrite USE IN (SELECT(m.lcCursor)) loMail = getoEmail() && email.prg lcSubjectTemplate = loMail.cBorderouSubject lcBodyTemplate = loMail.cBorderouBody llCancel = .F. Sele cBorderouEmail Scan lnIdBorderou = id_borderou ldDataBorderou = Ttod(data_borderou) lcClient = Upper(Alltrim(client)) lnIdClient = id_client lcEmailClient = Alltrim(NVL(email_client,'')) loMail.cTo = m.lcEmailClient llSucces = .T. Wait Window 'Email ' + Alltrim(Transform(Recno('cBorderouEmail'))) + '/' + Alltrim(Transform(Reccount('cBorderouEmail'))) + ' Client: ' + m.lcClient Nowait lcSubject = m.lcSubjectTemplate && Borderou facturi nr. din - ' lcSubject = Strtran(m.lcSubject, '', Alltrim(Str(m.lnIdBorderou)), 1, 1, 1) lcSubject = Strtran(m.lcSubject, '', Alltrim(Dtoc(m.ldDataBorderou)), 1, 1, 1) lcSubject = Strtran(m.lcSubject, '', m.lcClient, 1, 1, 1) loMail.cSubject = m.lcSubject lcBody = m.lcBodyTemplate && Aveti atasat borderoul de facturi nr. din si documentele asociate pentru serviciile prestate de <>. lcBody = Strtran(m.lcBody, '', Alltrim(Str(m.lnIdBorderou)), 1, 10, 1) lcBody = Strtran(m.lcBody, '', Alltrim(Dtoc(m.ldDataBorderou)), 1, 10, 1) lcBody = Strtran(m.lcBody, '', m.lcClient, 1, 10, 1) loMail.cHTMLBody = m.lcBody * Atasez borderoul si toate fisierele pdf care au aceeasi denumire ca aaaallzz_nrfact_[factura].pdf lcFiles = "" lcFile = GetPDFBorderouFile(m.ldDataBorderou, m.lnIdBorderou) && d:\roa\pdf\20200401_29_borderou.pdf * Generez borderoul in caz ca nu era listat si salvat pdf IF !FILE(m.lcFile) llListare = .F. llPdf = .T. rap_borderou_clienti(m.lnIdBorderou, m.llPdf, m.llListare) && oproceduri_rapoarte_fact.prg ENDIF IF !FILE(m.lcFile) lnRaspuns = MESSAGEBOX('Email ' + Alltrim(Transform(Recno('cBorderouEmail'))) + '/' + Alltrim(Transform(Reccount('cBorderouEmail'))) + ' Client: ' + m.lcClient + CHR(13) + CHR(10) + ; 'Nu exista borderoul ' + m.lcFile + '!' + CHR(13) + CHR(10) + ; 'Continuati fara borderou?', 3+32, _Screen.Caption) DO CASE CASE m.lnRaspuns = 6 && YES * CASE m.lnRaspuns = 7 && NO llSucces = .F. CASE m.lnRaspuns = 2 && CANCEL llSucces = .F. llCancel = .T. EXIT ENDCASE ENDIF IF m.llCancel EXIT ENDIF loMail.EmailSetAttachment(m.lcFile) lcFiles = m.lcFiles + Iif(File(m.lcFile), m.lcFile, "") Select cFacturiEmail Scan For id_borderou = m.lnIdBorderou lnIdVanzare = id_vanzare ldDataFactura = data_act lnNumarFactura = numar_act loDate = Null lcFacturaFile = GetPDFFacturaFile(m.ldDataFactura, m.lnNumarFactura) && d:\roa\pdf\20200402_12346_factura.pdf IF !FILE(m.lcFacturaFile) lnRaspuns = MESSAGEBOX('Email ' + Alltrim(Transform(Recno('cBorderouEmail'))) + '/' + Alltrim(Transform(Reccount('cBorderouEmail'))) + ' Client: ' + m.lcClient + CHR(13) + CHR(10) + ; 'Nu exista factura ' + m.lcFacturaFile + '!' + CHR(13) + CHR(10) + ; 'Continuati fara factura?', 3+32, _Screen.Caption) DO CASE CASE m.lnRaspuns = 6 && YES * CASE m.lnRaspuns = 7 && NO llSucces = .F. EXIT CASE m.lnRaspuns = 2 && CANCEL llSucces = .F. llCancel = .T. EXIT ENDCASE ENDIF lcScheletonFile = Strtran(lcFacturaFile, 'factura', '*', 1, 10, 1) && d:\roa\pdf\20200402_12346_*.pdf (_recapitulatia.pdf, _situatie_stationare.pdf, _declaratie_comandant.pdf) lcDir = Addbs(Justpath(m.lcFacturaFile)) lnFiles = Adir(laFiles, m.lcScheletonFile) For lnFile = 1 To m.lnFiles lcFile = m.lcDir + laFiles[m.lnFile, 1] loMail.EmailSetAttachment(m.lcFile) lcFiles = m.lcFiles + Iif(File(m.lcFile), m.lcFile, "") Endfor Endscan && cFacturiEmail IF m.llCancel EXIT ENDIF * Email IF m.llSucces lcErrorMessage = '' If loMail.Send() > 0 llClearErrors = .T. lcErrorMessage = loMail.GetErrorMessage(m.llClearErrors) llSucces = .F. Endif Replace email_succes With m.llSucces, email_mesaj With Left(m.lcErrorMessage, 250) In cBorderouEmail ENDIF && llSucces If Inkey(0.5) = 27 && 'ESC' If AMESSAGEBOX('Doriti sa intrerupeti operatia?', 4 + 32, _Screen.Caption) = 6 Exit Endif Endif Endscan Select cBorderouEmail Copy To (m.lcRaportEmail) Type Xl5 OPEN_DEFAULT_APP(m.lcRaportEmail) Use In (Select('cBorderouEmail')) Use In (Select('cFacturiEmail')) Select (m.lcSelect) ENDPROC && email_borderou_facturi * ------------------------------------ * Apeleaza email_facturi() cu parametri ListareFactura, ListareRecapitulatie, ListareAlteDocumente PROCEDURE wrap_email_facturi LPARAMETERS toFacturiForm, tcCursorFacturi, tnFactura, tnRecapitulatia, tnAlteDocumente, tnIdVanzare * toFacturiForm (optional): referinta la formularul frm_facturi, pentru generare pdf factura, recapitulatie, in caz ca nu exista deja * tcCursorFacturi: cursorul cu lista de facturi (id_vanzare, data_act, numar_act, serie_act, total_fara_tva, total_tva, total_cu_tva, client, email_facturare) * tnFactura: 0 = nu se ataseaza factura, 1 = se ataseaza factura, 2 = se genereaza factura daca nu exista si se ataseaza * tnRecapitulatia: 0 = nu se ataseaza recapitulatia, 1 = se ataseaza recapitulatia, 2 = se genereaza recapitulatia daca nu exista si se ataseaza * tnAlteDocumente: 0 = nu se ataseaza alte documente, 1 = se ataseaza alte documente cu aceeasi structura denumire ca factura * tnIdVanzare: (optional) vanzari.id_vanzare, daca se apeleaza din afara formularului de vizualizare facturi LOCAL loDate loDate = CREATEOBJECT("empty") ADDPROPERTY(loDate, 'cCursorFacturi', IIF(TYPE('tcCursorFacturi') = 'C' and !EMPTY(m.tcCursorFacturi) and USED(m.tcCursorFacturi), m.tcCursorFacturi, '')) ADDPROPERTY(loDate, 'nListareFactura', m.tnFactura) ADDPROPERTY(loDate, 'nListareRecapitulatia', m.tnRecapitulatia) ADDPROPERTY(loDate, 'nListareAlteDocumente', m.tnAlteDocumente) ADDPROPERTY(loDate, 'nIdVanzare', IIF(TYPE('tnIdVanzare') = 'N', m.tnIdVanzare, 0)) email_facturi(toFacturiForm, loDate) ENDPROC && wrap_email_facturi * ------------------------------------ * trimite email factura, recapitulatie si alte documente pdf cu aceeasi structura ca factura.pdf * In formularul Vizualizare facturi se apasa butonul listare PROCEDURE email_facturi Lparameters toFacturiForm, toDate * toFacturiForm (optional): referinta la formularul frm_facturi, pentru generare pdf factura, recapitulatie, in caz ca nu exista deja *** Trimit email la facturile alese, sau la factura de pe inregistrarea curenta Local laFiles[1], lcBody, lcClient, lcDir, lcEmail, lcErrorMessage, lcFacturaFile, lcFile, lcSelect Local lcFileName, lcFiles, lcNume, lcRaportEmail, lcRecapitulatiaFile, lcScheletonFile Local lcSerieFactura, lcSubject, lcTipDocument, lcTo, lcWhere, ldDataFactura, llClearErrors Local llJustPDF, llListareFactura, llListareRecapitulatia, llListareAlteDocumente, llSilent, llSucces, lnFile, lnFiles Local lnIdVanzare, lnNumarFactura, lnRecno, loDate, loMail, lcSubjectTemplate, lcBodyTemplate, lnIdVanzare, lcCursorFacturi, llUsed lcSelect = SELECT() loMail = getoEmail() && email.prg lcWhere = "" llListareFactura = .T. llGenerareFactura = .F. llListareRecapitulatia = .F. llGenerareRecapitulatia = .F. llListareAlteDocumente = .F. lnIdVanzare = 0 lcCursorFacturi = '' If Type('toDate') = 'O' lcCursorFacturi = IIF(TYPE('toDate.cCursorFacturi') = 'C', toDate.cCursorFacturi, '') llListareFactura = IIF(Type('toDate.nListareFactura') = 'N', INLIST(toDate.nListareFactura, 1, 2), .T.) llGenerareFactura = IIF(Type('toDate.nListareFactura') = 'N', toDate.nListareFactura = 2, .F.) llListareRecapitulatia = IIF(Type('toDate.nListareRecapitulatia') = 'N', INLIST(toDate.nListareRecapitulatia, 1, 2), .F.) llGenerareRecapitulatia = IIF(Type('toDate.nListareRecapitulatia') = 'N', toDate.nListareRecapitulatia = 2, .F.) llListareAlteDocumente = IIF(Type('toDate.nListareAlteDocumente') = 'L', toDate.nListareAlteDocumente = 1, .F.) lnIdVanzare = IIF(Type('toDate.nIdVanzare') = 'N', toDate.nIdVanzare, 0) Endif lcRaportEmail = Addbs(gcTempPath) + "email_" + Ttoc(Datetime(), 1) + '.xls' CREATE CURSOR cEmail (id_vanzare I, data_act D null, numar_act N(14) null, serie_act C(20) null, client C(200) null, ; total_fara_tva N(20,4) null, total_tva N(20,4) null, total_cu_tva N(20,4) null, ; email_facturare C(200) null, email_succes L, email_mesaj C(250)) llUsed = .T. IF !USED(m.lcCursorFacturi) AND !EMPTY(m.lnIdVanzare) lcCursorFacturi = 'cEmailTemp' lcSql = [SELECT id_vanzare, data_act, numar_act, serie_act, total_fara_tva, total_tva, total_cu_tva, client, email_facturare FROM fact_vfacturi2 WHERE id_vanzare = ] + ALLTRIM(STR(m.lnIdVanzare)) llSucces = goExecutor.oExecuta(m.lcSql, m.lcCursorFacturi) llUsed = .F. ENDIF IF USED(m.lcCursorFacturi) SELECT cEmail APPEND FROM DBF(m.lcCursorFacturi) ENDIF IF !m.llUsed USE IN (SELECT(m.lcCursorFacturi)) ENDIF lcSubjectTemplate = loMail.cSubject lcBodyTemplate = loMail.cHtmlBody Sele cEmail Scan lcFiles = "" ldDataFactura = data_act lcSerieFactura = Alltrim(serie_act) lnNumarFactura = numar_act lcNume = Upper(Alltrim(NVL(client,''))) lcClient = m.lcNume lnIdVanzare = id_vanzare loDate = Null lcSubject = m.lcSubjectTemplate lcSubject = Strtran(m.lcSubject, '', Alltrim(Str(m.lnNumarFactura)), 1, 1, 1) lcSubject = Strtran(m.lcSubject, '', Alltrim(Dtoc(m.ldDataFactura)), 1, 1, 1) lcSubject = Strtran(m.lcSubject, '', m.lcClient, 1, 1, 1) loMail.cSubject = m.lcSubject lcBody = m.lcBodyTemplate lcBody = Strtran(m.lcBody, '', Alltrim(Str(m.lnNumarFactura)), 1, 10, 1) lcBody = Strtran(m.lcBody, '', Alltrim(Dtoc(m.ldDataFactura)), 1, 10, 1) lcBody = Strtran(m.lcBody, '', m.lcClient, 1, 10, 1) loMail.cHtmlBody = m.lcBody * Generare PDF factura lcFacturaFile = GetPDFFacturaFile(m.ldDataFactura, m.lnNumarFactura) If m.llListareFactura If !File(m.lcFacturaFile) AND m.llGenerareFactura AND TYPE('toFacturiForm') = 'O' llSilent = .F. llJustPDF = .T. lcTipDocument = 'FACTURA' loDate = toFacturiForm.do_listare_document(m.lnIdVanzare, m.llSilent, m.llJustPDF, m.lcTipDocument) && .ListareDocument(m.llSilent, m.llJustPDF, "cEmail") ENDIF IF FILE(m.lcFacturaFile) loMail.EmailSetAttachment(m.lcFacturaFile) lcFiles = m.lcFiles + Iif(File(m.lcFacturaFile), m.lcFacturaFile, "") ENDIF ENDIF && llListareFactura * Generare PDF recapitulatie lcRecapitulatiaFile = GetPDFRecapitulatiaFile(ldDataFactura, m.lnNumarFactura) If m.llListareRecapitulatia If !File(m.lcRecapitulatiaFile) AND m.llGenerareRecapitulatia AND TYPE('toFacturiForm') = 'O' llSilent = .F. llJustPDF = .T. lcTipDocument = 'RECAPITULATIE' loDate = toFacturiForm.do_listare_document(m.lnIdVanzare, m.llSilent, m.llJustPDF, m.lcTipDocument) && .ListareDocument(m.llSilent, m.llJustPDF, "cEmail") ENDIF IF FILE(m.lcRecapitulatiaFile) loMail.EmailSetAttachment(m.lcRecapitulatiaFile) lcFiles = m.lcFiles + Iif(File(m.lcRecapitulatiaFile), "," + m.lcRecapitulatiaFile, "") ENDIF ENDIF && llListareRecapitulatia * Atasez alte documente cu aceeasi structura ca factura.pdf IF m.llListareAlteDocumente lcScheletonFile = Strtran(lcFacturaFile, 'factura', '*', 1, 10, 1) && d:\roa\pdf\20200402_12346_*.pdf (_recapitulatia.pdf, _situatie_stationare.pdf, _declaratie_comandant.pdf) lcDir = Addbs(Justpath(m.lcFacturaFile)) lnFiles = Adir(laFiles, m.lcScheletonFile) For lnFile = 1 To m.lnFiles lcFileName = laFiles[m.lnFile, 1] * Nu mai atasez factura.pdf si recapitulatie.pdf If Inlist(Lower(m.lcFileName), Lower(JUSTFNAME(m.lcFacturaFile)), Lower(JUSTFNAME(m.lcRecapitulatiaFile))) Loop Endif lcFile = m.lcDir + m.lcFileName loMail.EmailSetAttachment(m.lcFile) lcFiles = m.lcFiles + Iif(File(m.lcFile), m.lcFile, "") ENDFOR ENDIF && llListareAlteDocumente * Email Wait Window 'Email ' + Alltrim(Transform(Recno('cEmail'))) + '/' + Alltrim(Transform(Reccount('cEmail'))) + ' Client: ' + m.lcClient + ' Factura: ' + Alltrim(Str(m.lnNumarFactura)) Nowait lcEmail = Alltrim(Nvl(cEmail.email_facturare, '')) && am adaugat direct in crsFacturi.email_facturare, ca sa nu mai folosesc loDate.oClient.email_facturare, daca fisierele pdf sunt deja listate lcTo = Iif(!Empty(Nvl(m.lcEmail, '')), m.lcEmail, '') loMail.cTo = m.lcTo llSucces = .T. lcErrorMessage = '' If loMail.Send() > 0 llClearErrors = .T. lcErrorMessage = loMail.GetErrorMessage(m.llClearErrors) llSucces = .F. Endif Replace email_succes With m.llSucces, email_mesaj With Left(m.lcErrorMessage, 250) In cEmail If Inkey(0.5) = 27 && 'ESC' If AMESSAGEBOX('Doriti sa intrerupeti operatia?', 4 + 32, _Screen.Caption) = 6 Exit Endif Endif Endscan lcMesaj = '' SELECT cEmail SCAN lcMesaj = lcMesaj + 'Factura ' + TRANSFORM(numar_act) + ' din ' + TRANSFORM(data_act) + ' ' + ALLTRIM(NVL(client,'')) + ' : EMAIL ' + ; IIF(email_succes, 'SUCCES', 'EROARE: ' + ' ' + ALLTRIM(NVL(email_mesaj,''))) + CHR(13) + CHR(10) ENDSCAN AMESSAGEBOX(m.lcMesaj,0+64,_screen.Caption) *!* *!* Copy To (m.lcRaportEmail) Type Xl5 *!* OPEN_DEFAULT_APP(m.lcRaportEmail) Use In (Select('cEmail')) SELECT(m.lcSelect) ENDPROC && email_facturi *********************************************** * Listeaza factura, aviz, proforma, recapitulatie * Se apeleaza dupa scrierea in baza de date pe baza id_vanzare * Exista si listarea dupa emiterea facturii, din cursoarele locale * intoarce poDate pentru folosirea informatiilor despre factura (ex: poDate.email_factura in pluginul de trimitere email cu atasament factura) PROCEDURE listeaza_formular Lparameters lnIdVanzare, tlSilent, tlJustPDF, tcTipDocument, tlEFactura * tlSilent: listare fara previzualizare * tlJustPDF: listare doar pdf, fara previzualizare/imprimanta - pentru atasament la email * tcTipDocument: FACTURA/RECAPITULATIE/EFACTURA * tlEfactura: export xml eFactura Local lcNumeCursor, lnIdVanzare, lcTipDocument, lnIdFact, lnIdPart, loSoldClient Local lcCursor, lcProcedura, lcRaport, lcSql, lnSucces LOCAL loEx as Exception *:Global ocomanda *lcNumeCursor = tcNumeCursor Local lnTip Private poDate, poDateGestiuneDest, pnCod, pnid_comanda_aviz, pnIdGestiuneRetur Local lnDiscount, lnDiscountVal, lnProcTvav lcTipDocument = Iif(Type('tcTipDocument') = 'C' And !Empty(m.tcTipDocument), Upper(Alltrim(m.tcTipDocument)), 'FACTURA') && FACTURA/RECAPITULATIE/EFACTURA ********************************************************** * Creez cursoarele crsFacturaListare, crsDetaliiListare ********************************************************** Create Cursor crsFacturaListare (ales N(1) null, id_vanzare N(20) null, id_fact N(20), id_comanda N(20) null, dataora T(8) null, dataora_exp T(8) null, ; data_act D(8) null, sters N(1) null, dataoras T(8) null, numar_act N(14) null, serie_act C(10) null, tip N(5) null, ; id_part N(10) null, discount N(17,4) null, disc_fara_tva N(17,4) null, discount_evidentiat N(1) null, text_aditional M(4) null, ; facturat N(1) null, data_facturat T(8) null, explicatie C(240) null, altele C(200) null, client C(100) null, cod N(20) null, ; id_util I(4) null, utilizator C(30) null, utils C(30) null, utilfact C(30) null, delegat C(70) null, bidelegat C(30) null, ; cnpdelegat C(15) null, nume_agent C(70) null, nrinmat C(10) null, total_fara_tva N(20,4) null, total_tva N(20,4) null, total_cu_tva N(20,4) null, ; id_gestiune N(10) null, serie_chit C(20) null, nr_incasare N(10) null, incasat N(17,4) null, in_valuta N(1) null, sucursala C(100) null, ; id_ruta N(10) null, ruta C(100) null, curs N(20,4) null, multiplicator N(10) null, nume_val C(50) null, valuta C(50) null, id_valuta N(5) null, ; valval N(20,4) null, tvaval N(20,4) null, totval N(20,4) null, id_delegat N(10) null, id_agent N(10) null, id_masina N(10) null, valoarea N(20,4) null, ; nume_gestiune C(50) null, id_sectie N(5) null, sectie C(50) null, id_lucrare N(20) null, lucrare C(200) null, tip_incasare N(10) null, ; afisare_scadenta N(1) null, id_ordl N(10) null, tva_incasare N(1) null, listare_detaliata N(1) null, id_facturare N(10) null, adresa_facturare C(250) null, ; email_facturare C(100) null, adresa_client C(250) null, email_client C(100) null, adresa_beneficiar C(250) null, email_beneficiar C(100) null, ; id_beneficiar N(20) null, beneficiar C(100) null, tip_factura N(5) null, ctip_factura C(100) null, id_ctr N(10) null, contract C(100) null, eproforma N(1) null,tip_saft N(3) null,institutie_publica N(1) null) Create Cursor crsDetaliiListare (id_vanzare N(20) null, id_vanzare_det N(10) null, id_articol N(10) null, lot c(100) null, serie C(100) null, pret N(20,6) null, pret_val N(20,6) null, sters N(1) null, dataoras D(8) null, ; proc_tvav N(10,4) null, cantitate N(10,4) null, discount_unitar N(20,6) null, discount_unitar_val N(20,6) null, cont C(4) null, id_valuta N(10) null, id_gestiune N(20) null, ; pret_achizitie N(20,6) null, pret_cu_tva N(1) null, denumire C(250) null, explicatie M(4) null, um C(10) null, cod_um_iso C(5) null, nume_lista_preturi C(100) null, nume_gestiune C(50) null, ; utils C(30) null, curs N(20,4) null, multiplicator N(10) null, nume_val C(10) null, tip_valuta N(1) null, id_vanzare_set N(10) null, codmatf C(50) null, codmat C(50) null, ; codmatc C(50) null, codbare C(50) null, id_subgrupa N(5) null, subgrupa C(100) null, client C(70) null, id_jtva_coloana N(10) null, jtva_coloana C(100) null, ; id_jtva_coloana_ex N(10) null, jtva_coloana_ex C(100) null, id_ctr N(10) null, numar_contract C(50) null, taxcode N(6) null) TEXT TO lcSqlFactura TEXTMERGE NOSHOW select 0 as ales,id_vanzare,id_fact,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,id_util,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,valuta,id_valuta,valval,tvaval,totval,id_delegat,id_agent,id_masina,valoarea, nume_gestiune,id_sectie,sectie,id_lucrare,lucrare,tip_incasare,afisare_scadenta,id_ordl,tva_incasare,listare_detaliata, id_facturare,adresa_facturare,email_facturare,adresa_client,email_client,adresa_beneficiar,email_beneficiar,id_beneficiar, beneficiar, tip_factura, ctip_factura, id_ctr, contract,eproforma,tip_saft,institutie_publica from fact_vfacturi2 where id_vanzare = <> ENDTEXT TEXT TO lcSqlDetalii TEXTMERGE NOSHOW select id_vanzare, id_vanzare_det, id_articol, lot, serie, pret, pret_val, sters, dataoras, proc_tvav, cantitate, discount_unitar, discount_unitar_val, cont, id_valuta, id_gestiune, pret_achizitie, pret_cu_tva, denumire, explicatie, um, cod_um_iso, nume_lista_preturi, nume_gestiune, utils, curs, multiplicator, nume_val, tip_valuta, id_vanzare_set, codmatf, codmat, codmatc, codbare, id_subgrupa, subgrupa, client, id_jtva_coloana, jtva_coloana, id_jtva_coloana_ex, jtva_coloana_ex, id_ctr, numar_contract, taxcode from fact_vfacturi_detalii where id_vanzare = <> order by id_vanzare_det ENDTEXT llSucces = goExecutor.oExecuta(m.lcSqlFactura, 'cFacturaTemp') IF m.llSucces SELECT crsFacturaListare APPEND FROM DBF('cFacturaTemp') USE IN (SELECT('cFacturaTemp')) llSucces = goExecutor.oExecuta(m.lcSqlDetalii, 'cDetaliiTemp') IF m.llSucces SELECT crsDetaliiListare APPEND FROM DBF('cDetaliiTemp') USE IN (SELECT('cDetaliiTemp')) ENDIF && llSucces ENDIF && llSucces ******************************************* Select crsFacturaListare lnTip = tip pnCod = cod pnid_comanda_aviz = 0 poDate = Createobject("oDateFactura", 0, 0) Select crsFacturaListare lnIdFact = id_fact lnIdPart = id_part poDate.nid_vanzare = id_vanzare poDate.nRelistare = 1 poDate.tip = lnTip poDate.nract = numar_act poDate.serie_act = Alltrim(serie_act) poDate.dataact = Iif(Type('data_act') = 'T', Ttod(data_act), data_act) poDate.discount_evidentiat = discount_evidentiat poDate.text_aditional = Nvl(text_aditional, []) poDate.text_aditional = Strtran(poDate.text_aditional, CHR(170),Chr(13)+Chr(10),1,100,1) poDate.nrinmat = nrinmat poDate.nume_delegat = delegat poDate.bidelegat = bidelegat poDate.cnpdelegat = cnpdelegat poDate.dataora_exp = dataora_exp *!* poDate.listaid = Iif(poDate.tip = 2,Alltrim(Str(id_ctr)),Iif(Inlist(poDate.tip, 3, 21, 28, 42),Alltrim(Str(id_comanda)), [0])) poDate.listaid = Iif(Inlist(poDate.tip, 3, 21, 28, 42, 47), Alltrim(Str(id_comanda)), []) && id_comanda poDate.ntip_incasare = tip_incasare && modificare v 2.0.84 poDate.nr_incasare = nr_incasare poDate.serie_chit = Nvl(serie_chit, []) && modificare v 2.0.80 poDate.incasat = incasat poDate.in_valuta = in_valuta poDate.afisare_scadenta = afisare_scadenta && modificare ROACONTRACTE v 2.0.38 poDate.descriere = altele && modificare v 2.0.44 nr comanda/aviz poDate.id_ordl = id_ordl && modificare v 2.0.98 poDate.tva_incasare = tva_incasare && modificare v 2.2.0 poDate.id_facturare = id_facturare poDate.nListareDetaliata = listare_detaliata poDate.nListareSilentioasa = Iif(m.tlSilent, 1, 0) poDate.nListareJustPDF = Iif(m.tlJustPDF, 1, 0) poDate.nIdBeneficiar = id_beneficiar poDate.nTipFactura = tip_factura poDate.id_util = id_util poDate.eProforma = eproforma poDate.nEFactura = IIF(m.tlEFactura, 1, 0) && xml EFactura poDate.id_ctr = id_ctr poDate.contract = ALLTRIM(NVL(contract,'')) If poDate.in_valuta = 1 *!* modificare v 2.0.56 poDate.nume_valuta = nume_val poDate.Curs = Curs poDate.multiplicator = multiplicator poDate.totftvaconv = total_fara_tva poDate.tottvaconv = total_tva poDate.totctvaconv = poDate.totftvaconv + poDate.tottvaconv lnDiscountVal = discount lnDiscount = Round(lnDiscountVal * poDate.Curs / poDate.multiplicator, gnPc) Else lnDiscount = discount lnDiscountVal = 0 ENDIF poDate.nValVal = valval poDate.nTvaVal = tvaval poDate.nTotVal = totval poDate.cValuta = ALLTRIM(nume_val) poDate.Curs = Curs poDate.multiplicator = multiplicator poDate.tip_saft = NVL(tip_saft, 380) && factura initiala poDate.institutie_publica = NVL(institutie_publica, 0) Do Case Case m.lcTipDocument = 'FACTURA' If !Pemstatus(poDate, "id_comanda_aviz", 5) AddProperty(poDate, "id_comanda_aviz", 0) Endif If Inlist(poDate.tip, 3, 21, 28, 42, 47) && factura / aviz din comanda && modificare v 2.0.93 : am adaugat 47 Select crsFacturaListare poDate.id_comanda_aviz = id_comanda If Inlist(poDate.tip, 21, 28) lcSql = [select nr_fact from fact_vdetalii_fact where id_vanzare_aviz = ] + Alltrim(Str(poDate.nid_vanzare)) lnSucces = goExecutor.oExecute(lcSql, [crsnrfact]) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare") Else If Reccount('crsnrfact') > 0 Select crsnrfact AddProperty(poDate, [descriere2], Alltrim(nr_fact)) Endif Use In crsnrfact Endif Endif Select crsFacturaListare Else If poDate.tip = 4 && factura din aviz lcSql = [select max(v.id_comanda) as id_comanda from vanzari_coresp vc ] + ; [join vanzari v on vc.id_vanzare_aviz = v.id_vanzare where vc.sters = 0 and v.sters = 0 and vc.id_vanzare_fact =] + Alltrim(Str(poDate.nid_vanzare)) lnSucces = goExecutor.oSelect2Value(lcSql, @pnid_comanda_aviz) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare") poDate.id_comanda_aviz = 0 Else poDate.id_comanda_aviz = Nvl(pnid_comanda_aviz, 0) Endif Select crsFacturaListare poDate.descriere = Alltrim(altele) Endif Endif If Inlist(lnTip, 23, 25, 27, 30, 41, -6) && AVIZE SUBUNITATI 23,25,27,30; AVIZE SUBUNITATI RETUR 41, AVIZ RETUR VALORIC -6 poDateGestiuneDest = Createobject("oDateGestiune") poDateGestiuneDest.id_gestiune = id_gestiune If Inlist(m.lnTip, 41, -6) && AVIZE SUBUNITATI RETUR (GESTIUNEA DESTINATIE ESTE DEPOZIT, TREBUIE GESTIUNEA SURSA DIN VANZARI_DETALII) pnIdGestiuneRetur = 0 lcSql = [select min(id_gestiune) from vanzari_detalii where id_vanzare = ] + + Alltrim(Str(poDate.nid_vanzare)) lnSucces = goExecutor.oSelect2Value(lcSql, @pnIdGestiuneRetur) If lnSucces < 0 Messagebox(goExecutor.cEroare, 0 + 16, _Screen.Caption) Else poDateGestiuneDest.id_gestiune = m.pnIdGestiuneRetur poDate.id_client = m.pnIdGestiuneRetur Endif Endif Select crsDetaliiListare poDate.id_client = id_gestiune poDate.nume_client = nume_gestiune If !Isnull(pnCod) lcSql = [select r.id_responsabil, p.denumire as nresp from rul r left join nom_parteneri p on r.id_responsabil = p.id_part where r.cod = ] + Alltrim(Str(m.pnCod)) + [ and rownum = 1] * lcSql = [select /*+ index(rul IDX_RUL_005) */ r.id_responsabil, p.denumire as nresp from rul r left join nom_parteneri p on r.id_responsabil = p.id_part where r.cod = ?pnCod and rownum = 1] If Used('crsresp') Use In crsresp Endif lcCursor = [crsresp] lnSucces = goExecutor.oExecute(lcSql, lcCursor) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare") Return Else Select (lcCursor) poDate.id_responsabil = id_responsabil poDate.responsabil = nresp Use In (lcCursor) Endif If Inlist(lnTip, 23, 25) lcSql = [select id_partd from act where cod = ] + Alltrim(Str(m.pnCod)) + [ and scd = '357' ] + ; [and id_gestin = ] + Alltrim(Str(poDateGestiuneDest.id_gestiune)) + [ and rownum = 1] lnSucces = goExecutor.oExecute(lcSql, lcCursor) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare") Return Else If Reccount(lcCursor) > 0 Select (lcCursor) poDate.id_part_rez = id_partd Endif Use In (lcCursor) Endif Endif Endif Else poDate.id_client = id_part poDate.nume_client = client Endif If !Isnull(pnCod) If poDate.tip = -12 And !Isnull(poDate.id_ordl) lcSql = [select a.datascad,b.nr_dosar,c1.denumire as asigurator,d.inspector from ] + ; [(select MAX(id_lucrare) as id_lucrare,MAX(datascad) as datascad from act where cod = ] + Alltrim(Str(pnCod)) + [) a ] + ; [left join dev_ordl b on a.id_lucrare = b.id_lucrare and b.sters = 0 ] + ; [left join dev_nom_asiguratori c on b.id_asigurator = c.id_asigurator ] + ; [left join nom_parteneri c1 on c.id_part = c1.id_part ] + ; [left join dev_nom_inspectori d on b.id_inspector = d.id_inspector] lcCursor = [crsdatascad] If Used(lcCursor) Use In (lcCursor) Endif lnSucces = goExecutor.oExecute(lcSql, lcCursor) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare") Return Else Select (lcCursor) Scatter Name ocomanda Memo poDate.datascad = datascad poDate.tip_doc_394 = 'F' && F = factura, M = factura simplificata Use In (lcCursor) Endif Else lcSql = [select MAX(a.datascad) as datascad, MAX(f.tip_doc) as tip_doc from act a left join nom_fdoc f on a.id_fdoc = f.id_fdoc where cod = ] + Alltrim(Str(m.pnCod)) lcCursor = [crsdatascad] Use In (SELECT(m.lcCursor)) llSucces = goExecutor.oExecuta(lcSql, lcCursor) If !m.llSucces Return Else Select (m.lcCursor) poDate.datascad = datascad poDate.tip_doc_394 = NVL(tip_doc, 'F') && F = factura, M = factura simplificata Use In (SELECT(m.lcCursor)) ENDIF Endif Endif Use In (Select('crsfactura')) * Text TVA de afisat in partea de sus a facturii, daca este o singura explicatie de TVA pe toate liniile din crsDetaliiListare ADDPROPERTY(poDate, 'cTextTVA', '') SELECT distinct jtva_coloana_ex, jtva_coloana FROM crsDetaliiListare INTO CURSOR cTextTVATemp IF RECCOUNT('cTextTVATemp') = 1 SELECT cTextTVATemp GO TOP poDate.cTextTVA = IIF(!EMPTY(NVL(jtva_coloana_ex, '')), ALLTRIM(jtva_coloana_ex), ALLTRIM(NVL(jtva_coloana,''))) ENDIF USE IN (SELECT('cTextTVATemp')) * Soldul pana la factura inclusiv loSoldClient = GetSoldClient(m.lnIdPart, m.lnIdFact) poDate.sold_lei = loSoldClient.sold_lei poDate.sold_valuta = loSoldClient.sold_valuta Select crsDetaliiListare Calculate Max(proc_tvav) To lnProcTvav creeaza_facturacrs([crsfactura]) prelucreaza_facturacrs([crsDetaliiListare], [crsfactura], lnProcTvav, lnDiscount, lnDiscountVal) creeaza_cursor_seturi(pnCod) listeaza_ofacturare() && ofacturare.prg Use In (Select('crsfactura')) Use In (Select('crsfacturaset')) Case m.lcTipDocument = 'RECAPITULATIE' Select crsFacturaListare poDate.id_client = id_part poDate.nume_client = client Do Case Case poDate.tip = 51 && FACTURA ACN *!* TRY Do Case Case poDate.nTipFactura = 0 && TRANZIT do listeaza_recapitulatie_tranzit in proceduri_acnpro.prg Case poDate.nTipFactura = 1 && CHEIAJ do listeaza_recapitulatie_cheiaj in proceduri_acnpro.prg Case poDate.nTipFactura = 6 && PENALITATI do listeaza_recapitulatie_penalitati in proceduri_acnpro.prg Otherwise && CHIRII / APA / ALTELE do listeaza_recapitulatie_alte in proceduri_acnpro.prg ENDCASE *!* CATCH TO loEx *!* AMESSAGEBOX('Listati recapitulatia din programul "ROAACNPRO"!' + CHR(13) + CHR(10) + loEx.Message,0+48,_SCREEN.Caption) *!* ENDTRY OTHERWISE DO listeaza_recapitulatie WITH 'crsDetaliiListare', 'recapitulatie.frx' in ofacturare.prg * am facu si o recapitulatie generica, pentru ca am pus recapitulatia in meniul de listare pentru ACN ENDCASE Endcase Release pnCod, lnTip USE IN (SELECT('crsFacturaListare')) USE IN (SELECT('crsDetaliiListare')) Return poDate && intorc poDate pentru folosirea informatiilor despre factura (ex: poDate.email_factura in pluginul de trimitere email cu atasament factura) ENDPROC && listeaza_formular * Intoarce vanzari.id_fact pe baza vanzari.id_vanzare * Folosesc la GetSoldClient FUNCTION IdVanzare2IdFact LPARAMETERS tnIdVanzare PRIVATE pnIdVanzare LOCAL lnIdFact pnIdVanzare = m.tnIdVanzare lnIdFact = 0 llSucces = goExecutor.oSelecteaza2Value("Select MIN(id_fact) from vanzari where id_vanzare = ?pnIdVanzare", @lnIdFact) RETURN m.lnIdFact ENDFUNC *********************************** * Obtine sold client 4111 + 461 din balanta_parteneri sau din ireg_parteneri pana la numarul facturii * Pentru afisarea in raportul factura *********************************** FUNCTION GetSoldClient LPARAMETERS tnIdPart, tnIdFact * tnIdPart: Id partener client * tnIdFact : (optional) Id factura PRIVATE pnIdPart, pnIdFact Local loSold As "empty" Local lcSelect, lcSql, llSucces pnIdPart = tnIdPart pnIdFact = tnIdFact lcSelect = SELECT() loSold = CREATEOBJECT("empty") ADDPROPERTY(loSold, 'sold_lei', 0) ADDPROPERTY(loSold, 'sold_valuta', 0) lcSql = [{call pack_facturare.getSoldClient(?gnAn, ?gnLuna, ?pnIdPart, ?pnIdFact)}] If goExecutor.oExecuta(m.lcSql, 'cSoldClientTemp') SELECT cSoldClientTemp GO TOP loSold.sold_lei = NVL(sold_lei, 0) loSold.sold_valuta = NVL(sold_valuta, 0) ENDIF USE IN (SELECT('cSoldClientTemp')) SELECT (m.lcSelect) RETURN loSold ENDFUNC ******************************** INCEPUT: verifica_setari ************************************* Procedure verifica_setari LPARAMETERS tlSilent * tlSilent: .T. nu afiseaza mesajul, .F. (default) afiseaza mesajul Private pcMesaj Store "" To pcMesaj lcSql = [begin ] + gcS + [.pack_facturare.verificare_setari_program(?gnIdUtil,?@pcMesaj);] + ; [end;] lnSucces = goExecutor.oexecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(), 16, "Eroare") Else If !m.tlSilent AND !Isnull(m.pcMesaj) And !Empty(m.pcMesaj) amessagebox(pcMesaj, 48, "Atentie") Endif ENDIF RETURN m.pcMesaj Endproc ******************************** SFARSIT: verifica_setari ************************************* ************************************ INCEPUT: vanzare_materii_prime **************************************** Procedure vanzare_materii_prime Local lnIdSet gnTipGest = 2 Do vanzare1.mpr Endproc ************************************ SFARSIT: vanzare_materii_prime **************************************** *************************************** INCEPUT: vanzare_produse ******************************************* Procedure vanzare_produse gnTipGest = 4 Do vanzare2.mpr Endproc *************************************** SFARSIT: vanzare_produse ******************************************* *********************************** INCEPUT: vanzare_marfa_pret_achi *************************************** Procedure vanzare_marfa_pret_achi gnTipGest = 5 Do vanzare3.mpr Endproc *********************************** SFARSIT: vanzare_marfa_pret_achi *************************************** *********************************** INCEPUT: vanzare_marfa_pret_vanz *************************************** Procedure vanzare_marfa_pret_vanz gnTipGest = 6 Do vanzare4.mpr Endproc *********************************** SFARSIT: vanzare_marfa_pret_vanz *************************************** *********************************** INCEPUT: vanzare_marfa_pret_achi_vanz *************************************** Procedure vanzare_marfa_pret_achi_vanz gnTipGest = 7 Do vanzare5.mpr Endproc *********************************** SFARSIT: vanzare_marfa_pret_achi_vanz *************************************** ************************************* INCEPUT: selecteaza_gestiuni ***************************************** Procedure selecteaza_gestiuni If Used('nom_gestiuni') Use In nom_gestiuni Endif Do Case Case "-1" $ gcGestPermis lcSql = [select * from ] + gcS + [.vnom_GESTIUNI where inactiv = 0 ] + ; [and nr_pag = ?gnTipGest order by nume_gestiune] lcCursor = [nom_gestiuni] lnSucces = goExecutor.oexecute(lcSql, lcCursor) If lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare') Quit Endif goExecutor.oReset() Otherwise lcSql = [select * from ] + gcS + [.vnom_GESTIUNI where inactiv = 0 and nr_pag = ?gnTipGest ] + ; [ and id_gestiune in ] + ; [(select g.id_gestiune from ] + gcS + [.vgest_coresp_grupe_gestiuni g join ] + ; gcS + [.vgest_coresp_util_grupe u on g.id_grupe = u.id_grupe and u.id_util = ?gnIdUtil) order by nume_gestiune] lcCursor = [nom_gestiuni] lnSucces = goExecutor.oexecute(lcSql, lcCursor) If lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, 'Eroare') Quit Endif goExecutor.oReset() Endcase Endproc && selecteaza_gestiuni ************************************* SFARSIT: selecteaza_gestiuni ***************************************** ************************************* INCEPUT: creeaza_cursor_seturi ***************************************** Procedure creeaza_cursor_seturi Lparameters tnCod *!* Dimension laStructura(1,18) lcCursorTemp = [crsfacturasettemp] lcCursor = [crsfacturaset] If Used(lcCursorTemp) Use In (lcCursorTemp) Endif If Used(lcCursor) Use In (lcCursor) Endif *!* modificare v 2.0.84 *!* lcSql = [select c.id_vanzare_set as id_set_fact,Min(b.id_vanzare_det) as id_temp,c.denumire,c.explicatie,c.cantitate,c.um,c.serie,c.pret,Nvl(c.discount_unitar,0) as discount_unitar,c.pret_cu_tva ] + ; *!* [from ] + gcS + [.vanzari a ] + ; *!* [left join ] + gcS + [.vanzari_detalii b on a.id_vanzare = b.id_vanzare and b.sters = 0 ] + ; *!* [left join ] + gcS + [.vanzari_seturi c on b.id_vanzare_set = c.id_vanzare_set ] + ; *!* [where a.cod = ] + Alltrim(Str(tnCod)) + [ and b.id_vanzare_set is not null ] + ; *!* [group by c.id_vanzare_set,c.denumire,c.explicatie,c.cantitate,c.um,c.serie,c.pret,Nvl(c.discount_unitar,0),c.pret_cu_tva] lcSql = [{call pack_facturare.citeste_vanzari_seturi(] + Alltrim(Str(tnCod)) + [)}] *!* modificare v 2.0.84 ^ lnSucces = goExecutor.oexecute(lcSql, lcCursorTemp) Do Case Case lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Return Case Reccount(lcCursorTemp) = 0 Use In (lcCursorTemp) Otherwise *!* modificare v 2.0.56 *!* Afields(laStructura,[crsfactura]) *!* Create Cursor (lcCursor) From Array laStructura copiaza_structura_cursor([crsfactura], lcCursor) *!* modificare v 2.0.56 ^ *!* *!* Insert Into (lcCursor) ; *!* *!* Select a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* *!* Max(b.proc_tvav) As proc_tvav,; *!* *!* Sum(b.valftva) As valftva,Sum(b.valtva) As valtva,; *!* *!* Sum(b.valdiscountftva) As valdiscountftva,Sum(b.valdiscounttva) As valdiscounttva,; *!* *!* Sum(b.valdiminuatftva) As valdiminuatftva,; *!* *!* Sum(b.valdiminuattva) As valdiminuattva,Sum(b.valdiminuatctva) As valdiminuatctva,; *!* *!* Sum(b.vvalftva) As vvalftva,Sum(b.vvaltva) As vvaltva,Sum(b.vvalctva) As vvalctva,; *!* *!* Sum(b.vdiscountftva) As vdiscountftva,Sum(b.vdiscountctva) As vdiscountctva,; *!* *!* Sum(b.vvaldiscountftva) As vvaldiscountftva,Sum(b.vvaldiscounttva) As vvaldiscounttva,; *!* *!* Sum(b.vvaldiscountctva) As vvaldiscountctva,Sum(b.vvaldiminuatftva) As vvaldiminuatftva,; *!* *!* Sum(b.vvaldiminuattva) As vvaldiminuattva,Sum(b.vvaldiminuatctva) As vvaldiminuatctva,; *!* *!* Round(Sum(b.valftva)/a.cantitate,gnPc) As pretftva,Round(Sum(b.valtva)/a.cantitate,gnPc) As tva,; *!* *!* Round(Sum(b.valdiscountftva)/a.cantitate,gnPc) As discountftva,; *!* *!* Round(Sum(b.valdiscounttva)/a.cantitate,gnPc) As discounttva,; *!* *!* Round(Sum(b.vvalftva)/a.cantitate,gnPc) As vpretftva,; *!* *!* ROUND(Sum(b.vvaltva)/a.cantitate,gnPc) As vtva,; *!* *!* Round(Sum(b.vvalctva) / a.cantitate,gnPc) As vpretctva,; *!* *!* ROUND(Sum(b.vvaldiscountftva) / a.cantitate,gnPc) As vdiscountftva,; *!* *!* Round(Sum(b.vvaldiscountctva) / a.cantitate,gnPc) As vdiscountctva,; *!* *!* ROUND(Sum(b.vvaldiscountftva) / a.cantitate,gnPc) - Round(Sum(b.vvaldiscountctva) / a.cantitate,gnPc) As vdiscounttva ; *!* *!* FROM (lcCursorTemp) a Left Join crsfactura b On a.id_set_fact = b.id_set_fact ; *!* *!* Group By a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie *!* Insert Into (lcCursor) (id_set_fact,denumire,explicatie,cantitate,um,serie,; *!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,; *!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,; *!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva) ; *!* Select a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* b.proc_tvav,; *!* Round(b.valftva/a.cantitate,gnPc) As pretftva,; *!* b.valftva,b.valtva,; *!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,; *!* b.valdiscountftva,b.valdiscounttva,b.valdiminuatftva,b.valdiminuattva,; *!* Round(b.vvalftva/a.cantitate,gnPc) As vpretftva,b.vvalftva,b.vvaltva,; *!* b.vdiscountftva,b.vvaldiscountftva,b.vvaldiscounttva,b.vvaldiminuatftva,; *!* b.vvaldiminuattva ; *!* From (lcCursorTemp) a ; *!* Left Join (Select Max(proc_tvav) As proc_tvav,; *!* Sum(valftva) As valftva,Sum(valtva) As valtva,; *!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,; *!* Sum(valdiminuatftva) As valdiminuatftva,; *!* Sum(valdiminuattva) As valdiminuattva,; *!* Sum(vvalftva) As vvalftva,Sum(vvaltva) As vvaltva,; *!* Sum(vdiscountftva) As vdiscountftva,; *!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva,; *!* Sum(vvaldiminuatftva) As vvaldiminuatftva,; *!* Sum(vvaldiminuattva) As vvaldiminuattva,id_set_fact From crsfactura Where id_set_fact <> 0 ; *!* GROUP By id_set_fact) b On a.id_set_fact = b.id_set_fact *!* modificare v 2.0.56 : am discount_unitar pe articolul din set *!* Insert Into (lcCursor) (id_set_fact,id_temp,denumire,explicatie,cantitate,um,serie,; *!* proc_tvav,id_jtva_coloana,gestionabil,pretftva,valftva,valtva,discountftva,valdiscountftva,; *!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,; *!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva) ; *!* Select a.id_set_fact,a.id_temp,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* b.proc_tvav,b.id_jtva_coloana,b.gestionabil,IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,; *!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,; *!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,; *!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,; *!* b.valdiscountftva,b.valdiscounttva,; *!* ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as valdiminuatftva,; *!* ROUND(ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,; *!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,; *!* IIF(poDate.in_valuta=0,0,ROUND(b.vvaldiscountftva/a.cantitate,gnPc)) as vdiscountftva,; *!* b.vvaldiscountftva,b.vvaldiscounttva,; *!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as vvaldiminuatftva,; *!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva ; *!* From (lcCursorTemp) a ; *!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,; *!* Max(proc_tvav) As proc_tvav,Min(id_jtva_coloana) as id_jtva_coloana,Max(gestionabil) as gestionabil,; *!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,; *!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva ; *!* From crsfactura Where id_set_fact <> 0 ; *!* GROUP By 1,2) b On a.id_set_fact = b.id_set_fact *!* modificare v 2.0.67 : am adaugat id_ctr, numar_contract *!* modificare v 2.0.84 *!* Insert Into (lcCursor) (id_set_fact,id_temp,denumire,explicatie,cantitate,um,serie,; *!* proc_tvav,id_jtva_coloana,gestionabil,pretftva,valftva,valtva,discountftva,valdiscountftva,; *!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,; *!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva,id_ctr,numar_contract) ; *!* Select a.id_set_fact,a.id_temp,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* b.proc_tvav,b.id_jtva_coloana,b.gestionabil,; *!* IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,; *!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,; *!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,; *!* IIF(poDate.in_valuta=0,a.discount_unitar,ROUND(a.discount_unitar*b.curs,gnPc)) As discountftva,; *!* Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc) As valdiscountftva,; *!* Round(Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valdiscounttva,; *!* ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc) as valdiminuatftva,; *!* ROUND(ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,; *!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,; *!* IIF(poDate.in_valuta=0,0,a.discount_unitar) as vdiscountftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(a.discount_unitar*a.cantitate,gnPc)) as vvaldiscountftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.discount_unitar*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaldiscounttva,; *!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc) as vvaldiminuatftva,; *!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva, ; *!* b.id_ctr,b.numar_contract ; *!* From (lcCursorTemp) a ; *!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,id_ctr,numar_contract,; *!* Max(proc_tvav) As proc_tvav,Min(id_jtva_coloana) as id_jtva_coloana,Max(gestionabil) as gestionabil ; *!* From crsfactura Where id_set_fact <> 0 ; *!* GROUP By 1,2,3,4) b On a.id_set_fact = b.id_set_fact prelucreaza_facturacrs(lcCursorTemp, lcCursor, 0, 0, 0) *!* modificare v 2.0.84 ^ *!* modificare v 2.0.56 ^ Endcase If Used(lcCursorTemp) Use In (lcCursorTemp) Endif Endproc && creeaza_cursor_seturi ************************************* SFARSIT: creeaza_cursor_seturi ***************************************** ********************************* INCEPUT: creeaza_cursor_seturi_proforme ************************************* Procedure creeaza_cursor_seturi_proforme Lparameters tnIdProforma *!* Dimension laStructura(1,18) lcCursorTemp = [crsfacturasettemp] lcCursor = [crsfacturaset] If Used(lcCursorTemp) Use In (lcCursorTemp) Endif If Used(lcCursor) Use In (lcCursor) Endif *!* modificare v 2.0.84 *!* lcSql = [select Min(a.id_proforma_det) as id_temp,b.id_proforma_set as id_set_fact,b.denumire,b.explicatie,b.cantitate,b.um,b.serie,b.pret,Nvl(b.discount_unitar,0) as discount_unitar ] + ; *!* [from ] + gcS + [.proforme_detalii a ] + ; *!* [left join ] + gcS + [.proforme_seturi b on a.id_proforma_set = b.id_proforma_set ] + ; *!* [where a.id_proforma = ] + Alltrim(Str(tnIdProforma)) + [ and a.id_proforma_set is not null ] + ; *!* [and a.sters = 0 ] + ; *!* [group by b.id_proforma_set,b.denumire,b.explicatie,b.cantitate,b.um,b.serie,b.pret,Nvl(b.discount_unitar,0)] lcSql = [{call pack_facturare.citeste_proforme_seturi(] + Alltrim(Str(tnIdProforma)) + [)}] *!* modificare v 2.0.84 ^ lnSucces = goExecutor.oexecute(lcSql, lcCursorTemp) Do Case Case lnSucces < 0 amessagebox(goExecutor.cEroare, 0 + 16, "Eroare") Return Case Reccount(lcCursorTemp) = 0 Use In (lcCursorTemp) Otherwise *!* modificare v 2.0.56 *!* Afields(laStructura,[crsfactura]) *!* Create Cursor (lcCursor) From Array laStructura copiaza_structura_cursor([crsfactura], lcCursor) *!* modificare v 2.0.56 ^ *!* Insert Into (lcCursor) (id_set_fact,denumire,explicatie,cantitate,um,serie,; *!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,; *!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,; *!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva) ; *!* Select a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* b.proc_tvav,; *!* Round(b.valftva/a.cantitate,gnPc) As pretftva,; *!* b.valftva,b.valtva,; *!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,; *!* b.valdiscountftva,b.valdiscounttva,b.valdiminuatftva,b.valdiminuattva,; *!* Round(b.vvalftva/a.cantitate,gnPc) As vpretftva,b.vvalftva,b.vvaltva,; *!* b.vdiscountftva,b.vvaldiscountftva,b.vvaldiscounttva,b.vvaldiminuatftva,; *!* b.vvaldiminuattva ; *!* FROM (lcCursorTemp) a ; *!* Left Join (Select Max(proc_tvav) As proc_tvav,; *!* Sum(valftva) As valftva,Sum(valtva) As valtva,; *!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,; *!* Sum(valdiminuatftva) As valdiminuatftva,; *!* Sum(valdiminuattva) As valdiminuattva,; *!* Sum(vvalftva) As vvalftva,Sum(vvaltva) As vvaltva,; *!* Sum(vdiscountftva) As vdiscountftva,; *!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva,; *!* Sum(vvaldiminuatftva) As vvaldiminuatftva,; *!* Sum(vvaldiminuattva) As vvaldiminuattva,id_set_fact From crsfactura Where id_set_fact <> 0 ; *!* GROUP By id_set_fact) b On a.id_set_fact = b.id_set_fact *!* modificare v 2.0.56 : am discount_unitar pe articolul din set *!* Insert Into (lcCursor) (id_temp,id_set_fact,denumire,explicatie,cantitate,um,serie,; *!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,; *!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,; *!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva) ; *!* Select a.id_temp,a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* b.proc_tvav,IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,; *!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,; *!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,; *!* Round(b.valdiscountftva/a.cantitate,gnPc) As discountftva,; *!* b.valdiscountftva,b.valdiscounttva,; *!* ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as valdiminuatftva,; *!* ROUND(ROUND((Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))-Round(b.valdiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,; *!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,; *!* IIF(poDate.in_valuta=0,0,ROUND(b.vvaldiscountftva/a.cantitate,gnPc)) as vdiscountftva,; *!* b.vvaldiscountftva,b.vvaldiscounttva,; *!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc) as vvaldiminuatftva,; *!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-Round(b.vvaldiscountftva/a.cantitate,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva ; *!* From (lcCursorTemp) a ; *!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,; *!* Max(proc_tvav) As proc_tvav,; *!* Sum(valdiscountftva) As valdiscountftva,Sum(valdiscounttva) As valdiscounttva,; *!* Sum(vvaldiscountftva) As vvaldiscountftva,Sum(vvaldiscounttva) As vvaldiscounttva ; *!* From crsfactura Where id_set_fact <> 0 ; *!* GROUP By 1,2) b On a.id_set_fact = b.id_set_fact *!* modificare v 2.0.84 *!* modificare v 2.0.84 *!* Insert Into (lcCursor) (id_temp,id_set_fact,denumire,explicatie,cantitate,um,serie,; *!* proc_tvav,pretftva,valftva,valtva,discountftva,valdiscountftva,; *!* valdiscounttva,valdiminuatftva,valdiminuattva,vpretftva,; *!* vvalftva,vvaltva,vdiscountftva,vvaldiscountftva,vvaldiscounttva,; *!* vvaldiminuatftva,vvaldiminuattva) ; *!* Select a.id_temp,a.id_set_fact,a.denumire,a.explicatie,a.cantitate,a.um,a.serie,; *!* b.proc_tvav,; *!* IIF(poDate.in_valuta=0,a.pret,ROUND(a.pret*b.curs,gnPc)) As pretftva,; *!* Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc) As valftva,; *!* Round(Round(Iif(poDate.in_valuta=0,a.Pret,Round(a.Pret*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valtva,; *!* IIF(poDate.in_valuta=0,a.discount_unitar,ROUND(a.discount_unitar*b.curs,gnPc)) As discountftva,; *!* Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc) As valdiscountftva,; *!* Round(Round(Iif(poDate.in_valuta=0,a.discount_unitar,Round(a.discount_unitar*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) As valdiscounttva,; *!* ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc) as valdiminuatftva,; *!* ROUND(ROUND(Iif(poDate.in_valuta=0,a.Pret-a.discount_unitar,Round((a.Pret-a.discount_unitar)*b.Curs,gnPc))*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as valdiminuattva,; *!* IIF(poDate.in_valuta=0,0,a.pret) as vpretftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(a.pret*a.cantitate,gnPc)) as vvalftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.pret*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaltva,; *!* IIF(poDate.in_valuta=0,0,a.discount_unitar) as vdiscountftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(a.discount_unitar*a.cantitate,gnPc)) as vvaldiscountftva,; *!* IIF(poDate.in_valuta=0,0,ROUND(ROUND(a.discount_unitar*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc)) as vvaldiscounttva,; *!* ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc) as vvaldiminuatftva,; *!* ROUND(ROUND(Iif(poDate.in_valuta=0,0,a.Pret-a.discount_unitar)*a.cantitate,gnPc)*(b.proc_tvav-1),gnPc) as vvaldiminuattva ; *!* From (lcCursorTemp) a ; *!* Left Join (Select id_set_fact,IIF(poDate.in_valuta=0,1,poDate.curs) as curs,; *!* Max(proc_tvav) As proc_tvav ; *!* From crsfactura Where id_set_fact <> 0 ; *!* GROUP By 1,2) b On a.id_set_fact = b.id_set_fact prelucreaza_facturacrs(lcCursorTemp, lcCursor, 0, 0, 0) *!* modificare v 2.0.84 ^ *!* modificare v 2.0.56 ^ Endcase If Used(lcCursorTemp) Use In (lcCursorTemp) Endif Endproc && creeaza_cursor_seturi_proforme ********************************* SFARSIT: creeaza_cursor_seturi_proforme ************************************** *!* ******************************** INCEPUT: actualizeaza_optiuni_program ************************************* *!* Function actualizeaza_optiuni_program *!* Lparameters tnTip *!* && 0 - toate *!* && 1 - fara id-uri *!* Local llReturn *!* Store .F. To llReturn *!* If Empty(tnTip) *!* lcFiltru = [] *!* Else *!* lcFiltru = [ and varname not like 'ID%'] *!* Endif *!* lcSql=[SELECT VARTYPE,VARNAME,VARVALUE FROM ] + gcS + [.OPTIUNI WHERE PROGRAM='] + Upper(Alltrim(gcNumeProgram)) + ['] + ; *!* lcFiltru *!* lcCursor=[crsoptiuni] *!* lnSucces=goExecutor.oexecute(lcSql,lcCursor) *!* If lnSucces<0 *!* amessagebox(goExecutor.cEroare,0+48,"Eroare") *!* Else *!* Select crsoptiuni *!* Scan *!* lcvartype=Alltrim(Upper(Vartype)) *!* lcvarname=Alltrim(Upper(varname)) *!* Do Case *!* Case lcvartype = "CHARACTER" *!* luvarvalue = Alltrim(varvalue) *!* gc&lcvarname. = luvarvalue *!* Case lcvartype = "NUMERIC" *!* luvarvalue = Val(varvalue) *!* gn&lcvarname. = luvarvalue *!* Endcase *!* Endscan *!* Use In crsoptiuni *!* llReturn = .T. *!* Endif *!* Return llReturn *!* Endfunc && actualizeaza_optiuni_program *!* ******************************** SFARSIT: actualizeaza_optiuni_program ************************************* ******************************************* INCEPUT:caut_locatie_restaurant ******************************************* Function caut_locatie_restaurant Local loCauta Store "" To loCauta pcselect = [select id_rest_locatie,locatie FROM ] + gcS + [.rest_vcoresp_util_locatii] pcfiltru = [1=2] pcschema = [''] pcorder = [locatie] pccoloane = [locatie] pcTitlu = [Alegeti locatia] pcTitluColoane = [Locatie] pcFiltruOriginal = [id_util_rest = ] + Alltrim(Str(gnIdUtil)) lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta Endfunc ******************************************* SFARSIT: caut_locatie_restaurant ******************************************* ******************************************* INCEPUT:caut_comanda_client ******************************************* Function caut_comanda_client Lparameters tnIdPart Local loCauta Store "" To loCauta If !Empty(tnIdPart) lcFiltruClient = [ and id_part = ] + Alltrim(Str(tnIdPart)) Else lcFiltruClient = [] Endif pcselect = [select id_comanda, data_comanda, nr_comanda FROM vcomenzi ] pcfiltru = [1=2] pcschema = [''] pcorder = [data_comanda,nr_comanda] pccoloane = [nr_comanda,data_comanda] pcTitlu = [Alegeti comanda] pcTitluColoane = [Nr. comanda,Data comanda] pcFiltruOriginal = [facturat = 0 and interna in (2,5) ] + lcFiltruClient + gcCondSucursala lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta Endfunc ******************************************* SFARSIT: caut_comanda_client ******************************************* ******************************************* INCEPUT:caut_comanda_clienti ******************************************* * Afisez toate comenzile, indiferent de client * Este posibil sa fac comanda pe un client si sa fac facturi pe persoana fizica si pe persoana juridica pentru acel client * Arat comenzile ordonate dupa client si numar comanda * Este folosita in ROAFACTURARE > frm_date_factura.do_cauta_comanda Function caut_comanda_clienti Lparameters tnIdPart PRIVATE pnIdPart pnIdPart = IIF(!EMPTY(NVL(m.tnIdPart,0)), m.tnIdPart, 0) Local loCauta Store "" To loCauta If !Empty(tnIdPart) lcFiltruClient = [ and id_part = ] + Alltrim(Str(tnIdPart)) Else lcFiltruClient = [] Endif pcselect = [select decode(id_part, ?pnIdpart, 1, 2) as ord, id_part, nume, id_comanda, data_comanda, nr_comanda FROM vcomenzi] pcfiltru = [1=2] pcschema = [''] pcorder = [ord, nume,data_comanda,nr_comanda] pccoloane = [nr_comanda,data_comanda,nume] pcTitlu = [Alegeti comanda] pcTitluColoane = [Nr. comanda,Data comanda,Client] pcFiltruOriginal = [facturat = 0 and interna in (2,5) ] + gcCondSucursala lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta Endfunc ******************************************* SFARSIT: caut_comanda_clienti ******************************************* ******************************************* INCEPUT:caut_comanda_gestiune ******************************************* Function caut_comanda_gestiune Lparameters tnIdGestiune Local loCauta Store "" To loCauta If !Empty(tnIdGestiune) lcFiltruGestiune = [ and id_gestiune = ] + Alltrim(Str(tnIdGestiune)) Else lcFiltruGestiune = [] Endif pcselect = [select id_comanda, data_comanda, nr_comanda FROM ] + gcS + [.vcomenzi ] pcfiltru = [1=2] pcschema = [''] pcorder = [data_comanda,nr_comanda] pccoloane = [nr_comanda,data_comanda] pcTitlu = [Alegeti comanda] pcTitluColoane = [Nr. comanda,Data comanda] pcFiltruOriginal = [facturat = 0 and interna = 3 ] + lcFiltruGestiune + gcCondSucursala lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta Endfunc ******************************************* SFARSIT: caut_comanda_gestiune ******************************************* ***************************************** INCEPUT:caut_contract_facturare ******************************************* Function caut_contract_facturare Lparameters tnIdPart, tcSirTipFacturare Local loCauta, lcSelect, lcFiltru, lcSchema, lcColoane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProg, llToateInreg, lcOrder, lcFiltruSuplimentar, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn Store "" To loCauta *!* modificare v 2.0.67 : am adaugat tcSirTipFacturare si lcFiltruSuplimentar If !Empty(tcSirTipFacturare) lcFiltruSuplimentar = [ and opt_facturare in (] + Alltrim(tcSirTipFacturare) + [)] Else lcFiltruSuplimentar = [] Endif If !Empty(tnIdPart) lcFiltruSuplimentar = lcFiltruSuplimentar + [ and id_part = ] + Alltrim(Str(tnIdPart)) Else lcFiltruSuplimentar = [] Endif lcSelect = [select id_ctr, contract, numar, data, denumire, scadenta_incasare, opt_facturare, text_standard, afisare_scadenta FROM fact_vcontracte ] lcFiltru = [1=2] lcSchema = [''] lcOrder = [data,numar] lcColoane = [numar,data,denumire] lcTitlu = [Alegeti contractul (mouse-click pe numar sau apasati SPACE)] lcTitluColoane = [Numar,Data,Denumire] lcFiltruOriginal = [2=2] + gcCondSucursala + lcFiltruSuplimentar lcNumeProc = [contracte] + ';' + IIF(!EMPTY(m.tnIdPart), ALLTRIM(STR(m.tnIdPart)), '0') + ',-1' llToateInreg = .F. *!* modificare v 2.0.67 *!* loCauta = cauta_alfa(pcselect,pcfiltru,pcschema,pcorder,pccoloane,pcTitlu,pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) lcPrimaColoana = [numar] lnPornire = 1 lnTipReturn = 1 && 1 = Cursor XML lcIdColumn = [id_ctr] loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateInreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn) *!* modificare v 2.0.67 ^ Release lcSelect, lcFiltru, lcSchema, lcColoane, lcTitlu, lcTitluColoane, lcFiltruOriginal, lcNumeProg, llToateInreg, lcOrder, lcFiltruSuplimentar, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn Return loCauta Endfunc ***************************************** SFARSIT: caut_contract_facturare ******************************************* ******************************************* INCEPUT: caut_avize ******************************************* Function caut_avize Lparameters tnIdPart Store "" To loCauta lcFiltruPart = Iif(Empty(tnIdPart), [], [ and a.id_part = ] + Alltrim(Str(tnIdPart))) lcFiltru = [1=2] lcSchema = [serie_act C(50),numar_act N(20),data_act d,dataora t,id_vanzare N(20), id_comanda n(20)] lcOrder = [dataora] lcColoane = [serie_act,numar_act,data_act,dataora] lcTitlu = [Alegeti avizele (mouse-click pe numar sau apasati SPACE)] lcTitluColoane = [Serie act,Numar act,Data,Data inreg.] llMultipleArticles = .T. lcSelect = [select a.serie_act,a.numar_act,a.data_act,a.dataora,a.id_vanzare,] + ; [(case when a.tip in (21,42) then a.id_comanda else 0 end) as id_comanda from ] + gcS + [.vanzari a ] lcFiltruOriginal = [a.sters=0 and a.tip in (21,22,26,42) and a.facturat = 0] + Strtran(gcCondSucursala, [id_sucursala], [a.id_sucursala]) + ; lcFiltruPart ** 21 - catre clienti din comanda ** 22 - catre clienti din lista ** 23 - transfer catre subunitati din lista ** 24 - aviz de retur ** 25 - transfer catre subunitati din comanda ** 26 - catre clienti din contract ** 27 - transfer catre subunitati pe baza de lucrare ** 28 - catre clienti debitori din comanda ** 29 - catre clienti debitori din lista ** 30 - transfer catre subunitati pe baza de NIR ** 41 - retur transfer catre subunitati lista pret ** 42 - catre clienti custodie pe baza de comanda ** fara 47, deoarece acele avize le descarc prin alta optiune lcNumeProc = [] llToateIreg = .F. lcPrimaColoana = [numar_act] lnPornire = 1 lnTipReturn = Iif(llMultipleArticles, 1, 0) lcIdColumn = "id_vanzare" loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn) Return loCauta Endfunc && caut_avize ******************************************* SFARSIT: caut_avize ******************************************* ******************************************* INCEPUT: caut_facturi_client ******************************************* Function caut_facturi_client Lparameters tnIdPart Local loCauta Store "" To loCauta If !Empty(tnIdPart) lcFiltruClient = [ and id_part = ] + Alltrim(Str(tnIdPart)) Else lcFiltruClient = [] Endif pcselect = [select id_fact,dataact,serie_act,nract from ] + gcS + [.ireg_parteneri ] pcfiltru = [1=2] pcschema = [''] pcorder = [dataact,serie_act,nract] pccoloane = [dataact,serie_act,nract] pcTitlu = [Alegeti factura] pcTitluColoane = [Data factura,Serie act,Nr. factura] pcFiltruOriginal = [an = ?gnAn and luna = ?gnLuna and cont = ?gcCont411 ] + ; [and valdebit + precvaldeb <> precvalcred + valcredit and id_valuta <> 0 ] + lcFiltruClient + ; + gcCondSucursala lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta ******************************************* SFARSIT: caut_facturi_client ******************************************* *************************************** INCEPUT: caut_facturi_multiple_client *************************************** Function caut_facturi_multiple_client Lparameters tnIdPart, tnInValuta, tnIdValuta, tlFacturiMultiple Local loCauta Store "" To loCauta lcFiltruPart = Iif(Empty(tnIdPart), [], [ and id_part = ] + Alltrim(Str(tnIdPart))) lcFiltruValuta = Iif(Empty(tnInValuta), [ and in_valuta = 0], [ and in_valuta = 1 and id_valuta = ] + Alltrim(Str(tnIdValuta))) lcFiltru = [1=2] lcSchema = [serie_act C(50),numar_act N(20),data_act d,dataora t,id_vanzare N(20)] lcOrder = [dataora] lcColoane = [serie_act,numar_act,data_act,dataora] If Empty(tlFacturiMultiple) lcTitlu = [Alegeti factura] Else lcTitlu = [Alegeti facturile (mouse-click pe numar sau apasati SPACE)] Endif lcTitluColoane = [Serie act,Numar act,Data,Data inreg.] lcSelect = [select serie_act,numar_act,data_act,dataora,id_vanzare ] + ; [from ] + gcS + [.fact_vfacturi ] lcFiltruOriginal = [sters=0 and tip in (1,2,3,4,5,6,10,-1,-2,-3,-4,-11) ] + gcCondSucursala + ; lcFiltruPart + lcFiltruValuta lcNumeProc = [] llToateIreg = .F. lcPrimaColoana = [numar_act] lnPornire = 1 lnTipReturn = Iif(tlFacturiMultiple, 1, 0) lcIdColumn = "id_vanzare" loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn) Return loCauta *************************************** SFARSIT: caut_facturi_multiple_client *************************************** *************************************** INCEPUT: caut_facturi_multiple_client_articol *************************************** Function caut_facturi_multiple_client_articol Lparameters tnIdPart, tnInValuta, tnIdValuta, tlFacturiMultiple, tnIdArticol Local loCauta loCauta = "" PRIVATE pnIdArticol, pnIdPart, pnIdValuta pnIdArticol = tnIdArticol pnIdPart = tnIdPart pnIdValuta = tnIdValuta lcFiltruPart = Iif(Empty(tnIdPart), [], [ and a.id_part = ?pnIdPart]) lcFiltruValuta = Iif(Empty(tnInValuta), [ and a.in_valuta = 0], [ and a.in_valuta = 1 and b.id_valuta = ?pnIdValuta]) lcFiltru = [1=2] lcSchema = [serie_act C(50),numar_act N(20),data_act d,dataora t,id_vanzare N(20)] lcOrder = [a.data_act desc, a.numar_act desc, a.dataora desc] lcColoane = [serie_act,numar_act,data_act,dataora] If Empty(tlFacturiMultiple) lcTitlu = [Alegeti factura] Else lcTitlu = [Alegeti facturile (mouse-click pe numar sau apasati SPACE)] Endif lcTitluColoane = [Serie act,Numar act,Data,Data inreg.] lcSelect = [select a.serie_act,a.numar_act,a.data_act,a.dataora,a.id_vanzare ] + ; [from vanzari a join vanzari_detalii b on a.id_vanzare = b.id_vanzare and b.id_articol = ?pnIdArticol ] lcFiltruOriginal = [a.sters=0 and a.tip in (1,2,3,4,5,6,10,-1,-2,-3,-4,-11) ] + gcCondSucursala + ; lcFiltruPart + lcFiltruValuta lcNumeProc = [] llToateIreg = .F. lcPrimaColoana = [numar_act] lnPornire = 1 lnTipReturn = Iif(tlFacturiMultiple, 1, 0) lcIdColumn = "id_vanzare" loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcOrder, lcColoane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal, lcPrimaColoana, lnPornire, lnTipReturn, lcIdColumn) Return loCauta *************************************** SFARSIT: caut_facturi_multiple_client *************************************** ******************************************* INCEPUT: caut_gestiune_sursa ******************************************* Function caut_gestiune_sursa Lparameters tcListaTipGest Store "" To loCauta pcFiltruOriginal = [a.id_util = ?gnIdUtil and a.sters = 0 and b.sters = 0 and c.sters = 0] If !Empty(tcListaTipGest) pcFiltruOriginal = pcFiltruOriginal + [ and c.nr_pag in (] + Alltrim(tcListaTipGest) + [)] Endif pcselect = [select distinct c.nume_gestiune, b.id_gestiune, c.cont, c.acont ] + ; [from ] + gcS + [.gest_coresp_util_grupe a ] + ; [left join ] + gcS + [.gest_coresp_grupe_gestiuni b on a.id_grupe = b.id_grupe ] + ; [left join ] + gcS + [.nom_gestiuni c on b.id_gestiune = c.id_gestiune ] pcfiltru = [1=2] pcschema = [] pcorder = [nume_gestiune,cont,acont] pccoloane = [nume_gestiune,cont,acont] pcTitlu = [Alegeti gestiunea] pcTitluColoane = [Gestiune,Cont,Acont] lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta Endfunc ******************************************* SFARSIT: caut_gestiune_sursa ******************************************* **************************************** INCEPUT: caut_utilizator_facturare **************************************** Function caut_utilizator_facturare Store "" To loCauta pcFiltruOriginal = [a.id_util in (select distinct id_util from ] + gcS + [.vanzari where sters = 0] + ; gcCondSucursala + [)] pcselect = [select a.id_util,a.utilizator from syn_vutilizatori a ] pcfiltru = [1=2] pcschema = [] pcorder = [utilizator] pccoloane = [utilizator] pcTitlu = [Alegeti utilizatorul] pcTitluColoane = [Utilizator] lcNumeProc = [] llToateIreg = .F. loCauta = cauta_alfa(pcselect, pcfiltru, pcschema, pcorder, pccoloane, pcTitlu, pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) Return loCauta Endfunc **************************************** SFARSIT: caut_utilizator_facturare **************************************** *!* ******************************************* INCEPUT: caut_gestiune_dest ******************************************* *!* Function caut_gestiune_dest *!* Lparameters tnIdGestiune *!* Store "" To loCauta *!* pcFiltruOriginal = [a.id_util=?gnIdUtil and a.sters=0 and b.sters=0 and c.sters=0 and c.nr_pag in (4,5,6)] *!* If !Empty(tnIdGestiune) *!* pcFiltruOriginal = pcFiltruOriginal + [ and b.id_gestiune!=] + Alltrim(Str(tnIdGestiune)) *!* Endif *!* pcselect = [select distinct c.nume_gestiune,b.id_gestiune,d.id_tipgest,] + ; *!* [(case when p.explicatie is null then s.explicatie else p.explicatie end) as explicatie,] + ; *!* [d.cont,p.acont ] + ; *!* [from ] + gcS + [.gest_coresp_util_grupe a ] + ; *!* [left join ] + gcS + [.gest_coresp_grupe_gestiuni b on a.id_grupe=b.id_grupe ] + ; *!* [left join ] + gcS + [.nom_gestiuni c on b.id_gestiune=c.id_gestiune ] + ; *!* [left join ] + gcS + [.coresp_cont_tipgest d on c.nr_pag=d.id_tipgest ] + ; *!* [left join ] + gcS + [.vplcont_analitic p on d.cont=p.cont and p.an=?gnAn ] + ; *!* [left join ] + gcS + [.vplcont_sintetic s on d.cont=s.cont and s.an=?gnAn ] *!* pcfiltru = [1=2] *!* pcschema = [] *!* pcorder = [nume_gestiune,cont,acont] *!* pccoloane = [nume_gestiune,cont,acont,explicatie] *!* pcTitlu = [Alegeti gestiunea si contul de transfer] *!* pcTitluColoane = [Gestiune,Cont,Analitic,Explicatie] *!* lcNumeProc = [] *!* llToateIreg = .F. *!* loCauta = cauta_alfa(pcselect,pcfiltru,pcschema,pcorder,pccoloane,pcTitlu,pcTitluColoane, lcNumeProc, llToateIreg, pcFiltruOriginal) *!* Return loCauta *!* Endfunc *!* ******************************************* SFARSIT: caut_gestiune_dest ******************************************* *!* ******************************************* INCEPUT: caut_politici_curente_util ******************************************* *!* Procedure caut_politici_curente_util *!* Local loCauta,llReturn *!* Store "" To loCauta *!* Store .F. To llReturn *!* lcSelect = ["select id_pol,nume,datai,datas from ] + gcS + [.fact_vpolitici_pret_curente"] *!* lcFiltru = [1=2] *!* lcSchema = [''] *!* lcorder = [2] *!* lccoloane = [nume,datai,datas] *!* lcTitlu = [Alegeti politica de preturi] *!* lcTitluColoane = [Nume,Data inceput,Data sfarsit] *!* lcNumeProc = [] *!* llToateIreg = .F. *!* lcFiltruOriginal = [id_util = ] + Alltrim(Str(gnIdUtil)) *!* loCauta = cauta_alfa(lcSelect, lcFiltru, lcSchema, lcorder, lccoloane, lcTitlu, lcTitluColoane, lcNumeProc, llToateIreg, lcFiltruOriginal) *!* Return loCauta *!* Endproc && caut_politici_curente_util *!* ******************************************* SFARSIT: caut_politici_curente_util ******************************************* ******************************************* INCEPUT: calculeaza_totaluri ******************************************* Function calculeaza_totaluri Lparameters toArticol *!* v 2.0.15 calcul valoare tva din valoare cu tva daca preturi_cu_tva = 1 Local lnProcTvav_19_119 lnProcTvav_19_119 = (toArticol.proc_tvav - 1) / toArticol.proc_tvav *!* v 2.0.15 ^ If Type('toArticol.cu_tva') <> 'U' AddProperty(toArticol, 'preturi_cu_tva', toArticol.cu_tva) AddProperty(toArticol, 'discount_unitar', toArticol.discountftva) AddProperty(toArticol, 'discount_unitar_ctva', toArticol.discountctva) AddProperty(toArticol, 'pretftva_val', toArticol.vpretftva) AddProperty(toArticol, 'pretctva_val', toArticol.vpretctva) AddProperty(toArticol, 'discount_unitar_val', toArticol.vdiscountftva) AddProperty(toArticol, 'discount_unitar_ctva_val', toArticol.vdiscountctva) Endif If toArticol.preturi_cu_tva = 0 toArticol.vvalftva = Round(toArticol.Pretftva_val * toArticol.cantitate, gnPVal) toArticol.vvaltva = Round(Round(toArticol.Pretftva_val * toArticol.cantitate, gnPVal) * (toArticol.proc_tvav - 1), gnPVal) toArticol.vvalctva = toArticol.vvalftva + toArticol.vvaltva toArticol.vvaldiminuatftva = Round((toArticol.Pretftva_val - toArticol.discount_unitar_val) * toArticol.cantitate, gnPVal) toArticol.vvaldiminuattva = Round(Round((toArticol.Pretftva_val - toArticol.discount_unitar_val) * toArticol.cantitate, gnPVal) * (toArticol.proc_tvav - 1), gnPVal) toArticol.vvaldiminuatctva = toArticol.vvaldiminuatftva + toArticol.vvaldiminuattva toArticol.vvaldiscountftva = Round(toArticol.discount_unitar_val * toArticol.cantitate, gnPVal) toArticol.vvaldiscounttva = Round(Round(toArticol.discount_unitar_val * toArticol.cantitate, gnPVal) * (toArticol.proc_tvav - 1), gnPVal) toArticol.vvaldiscountctva = toArticol.vvaldiscountftva + toArticol.vvaldiscounttva If poDate.in_valuta = 0 toArticol.valftva = Round(toArticol.Pretftva * toArticol.cantitate, gnPc) toArticol.valtva = Round(Round(toArticol.Pretftva * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc) toArticol.valctva = toArticol.valftva + toArticol.valtva toArticol.valdiscountftva = Round(toArticol.discount_unitar * toArticol.cantitate, gnPc) toArticol.valdiscounttva = Round(Round(toArticol.discount_unitar * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc) toArticol.valdiscountctva = toArticol.valdiscountftva + toArticol.valdiscounttva toArticol.valdiminuatftva = Round((toArticol.Pretftva - toArticol.discount_unitar) * toArticol.cantitate, gnPc) toArticol.valdiminuattva = Round(Round((toArticol.Pretftva - toArticol.discount_unitar) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc) toArticol.valdiminuatctva = toArticol.valdiminuatftva + toArticol.valdiminuattva Else toArticol.valftva = Round(Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) toArticol.valtva = Round(Round(Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc) toArticol.valctva = toArticol.valftva + toArticol.valtva toArticol.valdiscountftva = Round(Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) toArticol.valdiscounttva = Round(Round(Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc) toArticol.valdiscountctva = toArticol.valdiscountftva + toArticol.valdiscounttva toArticol.valdiminuatftva = Round((Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) - Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV)) * toArticol.cantitate, gnPc) toArticol.valdiminuattva = Round(Round((Round(toArticol.Pretftva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) - Round(toArticol.discount_unitar_val * toArticol.Curs / toArticol.multiplicator, gnPPretV)) * toArticol.cantitate, gnPc) * (toArticol.proc_tvav - 1), gnPc) toArticol.valdiminuatctva = toArticol.valdiminuatftva + toArticol.valdiminuattva Endif Else *!* v 2.0.15 calcul valoare tva din valoare cu tva daca preturi_cu_tva = 1 toArticol.vvalctva = Round(toArticol.Pretctva_val * toArticol.cantitate, gnPVal) *!* toArticol.vvalftva = Round(toArticol.Pretftva_val * toArticol.cantitate, gnPVal) *!* toArticol.vvaltva = toArticol.vvalctva - toArticol.vvalftva toArticol.vvaltva = Round(toArticol.vvalctva * m.lnProcTvav_19_119, gnPVal) toArticol.vvalftva = toArticol.vvalctva - toArticol.vvaltva toArticol.vvaldiscountctva = Round(toArticol.discount_unitar_ctva_val * toArticol.cantitate, gnPVal) *!* toArticol.vvaldiscountftva = Round(toArticol.discount_unitar_val * toArticol.cantitate, gnPVal) *!* toArticol.vvaldiscounttva = toArticol.vvaldiscountctva - toArticol.vvaldiscountftva toArticol.vvaldiscounttva = Round(toArticol.vvaldiscountctva * m.lnProcTvav_19_119, gnPVal) toArticol.vvaldiscountftva = toArticol.vvaldiscountctva - toArticol.vvaldiscounttva toArticol.vvaldiminuatctva = Round((toArticol.Pretctva_val - toArticol.discount_unitar_ctva_val) * toArticol.cantitate, gnPVal) *!* toArticol.vvaldiminuatftva = Round(Round((toArticol.Pretctva_val - toArticol.discount_unitar_ctva) / toArticol.proc_tvav, gnPVal) * toArticol.cantitate, gnPVal) *!* toArticol.vvaldiminuattva = toArticol.vvaldiminuatctva - toArticol.vvaldiminuatftva toArticol.vvaldiminuattva = Round(toArticol.vvaldiminuatctva * m.lnProcTvav_19_119, gnPVal) toArticol.vvaldiminuatftva = toArticol.vvaldiminuatctva - toArticol.vvaldiminuattva If poDate.in_valuta = 0 toArticol.valctva = Round(toArticol.Pretctva * toArticol.cantitate, gnPc) *!* toArticol.valftva = Round(toArticol.Pretftva * toArticol.cantitate,gnPc) *!* toArticol.valtva = toArticol.valctva - toArticol.valftva toArticol.valtva = Round(toArticol.valctva * m.lnProcTvav_19_119, gnPc) toArticol.valftva = toArticol.valctva - toArticol.valtva toArticol.valdiscountctva = Round(toArticol.discount_unitar_ctva * toArticol.cantitate, gnPc) *!* toArticol.valdiscountftva = Round(toArticol.discount_unitar * toArticol.cantitate,gnPc) *!* toArticol.valdiscounttva = toArticol.valdiscountctva - toArticol.valdiscountftva toArticol.valdiscounttva = Round(toArticol.valdiscountctva * m.lnProcTvav_19_119, gnPc) toArticol.valdiscountftva = toArticol.valdiscountctva - toArticol.valdiscounttva toArticol.valdiminuatctva = Round((toArticol.Pretctva - toArticol.discount_unitar_ctva) * toArticol.cantitate, gnPc) *!* toArticol.valdiminuatftva = Round(Round((toArticol.Pretctva - toArticol.discount_unitar_ctva) / toArticol.proc_tvav,gnPc) * toArticol.cantitate, gnPc) *!* toArticol.valdiminuattva = toArticol.valdiminuatctva - toArticol.valdiminuatftva toArticol.valdiminuattva = Round(toArticol.valdiminuatctva * m.lnProcTvav_19_119, gnPc) toArticol.valdiminuatftva = toArticol.valdiminuatctva - toArticol.valdiminuattva Else toArticol.valctva = Round(Round(toArticol.Pretctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) *!* toArticol.valftva = Round(Round(toArticol.Pretftva_val * toArticol.Curs,gnPc) * toArticol.cantitate,gnPc) *!* toArticol.valtva = toArticol.valctva - toArticol.valftva toArticol.valtva = Round(toArticol.valctva * m.lnProcTvav_19_119, gnPc) toArticol.valftva = toArticol.valctva - toArticol.valtva toArticol.valdiscountctva = Round(Round(toArticol.discount_unitar_ctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) * toArticol.cantitate, gnPc) *!* toArticol.valdiscountftva = Round(Round(toArticol.discount_unitar_val * toArticol.Curs,gnPc) * toArticol.cantitate,gnPc) *!* toArticol.valdiscounttva = toArticol.valdiscountctva - toArticol.valdiscountftva toArticol.valdiscounttva = Round(toArticol.valdiscountctva * m.lnProcTvav_19_119, gnPc) toArticol.valdiscountftva = toArticol.valdiscountctva - toArticol.valdiscounttva toArticol.valdiminuatctva = Round((Round(toArticol.Pretctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV) - Round(toArticol.discount_unitar_ctva_val * toArticol.Curs / toArticol.multiplicator, gnPPretV)) * toArticol.cantitate, gnPc) *!* toArticol.valdiminuatftva = Round(Round((Round(toArticol.Pretctva_val*toArticol.Curs,gnPc) - ROUND(toArticol.discount_unitar_ctva_val*toArticol.Curs,gnPc)) / toArticol.proc_tvav,gnPc) * toArticol.cantitate, gnPc) *!* toArticol.valdiminuattva = toArticol.valdiminuatctva - toArticol.valdiminuatftva toArticol.valdiminuattva = Round(toArticol.valdiminuatctva * m.lnProcTvav_19_119, gnPc) toArticol.valdiminuatftva = toArticol.valdiminuatctva - toArticol.valdiminuattva Endif *!* v 2.0.15 ^ Endif If Type('toArticol.cu_tva') <> 'U' toArticol.cu_tva = toArticol.preturi_cu_tva Removeproperty(toArticol, 'preturi_cu_tva') toArticol.discountftva = toArticol.discount_unitar Removeproperty(toArticol, 'discount_unitar') toArticol.discountctva = toArticol.discount_unitar_ctva Removeproperty(toArticol, 'discount_unitar_ctva') toArticol.vpretftva = toArticol.Pretftva_val Removeproperty(toArticol, 'pretftva_val') toArticol.vpretctva = toArticol.Pretctva_val Removeproperty(toArticol, 'pretctva_val') toArticol.vdiscountftva = toArticol.discount_unitar_val Removeproperty(toArticol, 'discount_unitar_val') toArticol.vdiscountctva = toArticol.discount_unitar_ctva_val Removeproperty(toArticol, 'discount_unitar_ctva_val') Endif Release lnProcTvav_19_119 Return toArticol Endfunc ******************************************* SFARSIT: calculeaza_totaluri *******************************************