*!* 10.12.2015 *!* marius.mutu *!* listare explicatie din registrul jurnal pe chitanta *!* #4246 *!* 30.06.2017 *!* marius.mutu *!* listare_chitanta, relistare_chitanta - suma in vorbe tine cont de valuta ******************************************************************************************* DEFINE CLASS oDateChitanta AS CUSTOM id_client = NULL nume_client = [] nr_incasare = 0 serie_chit = [] dataact = {} incasat = 0 sumavorbe = [] explicatie_chit = [] nume_valuta = [] lSilent = .F. * lSilent (default .F.) listare silentioasa, fara previzualizare PROCEDURE INIT LPARAMETERS tnIdPartener, tcSirNrFact WITH THIS .id_client = tnIdPartener *!* lcSirFact = Substr(tcSirNrFact,1,LEN(tcSirNrFact)-2) && are [, ] la sfarsit lcSirFact = IIF(RIGHT(ALLTRIM(tcSirNrFact), 1) = ',', LEFT(ALLTRIM(tcSirNrFact), LEN(ALLTRIM(tcSirNrFact)) - 1), ALLTRIM(tcSirNrFact)) IF [, ] $ lcSirFact .explicatie_chit = [facturilor ] + lcSirFact ELSE .explicatie_chit = [facturii ] + lcSirFact ENDIF ENDWITH ENDPROC ENDDEFINE ******************************************************************************************* PROCEDURE clienti_chitanta LPARAMETERS tnIdSet LOCAL lnIdSet lnIdSet = IIF(!EMPTY(m.tnIdSet), m.tnIdSet, 10329) && casa > incasare clienti 4111 PRIVATE glListareChitanta PRIVATE pcSirFacturi glListareChitanta = .T. STORE [] TO pcSirFacturi lans(m.lnIdSet) glListareChitanta = .F. ENDPROC && clienti_chitanta ******************************************************************************************* PROCEDURE listeaza_chitanta LPARAMETERS tcSirNrFact LOCAL lnIdClient, loDate, lcNumeClient LOCAL laProperties[1], lcProperty, lnProperties, lnProperty SELECT actactan LOCATE FOR id_partc <> 0 lnIdClient = id_partc tcSirNrFact = IIF(RIGHT(ALLTRIM(tcSirNrFact), 1) = ',', LEFT(ALLTRIM(tcSirNrFact), LEN(ALLTRIM(tcSirNrFact)) - 1), ALLTRIM(tcSirNrFact)) + IIF(!EMPTY(NVL(explicatia, '')), ' ' + ALLTRIM(explicatia), '') lcNumeClient = IIF(TYPE('poAct.v4111') = 'C', poAct.v4111, IIF(TYPE('poAct.v461') = 'C', poAct.v461, '')) IF EMPTY(m.lcNumeClient) lnProperties = AMEMBERS(laProperties, poAct, 0) FOR lnProperty = 1 TO m.lnProperties lcProperty = LOWER(laProperties(m.lnProperty)) IF LEFT(m.lcProperty, 2) = 'v4' lcNumeClient = EVALUATE('poAct.' + _m.lcProperty) EXIT ENDIF ENDFOR ENDIF loDate = CREATEOBJECT('oDateChitanta', lnIdClient, tcSirNrFact) WITH loDate .nume_client = m.lcNumeClient .serie_chit = poAct.serie_act .nr_incasare = poAct.nract .dataact = poAct.dataact .incasat = poAct.suma .nume_valuta = IIF(EMPTY(ALLTRIM(NVL(poAct.nume_val, ''))), 'LEI', STRTRAN(ALLTRIM(NVL(poAct.nume_val, '')), 'RON', 'LEI', 1, 1, 1)) .sumavorbe = SUMA_IN_VORBE(.incasat, NVL(poAct.nume_val, '')) ENDWITH listare_chitanta(@loDate, [actactan]) RELEASE lnIdClient, loDate ENDPROC ******************************************************************************************* PROCEDURE relisteaza_chitanta LPARAMETERS tnCod, tlSilent * tnCod act.cod pentru chitanta * tlSilent (default .F.) se listeaza silentios, fara previzualizare LOCAL loDate, lcSirFact, loDetalii *!* am pus conditia scd = '5311' ca sa nu-mi ia si notele de exigibilizare a TVA-ului *!* am pus conditia id_set = 10329 ca sa nu poata lista decat ce a introdus pe la incasare clienti cu/fara listare chitanta *!* id_set = 10329 ( incasare clienti cu/fara listare chitanta ) *!* id_set = 10576 ( incasare clienti cu bon fiscal ) lcSql = [select a.id_partc,c.denumire,a.serie_act,a.nract,a.dataact, d.nume_val, sum(a.suma) as suma,] + ; [stringagg(' '||nvl2(b.serie_act, b.serie_act || ' ', '') || ] + ; [trim(replace(replace(to_char(b.nract, '999999999999999999'), '.' , ' '), ',' , ' ')) ] + ; [ || ' din '|| to_char(b.dataact,'DD/MM/YYYY')) as sirfact, max(explicatia) as explicatia ] + ; [from (select id_partc, serie_act, nract, dataact, suma, id_factc, explicatia, id_valuta from act ] + ; [where cod = ] + ALLTRIM(STR(tnCod)) + [ and sters = 0 and scd = '5311') a ] + ; [left join documente b on a.id_factc = b.id_doc ] + ; [left join nom_parteneri c on a.id_partc = c.id_part ] + ; [left join vnom_valute d on a.id_valuta = d.id_valuta ] + ; [group by a.id_partc, c.denumire, a.serie_act, a.nract, a.dataact, d.nume_val] *!* lcSql = [select a.id_partc,c.denumire,a.serie_act,a.nract,a.dataact,a.suma,] + ; *!* [nvl2(b.serie_act, b.serie_act || ' ', '') || ] + ; *!* [trim(replace(replace(to_char(b.nract, '999G999G999G999G999G999'), '.' , ' '), ',' , ' ')) ] + ; *!* [ || ' din '|| to_char(b.dataact,'DD/MM/YYYY') as sirfact ] + ; *!* [from (select id_partc, serie_act, nract, dataact, suma, id_factc from act ] + ; *!* [where cod = ] + Alltrim(Str(tnCod)) + [ and sters = 0 and scd = '5311' and id_set = 10329) a ] + ; *!* [left join documente b on a.id_factc = b.id_doc ] + ; *!* [left join nom_parteneri c on a.id_partc = c.id_part ] lcCursor = [crsdatechitanta] IF goExecutor.oExecuta(lcSql, lcCursor) IF RECCOUNT(lcCursor) > 0 *!* lcSirFact = [] *!* Select (lcCursor) *!* Scan *!* If Recno() = 1 *!* Scatter Name loDetalii *!* Else *!* loDetalii.suma = loDetalii.suma + suma *!* Endif *!* lcSirFact = lcSirFact + ALLTRIM(sirfact) + [, ] *!* Endscan *!* loDate = Createobject('oDateChitanta',loDetalii.id_partc,SUBSTR(lcSirFact,3)) *!* With loDate *!* .nume_client = Alltrim(loDetalii.denumire) *!* .serie_chit = Alltrim(loDetalii.serie_act) *!* .nr_incasare = loDetalii.nract *!* .dataact = loDetalii.dataact *!* .incasat = loDetalii.suma *!* .sumavorbe = SUMA_IN_VORBE(.incasat) *!* Endwith lcSirNrFact = IIF(RIGHT(ALLTRIM(sirfact), 1) = ',', LEFT(ALLTRIM(sirfact), LEN(ALLTRIM(sirfact)) - 1), ALLTRIM(sirfact)) + IIF(!EMPTY(NVL(explicatia, '')), ' ' + ALLTRIM(explicatia), '') SELECT (lcCursor) loDate = CREATEOBJECT('oDateChitanta', id_partc, lcSirNrFact) && [, ] este eliminat in oDateChitanta WITH loDate .nume_client = ALLTRIM(denumire) .serie_chit = ALLTRIM(serie_act) .nr_incasare = nract .dataact = dataact .incasat = suma .nume_valuta = IIF(EMPTY(ALLTRIM(NVL(nume_val, ''))), 'LEI', STRTRAN(ALLTRIM(NVL(nume_val, '')), 'RON', 'LEI', 1, 1, 1)) .sumavorbe = SUMA_IN_VORBE(.incasat, NVL(nume_val, '')) .lSilent = m.tlSilent ENDWITH listare_chitanta(@loDate, lcCursor) RELEASE lnIdClient, loDate, loDateChit ELSE amessagebox("Nu exista date pentru listarea chitantei!", 48, "Atentie") ENDIF ENDIF USE IN (SELECT(lcCursor)) ENDPROC ******************************************************************************************* PROCEDURE listare_chitanta LPARAMETERS toDate, tcCursor PRIVATE poClient, poFirma, poDate Local lcCursor, lcRaport, lcSql, lnRaspuns Local loPreviewerConfig As "PreviewerConfig" poDate = toDate lcSql = [select 1 as tip,(case when tip_persoana = 1 then prefix||' '||denumire||' '||sufix else denumire end) as denumire,] + ; [cod_fiscal,adresa,telefon,'' as fax,reg_comert,banca,cont_banca,sysdate as dataora,tip_persoana,0 as capital_soc_var,] + ; [0 as capital_soc_sub from vnom_parteneri where id_part = ?poDate.id_client ] + ; [union all ] + ; [select 3 as tip,antet as denumire,cod_fiscal,adresa,telefon,fax,reg_comert,banca1 as banca,] + ; [cont_banca1 as cont_banca,null as dataora,0 as tip_persoana,capital_soc_var,capital_soc_sub ] + ; [from syn_nom_firme where id_firma = ?gnIdFirma ] IF USED('crsdatefacturare') USE IN crsdatefacturare ENDIF lcCursor = [crsdatefacturare] IF goExecutor.oExecuta(lcSql, lcCursor) SELECT crsdatefacturare SCAN DO CASE CASE tip = 1 SCATTER NAME poClient MEMO *!* ptDataOra = poClient.dataora OTHERWISE SCATTER NAME poFirma MEMO ENDCASE ENDSCAN USE IN crsdatefacturare * Daca nu am gasit clientul (nu exista clientul) (ex: 5311 = 581) - da eroare, creez o structura poClient gol IF TYPE('poClient.denumire') <> 'C' poClient = CREATEOBJECT("custom") poClient.ADDPROPERTY("tip", 1) poClient.ADDPROPERTY("denumire", "") poClient.ADDPROPERTY("cod_fiscal", "") poClient.ADDPROPERTY("adresa", "") poClient.ADDPROPERTY("telefon", "") poClient.ADDPROPERTY("fax", "") poClient.ADDPROPERTY("reg_comert", "") poClient.ADDPROPERTY("banca", "") poClient.ADDPROPERTY("cont_banca", "") poClient.ADDPROPERTY("dataora", {//::}) poClient.ADDPROPERTY("tip_persoana", 0) poClient.ADDPROPERTY("capital_soc_var", 0) poClient.ADDPROPERTY("capital_soc_sub", 0) ENDIF *!* modificare v 2.0.100 *!* poClient.denumire = Nvl(poClient.denumire,Padl([_],100,[_])) *!* poClient.adresa = Nvl(poClient.adresa,Padl([_],150,[_])) *!* poDate.explicatie = Nvl(poDate.explicatie,Padl([_],100,[_])) poClient.denumire = NVL(poClient.denumire, REPLICATE([. ], 50)) poClient.adresa = NVL(poClient.adresa, REPLICATE([. ], 75)) poDate.explicatie_chit = NVL(poDate.explicatie_chit, REPLICATE([. ], 50)) *!* modificare v 2.0.100 ^ lcRaport = IIF(TYPE('gnRC_RAPORT_CHITANTA') = 'N', IIF(m.gnRC_RAPORT_CHITANTA = 0, [chitanta], [chitanta_landscape]), [chitanta]) loPreviewerConfig = Createobject("PreviewerConfig") && rapoarte.prg If poDate.lSilent m.loPreviewerConfig.SetValue("lDirectPrint", .T.) goExport.export2frx(m.tcCursor, m.lcRaport, .F., , , , , .T., , loPreviewerConfig) ELSE *!* lnRaspuns = 6 *!* DO WHILE lnRaspuns = 6 goExport.export2frx(m.tcCursor, m.lcRaport, .F., , , , , .T., , loPreviewerConfig) *!* lnRaspuns = amessagebox("Doriti sa mai listati chitanta?", 4 + 32 + 256, "Confirmare repetare listare") *!* ENDDO ENDIF && lSilent ENDIF && goExecutor RELEASE poClient, poFirma, poDate ENDPROC && listeaza_chitanta ******************************************************************************************* ************************************ *** note incasare facturi 5121 = 4111 prin selectarea facturilor incasate direct din facturi cu sold *** nu trateaza cazul firmelor cu TVA Incasare ************************************ PROCEDURE incasare_facturi_sold PARAMETERS tcXMLFacturi LOCAL loForm AS [frm_modific2007] lcSCD = '5121' lcSCC = '4111' lnRecords = XMLTOCURSOR(m.tcXMLFacturi, "crsFacturiIncasareTemp") IF lnRecords = 0 USE IN (SELECT("crsFacturiIncasareTemp")) RETURN ENDIF lcMesaj = '' lnIdSet = 99999 && nota fara predefinire lnBut = lans(m.lnIdSet) IF m.lnBut = 1 SELECT actactan SCATTER NAME loAct ZAP INSERT INTO actactan(nr_nota, luna, an, scd, scc, ascc, suma, id_set, id_factc, perechec, id_partc, partc, explicatia) ; SELECT RECCOUNT('actactan') + RECNO() AS nr_nota, m.gnLuna AS luna, m.gnAn AS an, m.lcSCD AS scd, CONT AS scc, acont AS ascc, ; (precdeb + debit) - (preccred + credit) AS suma, m.lnIdSet AS id_set, id_fact AS id_factc, nract AS perechec, id_part AS id_partc, nume AS partc, ; 'Incasare prin banca' AS explicatia ; FROM crsFacturiIncasareTemp SELECT actactan SCAN GATHER NAME loAct FIELDS EXCEPT nr_nota, luna, an, scd, scc, suma, id_set, id_factc, perechec, id_partc, partc REPLACE id_sucursala WITH m.gnIdSucursala ENDSCAN update_jtva_coloane("JV", 'crsExplicatiiTVATemp', 1) SELECT .F. AS ales, 0 AS Cu_tva, CAST(0 AS N(2)) AS tipnota, a.*, b.denumire AS explicatie_tva_2 ; FROM actactan a LEFT JOIN crsExplicatiiTVATemp b ON a.id_jtva_coloana = b.id_jtva_coloana ; INTO CURSOR tact READWRITE Update tact Set explicatie_tva = explicatie_tva_2 USE IN (SELECT('crsExplicatiiTVATemp')) SELECT tact GO TOP llNotaNoua = .T. llMaximize = .T. loForm = CREATEOBJECT([frm_modific2007], m.lnIdSet, m.llNotaNoua) loForm.lb_titlu_alb_b121.CAPTION = 'Incasare facturi' SELECT tact loForm.SHOW(1, m.llMaximize) IF buton = 1 USE IN (SELECT('actactan')) SELECT tact REPLACE id_jtva_coloana WITH NULL, PROC_TVA WITH 0 FOR Cu_tva = 0 SELECT * FROM tact INTO CURSOR actactan READWRITE SELECT actactan REPLACE ALL id_util WITH gnIdUtil, id_set WITH m.lnIdSet lnSucces = OSCRIE_IN_FISIERE(0) ENDIF && buton = 1 ENDIF && m.lnBut = 1 USE IN (SELECT('actactan')) USE IN (SELECT('tact')) ENDPROC && incasare_facturi_sold