diff --git a/m770/770100.cpp b/m770/770100.cpp index 1a7d6eba8..7aa690a74 100755 --- a/m770/770100.cpp +++ b/m770/770100.cpp @@ -1,7 +1,7 @@ // 770100.cpp - Scheda percipienti -#include -#include #include +#include +#include #include "scperc.h" #include "rver.h" @@ -152,13 +152,14 @@ TMask* TSchedaPercipienti::load_mask(int n) //////////////////////////////////////////////////////////////////////// TSheet_field& vers = m->sfield(F_VERSAMENTI); vers.set_notify(vers_notify); - vers.sheet_mask().set_handler(F_VERS_1015, vers1015_handler); - vers.sheet_mask().set_handler(DLG_SELPAG, pag_select); - vers.sheet_mask().set_handler(DLG_AZZERA, ver_azzera); - vers.sheet_mask().set_handler(F_TIPOVERS, tipo_hndl); - vers.sheet_mask().set_handler(F_LUOVERS, luo_hndl); - vers.sheet_mask().set_handler(F_ABI, abicab_hndl); - vers.sheet_mask().set_handler(F_CAB, abicab_hndl); + TMask& sm = vers.sheet_mask(); + sm.set_handler(F_VERS_1015, vers1015_handler); + sm.set_handler(DLG_SELPAG, pag_select); + sm.set_handler(DLG_AZZERA, ver_azzera); + sm.set_handler(F_TIPOVERS, tipo_hndl); + sm.set_handler(F_LUOVERS, luo_hndl); + sm.set_handler(F_ABI, abicab_hndl); + sm.set_handler(F_CAB, abicab_hndl); } break; default: @@ -271,12 +272,12 @@ bool TSchedaPercipienti::codanagr_handler(TMask_field& f, KEY k) } void TSchedaPercipienti::calcola_riga_pag(TRectype & rec, - const real h_PercAssImp, - const real h_PercCassaPrev, - const real h_PercRitenuta, - const real h_PercInps, - const real h_PercAssImpInps, - const real h_PercCommitInps) + const real h_PercAssImp, + const real h_PercCassaPrev, + const real h_PercRitenuta, + const real h_PercInps, + const real h_PercAssImpInps, + const real h_PercCommitInps) { const int fdec = TCurrency::get_firm_dec(); real compenso = rec.get_real(PAG_COMPENSO); @@ -320,7 +321,7 @@ void TSchedaPercipienti::calcola_riga_pag(TRectype & rec, rec.put(PAG_COMNETTO, comnetto); } -void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) +void TSchedaPercipienti::agg_pagamenti(const TRectype& sch, const TDate& pag_dal) { const long numreg = sch.get_long(SCH_NUMREG); @@ -344,7 +345,7 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) real spperc = spese / totale; spperc.round(8); real ivaperc = iva / totale; ivaperc.round(8); - TString16 codcau(sc.lfile().get("CODCAUS")); + const TString4 codcau = sc.lfile().get("CODCAUS"); const TRectype cau = cache().get("%CA7", codcau); // leggo valori tabella causali per calcolo @@ -354,9 +355,8 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) const real h_PercInps = cau.get_real("R1"); const real h_PercAssImpInps = cau.get_real("R2"); const real h_PercCommitInps = cau.get_real("R3"); - - - for (TPartita * p = partarr.first(); p != NULL; p =partarr.next()) + + for (TPartita* p = partarr.first(); p != NULL; p =partarr.next()) { const int row = p->prima_fattura(numreg); @@ -377,17 +377,22 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) for (int rowp = ratapart.last(); rowp > 0; rowp = ratapart.pred(rowp)) { - const TRectype& pag = ratapart.row(rowp); // Riga pagamento - const TRiga_partite& sum = p->riga(rowp); // Riga partite + const TRectype& pag = ratapart.row(rowp); // Riga pagamento + + const TRiga_partite& sum = p->riga(rowp); // Riga partite + const TDate sum_datapag = pag.get(PART_DATAPAG); + if (sum_datapag < pag_dal) + continue; + const char sez = sum.sezione(); TImporto imppag(sez, pag.get_real(PAGSCA_IMPORTO)); const long num = sum.get_long(PART_NREG); - if(lastsch == 0 && numregp[0] == 0L) + if (lastsch == 0 && numregp[0] == 0L) { numregp[lastsch] = num; tot[lastsch].reset(); } - if(num != numregp[lastsch]) + if (num != numregp[lastsch]) { numregp[++lastsch] = num; tot[lastsch].reset(); @@ -405,9 +410,9 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) real abb = pag.get_real(PAGSCA_ABBUONI); if (!abb.is_zero()) imppag += TImporto(sez, abb); - for (int i = 0; !found &&i < rows; i++) + for (int i = 0; !found && i < rows; i++) { - TRectype & pagrec = sc.pag(i); + TRectype& pagrec = sc.pag(i); const long numsch = pagrec.get_long(PAG_NUMREG); found = num == numsch; if (numsch == 0L && !found) @@ -417,7 +422,7 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) data = sum.get_date(PART_DATAREG); if (!data.ok()) data = sum.get_date(PART_DATAPAG); - const TDate datasch(pagrec.get(PAG_DATAPAG)); + const TDate datasch = pagrec.get(PAG_DATAPAG); if (data == datasch) { pagrec.put(PAG_NUMREG, num); @@ -438,7 +443,6 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) ivap = iva; real compensop = imppag.valore() - spesep - ivap; - compensop += compensop * h_PercRitenuta; compensop.round(TCurrency::get_firm_dec()); if (abs(compensop) > abs(compenso)) @@ -454,13 +458,13 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) if (!found) { tot[lastsch] += imppag; - if (!datapag.ok()) - datapag = sum.get_date(PART_DATADOC); - if (!datapag.ok()) - datapag = sum.get_date(PART_DATAREG); - if (!datapag.ok()) - datapag = sum.get_date(PART_DATAPAG); - } + if (!datapag.ok()) + datapag = sum.get_date(PART_DATADOC); + if (!datapag.ok()) + datapag = sum.get_date(PART_DATAREG); + if (!datapag.ok()) + datapag = sum.get_date(PART_DATAPAG); + } } for (int j = 0; j < 10 && numregp[j] > 0L; j++) { @@ -479,32 +483,32 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype & sch) real spesepag = tot[j].valore() * spperc; real ivapag = tot[j].valore() * ivaperc; - spesepag.round(TCurrency::get_firm_dec()); - if (abs(spesepag) > abs(spese)) - spesepag = spese; - ivapag.round(TCurrency::get_firm_dec()); - if (abs(ivapag) > abs(iva)) - ivapag = iva; + spesepag.round(TCurrency::get_firm_dec()); + if (abs(spesepag) > abs(spese)) + spesepag = spese; + ivapag.round(TCurrency::get_firm_dec()); + if (abs(ivapag) > abs(iva)) + ivapag = iva; real compensopag = tot[j].valore() - spesepag - ivapag; - compensopag += compensopag * h_PercRitenuta; - compensopag.round(TCurrency::get_firm_dec()); - if (abs(compensopag) > abs(compenso)) - compensopag = compenso; - pagrec.put(PAG_COMPENSO, compensopag); - pagrec.put(PAG_SPESA, spesepag); - pagrec.put(PAG_DATAPAG, datapag); + compensopag += compensopag * h_PercRitenuta; + compensopag.round(TCurrency::get_firm_dec()); + if (abs(compensopag) > abs(compenso)) + compensopag = compenso; + pagrec.put(PAG_COMPENSO, compensopag); + pagrec.put(PAG_SPESA, spesepag); + pagrec.put(PAG_DATAPAG, datapag); sc.lfile().put(SCH_ANNOC, datapag.year()); sc.lfile().put(SCH_MESEC, datapag.month()); - pagrec.put(PAG_PERC, h_PercRitenuta); // percentuale ritenuta acconto - pagrec.put(PAG_ALQIMP10, h_PercAssImpInps);// percentuale 10% INPS - pagrec.put(PAG_NUMREG, numregp[j]); - pagrec.put(PAG_COD10, "C"); - calcola_riga_pag(pagrec, h_PercAssImp, h_PercCassaPrev, h_PercRitenuta, h_PercInps, h_PercAssImpInps, h_PercCommitInps); - } - } - } + pagrec.put(PAG_PERC, h_PercRitenuta); // percentuale ritenuta acconto + pagrec.put(PAG_ALQIMP10, h_PercAssImpInps);// percentuale 10% INPS + pagrec.put(PAG_NUMREG, numregp[j]); + pagrec.put(PAG_COD10, "C"); + calcola_riga_pag(pagrec, h_PercAssImp, h_PercCassaPrev, h_PercRitenuta, h_PercInps, h_PercAssImpInps, h_PercCommitInps); + } + } + } } sc.rewrite(); } @@ -515,8 +519,16 @@ bool schede(const TRelation& rel, void* pJolly) { const TRectype& sch = rel.curr(); TSchedaPercipienti* schper = (TSchedaPercipienti *) pJolly; - schper->agg_pagamenti(sch); - return true; + + TMask mp("Aggiorna pagamenti", 1, 20, 4); + mp.add_date(101, 0, "Data minimima pagamenti ", 1, 1); + const bool ok = mp.run() == K_ENTER; + if (ok) + { + const TDate pag_dal = mp.get(101); + schper->agg_pagamenti(sch, pag_dal); + } + return ok; } bool TSchedaPercipienti::aggpag_handler(TMask_field& f, KEY k) @@ -583,8 +595,8 @@ bool TSchedaPercipienti::user_create() _rpag = new TLocalisamfile(LF_RPAG); _pags = new TNikArray_sheet(-1, -1, -4, -4, TR("Selezione Pagamenti"), - HR("@1|Data@11|Compenso@16|Ritenuta@16|"), - 0,NULL_WIN,5); + HR("@1|Data@11|Compenso@16|Ritenuta@16|"), + 0, NULL_WIN, 5); set_search_field(F_CODANAGRPERC); @@ -669,16 +681,16 @@ void TSchedaPercipienti::compila_testata(TMask& m) switch (tipo_coll()) { - case occasionale: - m.set(F_COMPENS, _coll._compenso.string()); - m.set(F_TOTDOC, _coll._compenso.string()); - break; - case fattura: - m.set(F_TOTDOC, _coll._totdoc.string()); - m.set(F_TOTRIT, _coll._ritenute.string()); - break; - default: - break; + case occasionale: + m.set(F_COMPENS, _coll._compenso.string()); + m.set(F_TOTDOC, _coll._compenso.string()); + break; + case fattura: + m.set(F_TOTDOC, _coll._totdoc.string()); + m.set(F_TOTRIT, _coll._ritenute.string()); + break; + default: + break; } } @@ -708,12 +720,29 @@ void TSchedaPercipienti::init_modify_mode(TMask& m) void TSchedaPercipienti::init_insert_mode(TMask& m) { init_mask(m); + + // La proposta causale è valida con e senza collegamneto da prima nota + TToken_string key; key.format("%c|%ld", m.get(F_TIPOA)[0], m.get_long(F_CODANAGR)); + TString4 codcaus = cache().get(LF_ANAG, key, "CAUSQUA"); + if (codcaus.blank()) + { + key.format("%ld|%c|%ld|%d", + m.get_long(F_CODDITTA), m.get(F_TIPOA)[0], + m.get_long(F_CODANAGR), m.get_int(F_NPROG)-1); + codcaus = cache().get(LF_SCPERC, key, SPR_CODCAUS); + } + if (codcaus.full()) + { + const TRectype& caus = cache().get("%CA7", codcaus); + build_causqua_items(m, caus.get("S1")); + m.set(F_CODCAUS, codcaus, 0x3); + m.set(F_CAUSQUA, caus.get("S2")); + } } void TSchedaPercipienti::on_config_change() { - TConfig conf(CONFIG_STUDIO, "77"); - _anno_dic = conf.get_int(ANNO_SEL); + _anno_dic = ini_get_int(CONFIG_STUDIO, "77", ANNO_SEL); } void TSchedaPercipienti::init_query_mode(TMask& m) @@ -1347,12 +1376,10 @@ TSheet_field& TSchedaPercipienti::pag_sheet_enabled(TMask& m, bool force_enable) if (s == NULL) { // reperisco codice quadro della scheda - TString16 codcau(_rel->lfile().get("CODCAUS")); - TTable cau("%ca7"); - cau.zero(); - cau.put("CODTAB", codcau); - TString16 qua = "C"; - if (cau.read() == NOERR) + TString4 qua = "C"; + const TString4 codcau = _rel->lfile().get("CODCAUS"); + const TRectype& cau = cache().get("%CA7", codcau); + if (!cau.empty()) qua = cau.get("S1"); // abilito sheet @@ -1421,12 +1448,12 @@ bool TSchedaPercipienti::activate_pag_sheet(TMask& m) for (int r = 0; r < curr_s.items(); r++) { TToken_string& t = curr_s.row(r); - if (!my_empty_items(t, FALSE)) + if (!my_empty_items(t, false)) { from_sheet_to_struct(t, s); calcola_riga_pag(s, c, - TRUE, + true, h_PercAssImp, h_PercCassaPrev, h_PercRitenuta, @@ -1644,7 +1671,7 @@ Pag_struct& TSchedaPercipienti::from_sheet_to_struct(TToken_string& t, Pag_struc return s; } -void TSchedaPercipienti::from_struct_to_sheet(Pag_struct& s, TToken_string& t) +void TSchedaPercipienti::from_struct_to_sheet(const Pag_struct& s, TToken_string& t) { // reperisco la Token_string pilota TToken_string columns(pilot_sheet()); @@ -2075,7 +2102,8 @@ Pag_struct& TSchedaPercipienti::clear_struct(Pag_struct& s) s.ammlordo = ZERO; s.quotaprov = ZERO; s.impnetto = ZERO; - s.comnetto = ZERO; + s.comnetto = ZERO; + s.numreg = 0L; return s; } @@ -2096,13 +2124,13 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s, clear_struct(c); // calcolo CPA - c.impcpa = (s.compenso * h_PercCassaPrev) / (CENTO + h_PercCassaPrev); + c.impcpa = s.compenso * h_PercCassaPrev / (CENTO + h_PercCassaPrev); c.impcpa.round(fdec); if (s.impcpa == ZERO || force) s.impcpa = c.impcpa; // calcolo imponibile - c.imponibile = ((s.compenso - s.impcpa) * h_PercAssImp) / CENTO; + c.imponibile = (s.compenso - s.impcpa) * h_PercAssImp / CENTO; c.imponibile.round(fdec); if (s.imponibile == ZERO || force) s.imponibile = c.imponibile; @@ -2112,7 +2140,7 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s, s.perc = h_PercRitenuta; // calcolo ritenuta lorda - c.ritlorda = (s.imponibile * s.perc) / CENTO; + c.ritlorda = s.imponibile * s.perc / CENTO; c.ritlorda.round(fdec); s.ritlorda = c.ritlorda; @@ -2132,7 +2160,7 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s, s.alqimp10 = h_PercAssImpInps; // calcolo contributo Inps complessivo - c.ctssncomp = (((s.compenso * s.alqimp10) / CENTO) * h_PercInps) / CENTO; + c.ctssncomp = ((s.compenso * s.alqimp10 / CENTO) * h_PercInps) / CENTO; c.ctssncomp.round(fdec); if (s.ctssncomp == ZERO || force) s.ctssncomp = c.ctssncomp; @@ -2182,8 +2210,6 @@ Pag_struct& TSchedaPercipienti::calcola_riga_pag(Pag_struct& s, // calcolo compenso al netto delle ritenute s.comnetto = s.compenso - s.ritenuta; - s.numreg = c.numreg; - return s; } diff --git a/m770/770102.cpp b/m770/770102.cpp index d8fb890f8..595b3e48b 100755 --- a/m770/770102.cpp +++ b/m770/770102.cpp @@ -43,7 +43,7 @@ void TSchedaPercipienti::init_mask(TMask& m, bool inserimento) // Update spreadsheet rec2row(pags.row(0), rpag, 0); // ricalcolo riga pagamento - TString16 codcau(m.get(F_CODCAUS)); + const TString& codcau = m.get(F_CODCAUS); TTable cau("%ca7"); cau.zero(); cau.put("CODTAB", codcau); @@ -730,16 +730,19 @@ bool TSchedaPercipienti::vers1015_handler(TMask_field& f, KEY k) bool TSchedaPercipienti::check_causale(TMask_field& f, KEY k) { TMask& m = f.mask(); - TString16 cod_qua(m.get(F_CODQUA)); - - // creo run-time gli items per la causale quadro - app().build_causqua_items(m, cod_qua); - + + if (k == K_TAB) + { + const TString& cod_qua = m.get(F_CODQUA); + // creo run-time gli items per la causale quadro + app().build_causqua_items(m, cod_qua); + } if (k == K_TAB && m.is_running()) { // leggo causale indicata - TFixed_string cod_caus(f.get(),3); + //TFixed_string cod_caus(f.get(),3); + const TString& cod_qua = m.get(F_CODQUA); // cose da fare solo se viene modificato il codice causale if (f.to_check(k)) diff --git a/m770/770102.h b/m770/770102.h index 47dd5bf39..d8fa8aba5 100755 --- a/m770/770102.h +++ b/m770/770102.h @@ -134,7 +134,7 @@ class TSchedaPercipienti : public TRelation_application // riempe la struttura pagamento da una riga di sheet Pag_struct& from_sheet_to_struct(TToken_string& t, Pag_struct& s); // riempe una riga di sheet dalla struttura pagamento - void from_struct_to_sheet(Pag_struct& s, TToken_string& t); + void from_struct_to_sheet(const Pag_struct& s, TToken_string& t); // riempe la struttura pagamento dalla maschera di sheet Pag_struct& from_mask_to_struct(TMask& m, Pag_struct& s); // riempe la maschera di sheet dalla struttura pagamento @@ -207,7 +207,7 @@ class TSchedaPercipienti : public TRelation_application bool coll_datanum() const { return _coll._datadoc.not_empty() && _coll._numdoc.not_empty(); } long coll_numreg() const { return _coll._numreg; } bool esiste_perc(const TMask& m, const char* coda=NULL); - void agg_pagamenti(const TRectype & sch); + void agg_pagamenti(const TRectype& sch, const TDate& pag_dal); TSheet_field& pags() const; TSheet_field& vers() const; diff --git a/m770/777100.cpp b/m770/777100.cpp index 81476d673..72602633f 100755 --- a/m770/777100.cpp +++ b/m770/777100.cpp @@ -747,20 +747,13 @@ TTracciato770::TTracciato770(char tipo) : _tipo(tipo) add_field("Situazione", NU, 674, 1); add_field("Dicastero di appartenenza", CN, 675, 11); - add_field("Firma del dichiarante", CB, 746, 1, 54); // 54 - add_field("Codice fiscale incaricato", CF, 747,16); - add_field("Soggetto", NU, 763, 1); - add_field("Firma incaricato", CB, 764, 1); - add_field("Codice fiscale presidente", CF, 765,16); - add_field("Firma presidente", CB, 781, 1); // 59 - add_field("Redazione della dichiarazione", NU, 797, 1, 75); // 75 add_field("Numero comunicaz. lavoro dipendente", NU, 798, 8); add_field("Numero comunicaz. lavoro autonomo", NU, 806, 8); add_field("Casella prospetto SS", CB, 814, 1); // 78 add_field("Casella prospetto ST", CB, 815, 1); - add_field("Casella prospetto SV", CB, 816, 1); // 80 - add_field("Casella prospetto SX", CB, 817, 1); + add_field("Casella prospetto SV", CB, 816, 1); + add_field("Casella prospetto SX", CB, 817, 1); // 81 add_field("Casella prospetto SY", CB, 818, 1); add_field("Presenza 770 ordinario 2011", CB, 819, 1); add_field("Codice fiscale parte restante", CF, 820,16); @@ -776,7 +769,24 @@ TTracciato770::TTracciato770(char tipo) : _tipo(tipo) add_field("Numero comunicaz. lavoro dipendente", NU, 864, 8); add_field("Numero comunicaz. lavoro autonomo", NU, 872, 8); // 93 - add_field("Situazioni particolari", NU,1180,2, 100); // 100 + add_field("Firma del dichiarante", CB, 880, 1, 94); // 94 + add_field("Codice fiscale", CF, 881,16); + add_field("Soggetto", NU, 897, 1); + add_field("Firma", CB, 898, 1); // 97 + add_field("Codice fiscale", CF, 899,16); + add_field("Soggetto", NU, 915, 1); + add_field("Firma", CB, 916, 1); // 100 + add_field("Codice fiscale", CF, 917,16); + add_field("Soggetto", NU, 933, 1); + add_field("Firma", CB, 934, 1); // 103 + add_field("Codice fiscale", CF, 935,16); + add_field("Soggetto", NU, 951, 1); + add_field("Firma", CB, 952, 1); // 106 + add_field("Codice fiscale", CF, 953,16); + add_field("Soggetto", NU, 969, 1); + add_field("Firma", CB, 970, 1); // 107 + + add_field("Situazioni particolari", NU,1180,2, 116); // 116 add_field("Codice fiscale del rappresentante", CF,1396,16,126); // 126 add_field("Codice carica del rappresentante", NU,1412, 2); @@ -1352,7 +1362,6 @@ bool TTrasferimento770::append_record_b() rec.set(47, rec_anagiu.get(ANG_SITSOC)); } - rec.set(54, 1); // Firma del dichiarante rec.set(75, 1); // Reazione della dichiarazione (sezione I) rec.set(76, 0); // Comunicazioni relative a certificazioni lavoro dipendente const int autonomi = conta_certificazioni(); @@ -1363,6 +1372,8 @@ bool TTrasferimento770::append_record_b() rec.set(80, false); // casella prospetto SV rec.set(81, prosp_s); // casella prospetto SX rec.set(82, false); // casella prospetto SY + + rec.set(94, 1); // Firma del dichiarante rec.set(100, 0); // situazioni particolari: vale sempre 0 @@ -1412,9 +1423,9 @@ void TTrasferimento770::riepiloga_ss(const TRecord770& rec, TArray& riep_ss) con { const TString& key = code.right(3); const int num = atoi(key); - if (num >= 25 && num <= 30) + if (num >= 26 && num <= 31) { - const int idx = num-25; + const int idx = num-26; real* r = (real*)riep_ss.objptr(idx); if (r == NULL) { diff --git a/m770/77lib.h b/m770/77lib.h index b01d62f04..cc4ea5505 100755 --- a/m770/77lib.h +++ b/m770/77lib.h @@ -401,17 +401,17 @@ struct Pag_struct long numreg; // overloading operatore di confronto - int operator==(Pag_struct& s); + bool operator==(const Pag_struct& s) const; // overloading operatore di assegnazione // ritorna per riferimento la struttura // compilata con i valori del record passato - Pag_struct& operator=(TRectype & rec); + Pag_struct& operator=(const TRectype & rec); // overloading operatore di assegnazione // ritorna per riferimento la struttura // incrementata dai valori della struttura passata - Pag_struct& operator+=(Pag_struct& s); + Pag_struct& operator+=(const Pag_struct& s); }; #endif diff --git a/m770/77lib01.cpp b/m770/77lib01.cpp index 881c88c3e..a628e786a 100755 --- a/m770/77lib01.cpp +++ b/m770/77lib01.cpp @@ -1076,7 +1076,7 @@ bool TVersamento_stampa::find(TVersamento& vers) } // overloading operatore di confronto per la struct dei pagamenti -int Pag_struct::operator==(Pag_struct& s) +bool Pag_struct::operator==(const Pag_struct& s) const { if (this->datapag != s.datapag) return 0; @@ -1145,7 +1145,7 @@ int Pag_struct::operator==(Pag_struct& s) // overloading operatore di assegnazione per la struct dei pagamenti // partendo da un TRectype -Pag_struct& Pag_struct::operator=(TRectype& rec) +Pag_struct& Pag_struct::operator=(const TRectype& rec) { // compila struttura con valori del record this->datapag = rec.get_date("DATAPAG"); @@ -1177,14 +1177,14 @@ Pag_struct& Pag_struct::operator=(TRectype& rec) this->ammlordo = rec.get_real("AMMLORDO"); this->quotaprov = rec.get_real("QUOTAPROV"); this->impnetto = rec.get_real("IMPNETTO"); - this->comnetto = rec.get_real("COMNETTO"); - + this->comnetto = rec.get_real(PAG_COMNETTO); + this->numreg = rec.get_long(PAG_NUMREG); return *this; } // overloading operatore di assegnazione per la struct dei pagamenti // aggiunge i valori della struttura passata -Pag_struct& Pag_struct::operator+=(Pag_struct& s) +Pag_struct& Pag_struct::operator+=(const Pag_struct& s) { // aggiunge agli importi i valori della struttura passata this->imponibile += s.imponibile; diff --git a/m770/77qla.frm b/m770/77qla.frm index 226d9d270..a3ba4f334 100755 --- a/m770/77qla.frm +++ b/m770/77qla.frm @@ -219,100 +219,108 @@ BEGIN SPECIAL STRING TRASFER "AU001022" "NP" END -VALUTA 23 +NUMERO 23 BEGIN - KEY "SOMME NON SOGGETTE A RITENUTA" - PROMPT 66 9 "" - FIELD SOMME + KEY "Codice somme non soggette a ritenuta" + PROMPT 64 9 "" SPECIAL STRING TRASFER "AU001023" "NP" + MESSAGE _NUMEXPR,IF(SOMME>0,1,0) END VALUTA 24 BEGIN - KEY "IMPONIBILE = 21-22-23" - PROMPT 88 9 "" - FIELD IMPONIBILE + KEY "SOMME NON SOGGETTE A RITENUTA" + PROMPT 66 9 "" + FIELD SOMME SPECIAL STRING TRASFER "AU001024" "NP" END VALUTA 25 BEGIN - KEY "Ritenute operate a titolo di acconto" - PROMPT 109 9 "" - FIELD IMPORTO + KEY "IMPONIBILE = 21-22-23" + PROMPT 88 9 "" + FIELD IMPONIBILE SPECIAL STRING TRASFER "AU001025" "NP" END - VALUTA 26 BEGIN - KEY "Ritenute operate a titolo di imposta" + KEY "Ritenute operate a titolo di acconto" PROMPT 109 9 "" + FIELD IMPORTO SPECIAL STRING TRASFER "AU001026" "NP" END + VALUTA 27 BEGIN - KEY "RITENUTE SOSPESE" + KEY "Ritenute operate a titolo di imposta" PROMPT 109 9 "" - FIELD RITSOSPESE - SPECIAL STRING TRASFER "AU001027" "" + SPECIAL STRING TRASFER "AU001027" "NP" END VALUTA 28 BEGIN - KEY "ADDIZIONALE REGIONALE a titolo di acconto" + KEY "RITENUTE SOSPESE" PROMPT 109 9 "" - FIELD ADDREG - SPECIAL STRING TRASFER "AU001028" "NP" + FIELD RITSOSPESE + SPECIAL STRING TRASFER "AU001028" "" END VALUTA 29 BEGIN - KEY "ADDIZIONALE REGIONALE a titolo di imposta" + KEY "ADDIZIONALE REGIONALE a titolo di acconto" PROMPT 109 9 "" + FIELD ADDREG SPECIAL STRING TRASFER "AU001029" "NP" END VALUTA 30 BEGIN - KEY "ADDIZIONALE REGIONALE SOSPESA" + KEY "ADDIZIONALE REGIONALE a titolo di imposta" PROMPT 109 9 "" - FIELD ADDREGSOSP SPECIAL STRING TRASFER "AU001030" "NP" END VALUTA 31 BEGIN - KEY "IMPONIBILE ANNI PRECEDENTI" + KEY "ADDIZIONALE REGIONALE SOSPESA" PROMPT 109 9 "" - FIELD IMPANNIPRE + FIELD ADDREGSOSP SPECIAL STRING TRASFER "AU001031" "NP" END VALUTA 32 BEGIN - KEY "RITENUTE ANNI PRECEDENTI" + KEY "IMPONIBILE ANNI PRECEDENTI" PROMPT 109 9 "" - FIELD RITANNIPRE + FIELD IMPANNIPRE SPECIAL STRING TRASFER "AU001032" "NP" END VALUTA 33 BEGIN - KEY "CONTRIBUTI PREVIDENZIALI A CARICO DEL SOGGETTO EROGANTE" + KEY "RITENUTE ANNI PRECEDENTI" PROMPT 109 9 "" - FIELD CTINPSEROG + FIELD RITANNIPRE SPECIAL STRING TRASFER "AU001033" "NP" END VALUTA 34 BEGIN - KEY "CONTRIBUTI PREVIDENZIALI A CARICO DEL PERCIPIENTE" + KEY "CONTRIBUTI PREVIDENZIALI A CARICO DEL SOGGETTO EROGANTE" PROMPT 109 9 "" - FIELD CTINPSPERC + FIELD CTINPSEROG SPECIAL STRING TRASFER "AU001034" "NP" END +VALUTA 35 +BEGIN + KEY "CONTRIBUTI PREVIDENZIALI A CARICO DEL PERCIPIENTE" + PROMPT 109 9 "" + FIELD CTINPSPERC + SPECIAL STRING TRASFER "AU001035" "NP" +END + END