From 7ab9ec614e2c2ab47c33f04207f43cd3af2dbb58 Mon Sep 17 00:00:00 2001 From: cris Date: Thu, 27 May 2010 10:40:48 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : pi0002.exe pi0002100a.msk Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20506 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ps/pi0002.cpp | 2 +- ps/pi0002100.cpp | 970 ++++++---------------------------------------- ps/pi0002100a.h | 61 +-- ps/pi0002100a.uml | 409 +++---------------- 4 files changed, 181 insertions(+), 1261 deletions(-) diff --git a/ps/pi0002.cpp b/ps/pi0002.cpp index d44672b7b..2d8afc056 100755 --- a/ps/pi0002.cpp +++ b/ps/pi0002.cpp @@ -9,7 +9,7 @@ int main(int argc, char** argv) { case 0: default: - pi0002100(argc, argv); break; //presentazione fatture + pi0002100(argc, argv); break; //gestione anticipi fatture } exit(0); return 0; diff --git a/ps/pi0002100.cpp b/ps/pi0002100.cpp index 03eaaf0b4..ff3e2692e 100755 --- a/ps/pi0002100.cpp +++ b/ps/pi0002100.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -23,65 +24,89 @@ class TPF_mask : public TAutomask { TRelation* _rel; - bool _spork; - bool _is_new; protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); bool on_sheet_event(TOperable_field& o, TField_event e, long jolly); - bool check_bank(TEffetto& effetto, TLog_report& log) const; public: - bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, TDate & datapag, bool & valben, - char& accsal, int& rdist, int& reff, - bool& partially_unassigned, int& tipopag, bool is_old = false) const; - bool fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_new); - bool fill_rate(); - int insert_row(const TToken_string& row); - bool fill_distinta(bool clear_all = false); - void sort_sheet(); + void update_scad(); + void update_sheet(); + bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, + bool& partially_unassigned, int& tipopag) const; + bool fill_row(const TRiga_partite& rp, const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force); void update_total(); - virtual bool on_key(KEY key); - - TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf, const TDate & datapag, - int& rigadist, int& rigaeff) const; - long get_free_num() const; - void save_rate(); - void print(); - TPF_mask(); virtual ~TPF_mask(); }; - -bool TPF_mask::on_key(KEY key) +void TPF_mask::update_scad() { - if (key == K_F8) + TSheet_field& s = sfield(F_SHEET); + const long items = s.items(); + int pospagato = s.cid2index(F_PAGATO); + int posanticip = s.cid2index(F_IMPORTOANT); + int posabi = s.cid2index(F_ABI); + int poscab = s.cid2index(F_CAB); + int posanno = s.cid2index(F_ANNO); + int posnumpart = s.cid2index(F_PARTITA); + int posnriga = s.cid2index(F_RIGA); + int posnrata = s.cid2index(F_RATA); + for (long pos = 0L; pos < items; pos++) { - TSheet_field & s = sfield(F_SHEET); - const int row = s.selected(); - - if (row >= 0) + TToken_string row = s.row(pos); + TLocalisamfile scad(LF_SCADENZE); + scad.zero(); + scad.put(SCAD_TIPOCF, "C"); + scad.put(SCAD_GRUPPO, 0); + scad.put(SCAD_CONTO, 0); + scad.put(SCAD_SOTTOCONTO, get(F_CLIFO)); + scad.put(SCAD_ANNO, row.get(posanno)); + scad.put(SCAD_NUMPART, row.get(posnumpart)); + scad.put(SCAD_NRIGA, row.get(posnriga)); + scad.put(SCAD_NRATA, row.get(posnrata)); + if (scad.read() == NOERR) { - s.update_row(row); - TToken_string & r = s.row(row); - - r.add(get(F_DATADIST), s.cid2index(F_DATAPAG)); - s.update_mask(row); - s.force_update(row); + real pagato(row.get(pospagato)); + real importoant(row.get(posanticip)); + scad.put(SCAD_IMPORTOPAG, pagato); + scad.put(SCAD_IMPORTOANT, importoant); + scad.put(SCAD_CODABIPR, row.get(posabi)); + scad.put(SCAD_CODCABPR, row.get(poscab)); + scad.rewrite(); } - return false; } - return true; +} + +bool TPF_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + const int id = o.dlg(); + switch (id) + { + case DLG_SAVEREC: + if (e == fe_button) + update_scad(); + break; + case F_CLIFO: + if (e == fe_modify) + update_sheet(); + break; + case F_SHEET: + return on_sheet_event(o, e, jolly); + break; + default: + if (jolly > 0) + return on_sheet_event(o, e, jolly); + break; + } + return true; } // Calcola il residuo di una rata tenendo conto anche degli eventuali // effetti non ancora contabilizzati bool TPF_mask::calc_residual(const TRiga_scadenze& scad, - real& impres, real& imppag, TDate & datapag, bool & valben, - char& accsal, int& rdist, int& reff, - bool& partially_unassigned, int& tipopag, - bool is_old) const + real& impres, real& imppag, + bool& partially_unassigned, int& tipopag) const { tipopag = scad.get_int(SCAD_TIPOPAG); const bool valuta = scad.in_valuta(); @@ -92,8 +117,6 @@ bool TPF_mask::calc_residual(const TRiga_scadenze& scad, impres = importo.valore(); imppag = ZERO; - accsal = 'A'; - rdist = reff = 0; partially_unassigned = FALSE; // Contolla se ci sono pagamenti non assegnati da gestire @@ -131,101 +154,42 @@ bool TPF_mask::calc_residual(const TRiga_scadenze& scad, partially_unassigned = TRUE; } } - - // Se c'e' ancora un residuo calcola totale pagato con effetti - if (!impres.is_zero()) - { - TRectype& filter = _rel->curr(); - const char* field[] = { SCAD_ANNO, SCAD_NUMPART, SCAD_NRIGA, SCAD_NRATA, NULL }; - for (int i = 0; field[i]; i++) - filter.put(field[i], scad.get(field[i])); - TCursor cur(_rel, "", 2, &filter, &filter); // Elenco effetti su questa rata - - const long codcf = scad.get_long(SCAD_SOTTOCONTO); - TString80 expr; - expr << '(' << LF_EFFETTI << "->" << EFF_EFFCONT << "!=\"X\")&&"; - expr << '(' << LF_EFFETTI << "->" << EFF_TIPOCF << "==\"" << tipocf << "\")&&"; - expr << '(' << LF_EFFETTI << "->" << EFF_CODCF << "==\"" << codcf << "\")"; - cur.setfilter(expr, TRUE); - const long items = cur.items(); - if (items > 0L) - { - cur.freeze(); - const TRectype& riga = cur.curr(); - const TRectype& effe = cur.curr(LF_EFFETTI); - TString8 key = get(F_TIPODIST); key << get(F_DIST); - for (cur = 0L; cur.pos() < items; ++cur) - { - TString8 effkey = effe.get(EFF_TIPODIST); effkey << effe.get(EFF_NDIST); - if (effkey == key) - { - rdist = effe.get_int(EFF_NRIGADIST); - datapag = effe.get_date(EFF_DATASCAD); - valben = effe.get_bool(EFF_DSCVAL); - reff = riga.get_int(REFF_NRIGATR); - accsal = riga.get_char(REFF_ACCSAL); - imppag += riga.get_real(valuta ? REFF_IMPORTOVAL : REFF_IMPORTO); - tipopag = effe.get_int(EFF_TIPOPAG); - } - else - { - if (riga.get_char(REFF_ACCSAL) == 'S') - { - impres = ZERO; - if (is_old) - return true; // Devo farla vedere - break; - } - impres -= riga.get_real(valuta ? REFF_IMPORTOVAL : REFF_IMPORTO); - } - } - } - } - return !impres.is_zero(); } void TPF_mask::update_total() { TSheet_field& s = sfield(F_SHEET); - const int postot = s.cid2index(F_IMPORTO); + const int postot = s.cid2index(F_IMPORTOANT); real tot; FOR_EACH_SHEET_ROW_BACK(s, r, row) tot += real(row->get(postot)); - set(F_TOTAL, tot); + set(F_TOTALEANT, tot); enable(DLG_SAVEREC, !tot.is_zero()); } -bool TPF_mask::fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_old) +bool TPF_mask::fill_row(const TRiga_partite& rp, const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force) { - const int tipopageff = get_int(F_TIPOPAGEFF); int tipopag = 0; real impres, imppag; - char accsal; int rigadist, rigaeff; TDate datapag; bool valben = false; row.cut(0); - bool ok = calc_residual(rs, impres, imppag, datapag, valben, accsal, rigadist, rigaeff, partially_unassigned, tipopag, is_old) || force; - if (ok) - ok = tipopageff == 0 || tipopag == tipopageff; // Eventuale filtro sul tipo pagamento + bool ok = calc_residual(rs, impres, imppag, partially_unassigned, tipopag) || force; if (ok) { - row.add(imppag.string()); - row.add(accsal); - row.add(datapag == rs.get_date(SCAD_DATASCAD) ? "" : datapag); - row.add(valben ? "X" : ""); - row.add(impres.string()); - row.add(rs.get_long(SCAD_SOTTOCONTO)); - TString8 cod; cod << rs.get_char(SCAD_TIPOCF) << '|' << rs.get_long(SCAD_SOTTOCONTO); - row.add(cache().get(LF_CLIFO, cod, CLI_RAGSOC)); - row.add(rs.get(SCAD_ANNO)); + row.add(imppag.string()); // importo pagato + row.add(rs.get(SCAD_IMPORTOANT)); // importo anticipato + row.add(rs.get(SCAD_CODABIPR)); + row.add(rs.get(SCAD_CODCABPR)); + row.add(rp.get(PART_IMPTOTDOC)); // importo fattura + row.add(""); // residuo + row.add(rs.get(SCAD_ANNO)); row.add(rs.get(SCAD_NUMPART)); row.add(rs.get(SCAD_NRIGA)); row.add(rs.get(SCAD_NRATA)); row.add(rs.get(SCAD_DATASCAD)); - row.add(rigadist); - row.add(rigaeff); switch (tipopag) { case 1:row.add(TR("Rimessa Diretta")); break; @@ -283,72 +247,20 @@ HIDDEN long row_compare(TToken_string& r1, TToken_string& r2, const int sort_mod return cmp; } -int TPF_mask::insert_row(const TToken_string& row) -{ - const int sort_mode = get_int(F_SORT); - TString_array& sheet = sfield(F_SHEET).rows_array(); - int first = 0; - int last = sheet.items()-1; - - long cmp = -1; - int cur = 0; - while (first <= last) - { - cur = (first+last) / 2; - TToken_string& curr = sheet.row(cur); - cmp = row_compare((TToken_string&)row, curr, sort_mode); - if (cmp == 0) - break; - if (cmp > 0) - first = cur+1; - else - last = cur-1; - } - if (cmp) - { - if (cmp > 0) - cur++; - sheet.insert(row, cur); - } - return cur; -} - -void TPF_mask::sort_sheet() +void TPF_mask::update_sheet() { - TWait_cursor hourglass; - const int sort_mode = get_int(F_SORT); - - TString_array& rows = sfield(F_SHEET).rows_array(); - for (int i = 0; i < rows.items()-1; i++) - { - for (int j = i+1; j < rows.items(); j++) - { - TToken_string& r1 = rows.row(i); - TToken_string& r2 = rows.row(j); - if (row_compare(r1, r2, sort_mode) > 0) - rows.swap(i, j); - } - } -} - -bool TPF_mask::fill_rate() -{ - const long ndist = get_long(F_DIST); - const TDate dadata = get(F_DA_DATA); - const TDate adata = get(F_A_DATA); - const TString& codval = get(F_CODVAL); - TSheet_field& sheet = sfield(F_SHEET); + TSheet_field& sheet = sfield(F_SHEET); sheet.destroy(); TRelation rel(LF_PARTITE); TRectype filter(LF_PARTITE); - filter.put(PART_TIPOCF, get(F_TIPOCF)); + filter.put(PART_TIPOCF, "C"); filter.put(PART_GRUPPO, 0); filter.put(PART_CONTO, 0); filter.put(PART_SOTTOCONTO, get(F_CLIFO)); TString filtro; - filtro << "(CHIUSA!=\"X\")&&(CODVAL==\"" << codval << "\")"; + filtro << "(CHIUSA!=\"X\")"; TCursor partite(&rel, filtro, 1, &filter, &filter); const long items = partite.items(); @@ -394,392 +306,19 @@ bool TPF_mask::fill_rate() const TRiga_scadenze& rs = rp.rata(rata); if (!rs.chiusa()) { - const TDate data = rs.get(SCAD_DATASCAD); - if (data >= dadata && (!adata.ok() || data <= adata)) - { - bool partially_unassigned; - if (fill_row(rs, row, partially_unassigned, false, false)) - { - const int numrow = sheet.items(); - sheet.row(numrow) = row; - if (partially_unassigned) - sheet.disable_cell(numrow, 1); // Non permette di mettere a saldo - } - } + bool partially_unassigned; + if (fill_row(rp, rs, row, partially_unassigned, false)) + { + const int numrow = sheet.items(); + sheet.row(numrow) = row; + } } // if rata aperta } // for ogni rata } // if e' una fattura } // for ogni fattura } // for ogni partita } // if ci sono partite - return fill_distinta(false); -} - -bool TPF_mask::fill_distinta(bool clear_all) -{ - TWait_cursor hourglass; - TSheet_field& sheet = sfield(F_SHEET); - if (clear_all) - sheet.destroy(); - const char tdist = get(F_TIPODIST)[0]; - const long ndist = get_long(F_DIST); - TDistinta dist(tdist, ndist); - const bool dist_cont = dist.contabilizzata(); - if (dist.items() > 0) - { - TToken_string row; - for (int e = 0; e < dist.items(); e++) - { - const TEffetto& eff = dist[e]; - const TBill clifo(0, 0, eff.get_long(EFF_CODCF), eff.get_char(EFF_TIPOCF)); - if (e==0) - set(F_TIPOPAG, eff.get_int(EFF_TIPOPAG)); - for (int r = 1; r <= eff.rows_r(); r++) - { - const TRectype& reff = eff.row_r(r); - const int anno = reff.get_int(REFF_ANNO); - const TString16 part = reff.get(REFF_NUMPART); - const int nriga = reff.get_int(REFF_NRIGA); - const int nrata = reff.get_int(REFF_NRATA); - TPartita game(clifo, anno, part); - if (game.esiste(nriga, nrata)) - { - TRiga_scadenze& rs = game.rata(nriga, nrata); - bool partially_unassigned; - if (fill_row(rs, row, partially_unassigned, dist_cont, clear_all)) - { - const int numrow = insert_row(row); - if (partially_unassigned) - sheet.disable_cell(numrow, 1); // Non e' possibile mettere saldo - if (dist_cont) - sheet.disable_cell(numrow, -1); // Non e' possibile modificare nulla - } - } - else - { - TString msg; - msg << "La riga " << (e+1) << " della distinta " << ndist - << " si riferisce ad una rata o partita non valida:\n" - << clifo.tipo() << ' ' << clifo.codclifo() << ' ' << anno << ' ' - << part << " Riga " << nriga << " Rata " << nrata << "\n" - << "Si desidera eliminare l'effetto?"; - if (yesno_box(msg)) - { - TLocalisamfile righe(LF_REFFETTI); - righe.curr() = reff; - if (righe.remove() != NOERR) - error_box("Errore di cancellazione riga effetto: %d", righe.status()); - } - } - } - } - } - - if (get_bool(F_SORT)) - sort_sheet(); - - sheet.force_update(); - update_total(); - _spork = FALSE; - - const bool full = sheet.items() > 0; - if (full) - { - disable(-3); - disable(-4); - } - enable(-5, full && !dist_cont); - show(F_UNCONTABIL, dist_cont); - - return full; -} - -TRectype& TPF_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, const TDate & datapag, - int& rigadist, int& rigaeff ) const -{ - TString16 codice; codice << tipocf << '|' << codcf; - const bool ragg = !cache().get(LF_CFVEN, codice, CFV_RAGGEFF).blank(); - - TEffetto* neweff = NULL; - if (ragg) - { - for (int i = 0; i < dist.items(); i++) - { - TEffetto& eff = dist[i]; - if (eff.get_char(EFF_TIPOCF) == tipocf && eff.get_long(EFF_CODCF) == codcf && datapag == eff.get_date(EFF_DATASCAD)) - { - neweff = &eff; - rigadist = i+1; - break; - } - } - } - if (neweff == NULL) - { - neweff = new TEffetto; - dist.righe().add(neweff); - rigadist = dist.items(); - neweff->put(EFF_TIPOCF, tipocf); - neweff->put(EFF_CODCF, codcf); - neweff->put(EFF_CODVAL, get(F_CODVAL)); - neweff->put(EFF_CAMBIO, get(F_CAMBIO)); - neweff->put(EFF_DATACAMBIO, get(F_DATACAMBIO)); - } - rigaeff = neweff->rows_r()+1; - return neweff->row_r(rigaeff, TRUE); -} - -bool TPF_mask::check_bank(TEffetto& effetto, TLog_report& log) const -{ - const int tipopag = effetto.get_int(EFF_TIPOPAG); - const int tipocf = effetto.get_char(EFF_TIPOCF); - - // Controllo solo ri.ba. clienti e bonifici fornitori - if ((tipocf=='F') ? (tipopag==9) : (tipopag==3)) - { - TString8 abi = effetto.get(EFF_CODABI); - TString8 cab = effetto.get(EFF_CODCAB); - TString80 iban = effetto.get(EFF_IBAN); - - TToken_string key(8); - key = effetto.get(EFF_TIPOCF); - key.add(effetto.get(EFF_CODCF)); - const TRectype& clifo = cache().get(LF_CLIFO, key); - - if (real::is_null(abi) || real::is_null(cab)) - { - abi = clifo.get(CLI_CODABI); - cab = clifo.get(CLI_CODCAB); - } - if (iban.blank()) - iban = clifo.get(CLI_IBAN); - if (iban.starts_with("IT")) - { - if (real::is_null(abi) || real::is_null(cab)) - { - abi = iban.mid( 5, 5); - cab = iban.mid(10, 5); - } - else - { - TString16 abicab; abicab << abi << cab; - if (iban.mid(5, 10) != abicab) - iban.cut(0); - } - } - - effetto.put(EFF_CODABI, abi); - effetto.put(EFF_CODCAB, cab); - effetto.put(EFF_IBAN, iban); - - if (tipopag == 3 && (real::is_null(abi) || real::is_null(cab))) - { - TString msg; - msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"), - (const char*)key, effetto.get_long(EFF_NPROGTR)); - log.log(2, msg); - return false; - } - - if (tipopag == 9 && iban.blank()) - { - TString msg; - msg.format(FR("Impossibile determinare IBAN del %s sull'effetto %ld"), - (const char*)key, effetto.get_long(EFF_NPROGTR)); - log.log(2, msg); - return false; - } - } - return true; -} - -void TPF_mask::save_rate() -{ - TLog_report log(TR("Generazione effetti")); - - const char tipodist = get(F_TIPODIST)[0]; - long numdist = get_long(F_DIST); - if (_is_new) - { - TLocalisamfile f(LF_EFFETTI); f.setkey(4); - while (true) - { - f.put(EFF_TIPODIST, tipodist); - f.put(EFF_NDIST, numdist); - f.put(EFF_NRIGADIST, 1); - if (f.read() != NOERR) - break; - const long nd = get_free_num(); - TString msg; msg.format(FR("La distinta %ld è già presente: verrà rinumerata in %ld"), numdist, nd); - log.log(1, msg); - numdist = nd; - } - _is_new = FALSE; - } - - TDistinta distinta(tipodist, numdist, _lock); - - const TString& codval = get(F_CODVAL); - const real cambio = get(F_CAMBIO); - const bool eurocambio = get_bool(F_EURO); - const int tipopag = get_int(F_TIPOPAG); - - bool zeroes = false; // Esistono righe effetto da cancellare - - TSheet_field& sheet = sfield(F_SHEET); - FOR_EACH_SHEET_ROW(sheet, r, row) - { - real imp = row->get(sheet.cid2index(F_IMPORTO)); - real impval; - if (codval.full() && !imp.is_zero()) - { - impval = imp; - TCurrency c(impval, codval, cambio, eurocambio ? _exchange_contro : _exchange_base); - c.change_to_firm_val(); - imp = c.get_num(); - } - char accsal = row->get_char(sheet.cid2index(F_ACCSAL)); - int rigadist = row->get_int(sheet.cid2index(F_RIGADIST)); - int rigaeff = row->get_int(sheet.cid2index(F_RIGAEFF)); - if (rigaeff > 0 || accsal == 'S' || imp > ZERO) - { - TToken_string key; - key.add(get(F_TIPOCF)); - key.add("0|0"); - key.add(row->get(sheet.cid2index(F_CODCF))); - key.add(row->get(sheet.cid2index(F_ANNO))); - key.add(row->get(sheet.cid2index(F_PARTITA))); - key.add(row->get(sheet.cid2index(F_RIGA))); - // Trova partita - const TRectype& part = cache().get(LF_PARTITE, key); - // Trova rata - key.add(row->get(sheet.cid2index(F_RATA))); - const TRectype& scad = cache().get(LF_SCADENZE, key); -// eff.put(EFF_DATASCAD, scad.get(SCAD_DATASCAD)); - TDate datapag(row->get(sheet.cid2index(F_DATAPAG))); - - if (!datapag.ok()) - datapag = scad.get(SCAD_DATASCAD); - if (rigaeff <= 0) - { - const char tipocf = get(F_TIPOCF)[0]; - const long codcf = row->get_long(sheet.cid2index(F_CODCF)); - - TRectype& reff = new_row_effetto(distinta, tipocf, codcf, datapag, rigadist, rigaeff); - reff.put(REFF_ANNO, row->get(sheet.cid2index(F_ANNO))); - reff.put(REFF_NUMPART, row->get(sheet.cid2index(F_PARTITA))); - reff.put(REFF_NRIGA, row->get(sheet.cid2index(F_RIGA))); - reff.put(REFF_NRATA, row->get(sheet.cid2index(F_RATA))); - - - reff.put(REFF_NFATT, part.get(PART_NUMDOC)); - reff.put(REFF_DATAFATT, part.get(PART_DATADOC)); - reff.put(REFF_IMPFATT, part.get(PART_IMPORTO)); - - TString8 abi = scad.get(SCAD_CODABI); - TString8 cab = scad.get(SCAD_CODCAB); - - key.format("%c|%ld", tipocf, codcf); - const TRectype& clifo = cache().get(LF_CLIFO, key); - TString80 iban = clifo.get(CLI_IBAN); - if (atol(abi) == 0 || atol(cab) == 0L) - { - abi = clifo.get(CLI_CODABI); - cab = clifo.get(CLI_CODCAB); - } - - TEffetto& eff = distinta[rigadist-1]; - - eff.put(EFF_DATASCAD, datapag); - eff.put(EFF_DSCVAL, row->get(sheet.cid2index(F_VALBEN))); - eff.put(EFF_TIPOPAG, tipopag); - eff.put(EFF_CODABI, abi); - eff.put(EFF_CODCAB, cab); - eff.put(EFF_IBAN, iban); - } - - TEffetto& eff = distinta[rigadist-1]; - check_bank(eff, log); // Cerca di sistemare ABI/CAB/IBAN - - TRectype& reff = eff.row_r(rigaeff); - const real oldimp = reff.get(REFF_IMPORTO); - const real oldimpval = reff.get(REFF_IMPORTOVAL); - reff.put(REFF_IMPORTO, imp); - reff.put(REFF_IMPORTOVAL, impval); - reff.put(REFF_ACCSAL, accsal); - if (accsal != 'S' && imp.is_zero()) - { - reff.put(REFF_ACCSAL, 'Z'); // Segna la riga come NULLA - zeroes = true; - } - } - } - - // Ricalcola totali righe ed elimina le righe NULLE - TLocalisamfile f(LF_EFFETTI); f.setkey(1); - for (int rd = distinta.items()-1; rd >= 0; rd--) - { - TEffetto& eff = distinta[rd]; - real totimp, totimpval; - for (int i = eff.rows_r(); i > 0; i--) - { - const TRectype& reff = eff.row_r(i); - if (reff.get_char(REFF_ACCSAL) == 'Z') - { - eff.destroy_row_r(i, true); - } - else - { - totimp += reff.get_real(EFF_IMPORTO); - totimpval += reff.get_real(EFF_IMPORTOVAL); - } - } - if (eff.rows_r() == 0) - { - int err = eff.read(f, eff, _lock); - if (err == NOERR) - err = eff.remove(f); - if (err == NOERR) - distinta.righe().destroy(rd, true); - else - { - TString msg; - msg.format(FR("Errore %d durante la cancellazione della riga %d"), err, rd+1); - log.log(2, msg); - } - } - else - { - eff.put(EFF_TIPOPAG, tipopag); - eff.put(EFF_IMPORTO, totimp); - eff.put(EFF_IMPORTOVAL, totimpval); - eff.put(EFF_CODVAL, codval); - eff.put(EFF_CAMBIO, cambio); - eff.put(EFF_CONTROEURO, eurocambio); - eff.put(EFF_DATACAMBIO, get(F_DATACAMBIO)); - eff.put(EFF_SPESE, get(F_SPESE)); - } - } - - TToken_string dati_dist; - dati_dist.add(tipodist); - dati_dist.add(numdist); - dati_dist.add(get(F_DATADIST)); - dati_dist.add(get(F_ABI)); - dati_dist.add(get(F_CAB)); - dati_dist.add(get(F_PROG)); - distinta.write(false, &dati_dist); - - if (log.recordset()->items() > 0) - log.preview(); -} - -void TPF_mask::print() -{ - TString16 cmd; - cmd << "ef0 -4 " << get(F_TIPODIST) << ' ' << get(F_DIST); - TExternal_app app(cmd); - app.run(); + sheet.force_update(); } bool TPF_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) @@ -787,304 +326,34 @@ bool TPF_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) TMask& m = o.mask(); switch (o.dlg()) { - case F_IMPORTO: + case F_IMPORTOANT: if (e == fe_modify) - { - TMask_field& as = m.field(F_ACCSAL); - if (as.enabled()) - { - const real imp = m.get(F_IMPORTO); - const real res = m.get(F_RESIDUO); - as.set(imp >= res ? "S" : "A"); - } - } - break; - case F_PAGA: - if (e == fe_button) - { - TMask& m = o.mask(); - if (m.get_real(F_IMPORTO).is_zero()) - { - m.set(F_IMPORTO, m.get(F_RESIDUO)); - TMask_field& as = m.field(F_ACCSAL); - if (as.enabled()) - as.set("S"); - } - else - { - m.reset(F_IMPORTO); - m.reset(F_ACCSAL); - } - _spork = true; - } + update_total(); break; case F_SHEET: switch(e) { - case se_query_add: - { - TOperable_field& ronaldo = (TOperable_field&)field(F_AGGIORNA); - if (ronaldo.active()) - on_field_event(ronaldo, fe_button, 0); - } - return false; - case se_notify_modify: - _spork = true; - update_total(); - break; - default: - break; - } - + case se_query_add: + return false; + case se_notify_modify: + update_total(); + break; + default: + break; + } default: break; } return true; } -long TPF_mask::get_free_num() const -{ - TLocalisamfile eff(LF_EFFETTI); eff.setkey(4); - TRectype& curr = eff.curr(); - const TString& tipodist = get(F_TIPODIST); - curr.put(EFF_TIPODIST, tipodist); - curr.put(EFF_NDIST, 99999L); - const int err = eff.read(_isgreat); - long n = 1L; - if (err != _isemptyfile) - { - if (err == NOERR) - eff.prev(); - if (curr.get(EFF_TIPODIST) == tipodist) - n += curr.get_long(EFF_NDIST); - } - return n; -} - -bool TPF_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) -{ - switch (o.dlg()) - { - case DLG_NEWREC: - { - const long n = get_free_num(); - set(F_DIST, n); - disable(F_DIST); - disable(DLG_NEWREC); - set_focus_field(F_ABI); - _is_new = TRUE; - _spork = FALSE; - } - break; - case F_DIST: - if (e == fe_modify) - { - TEdit_field& ef = (TEdit_field&)o; - bool ok = ef.check(); - if (ok) - { - const TCursor& cur = *ef.browse()->cursor(); - ok = cur.ok(); - if (ok) - { - const TRectype& rec = cur.curr(); - if (rec.get_bool(EFF_EFFCONT)) - { - warning_box(FR("La distinta %s è già stata contabilizzata,\n" - "per cui non è possibile modificarla"), (const char*)ef.get()); - show(F_UNCONTABIL); - } - ok = fill_distinta(true); - } - } - _is_new = !ok; // Memorizza se è una distinta nuova - enable(-3, _is_new); // Abilita tipo, cliente, valuta, ecc., solo se nuova - enable(F_TIPOPAG, _is_new); - disable(F_AGGIORNA); - } - break; - case F_CODVAL: - if (e == fe_modify && !o.empty()) - { - TTable cam("CAM"); - cam.put("CODTAB", o.get()); - int err = cam.read(_isgteq); - if (err != NOERR || cam.get("CODTAB").compare(o.get(), 3) != 0) - { - const TRectype& val = cache().get("%VAL", o.get()); - TString16 str = val.get("S4"); - if (str.blank()) str = val.get("R10"); - set(F_CAMBIO, str); - } - } - break; - case F_AGGIORNA: - if (e == fe_button) - { - TEdit_field& numdist = efield(F_DIST); - if (!numdist.empty()) - { - bool go = TRUE; - if (!numdist.enabled() && sfield(F_SHEET).items() > 0) - { - go = check_fields(); - if (go && _spork && yesno_box(TR("Si desidera registrare la distinta?"))) - save_rate(); - } - if (go) - go = fill_rate(); - } - else - return error_box(TR("E' necessario specificare un numero di distinta")); - } - break; - case F_CONTABILI: - if (e == fe_button) - { - const char tipodist = get(F_TIPODIST)[0]; - const long numdist = get_long(F_DIST); - TString16 cmd; - cmd << "ef0 -7 " << tipodist << ' ' << numdist; - TExternal_app app(cmd); - if (app.run() == 0) - { - long numreg = 0; // Numero di registrazione contabile - TLocalisamfile eff(LF_EFFETTI); - eff.setkey(4); - eff.put(EFF_TIPODIST, tipodist); - eff.put(EFF_NDIST,numdist); - eff.put(EFF_NRIGADIST, 1); // Cerco prima riga distinta - if (eff.read() == NOERR) - numreg = eff.get_long(EFF_NUMREG); - if (numreg > 0) - message_box("La distinta %ld e' stata contabilizzata col movimento %ld", - numdist, numreg); - else - warning_box("La distinta %ld non e' stata contabilizzata", numdist); - } - stop_run(K_ESC); - } - break; - case F_UNCONTABIL: - if (e == fe_button) - { - const char tipodist = get(F_TIPODIST)[0]; - const long numdist = get_long(F_DIST); - if (tipodist > ' ' && numdist > 0) - { - TRelation rel(LF_EFFETTI); - TRectype& rec = rel.curr(); - rec.put(EFF_TIPODIST, tipodist); - rec.put(EFF_NDIST,numdist); - TCursor cur(&rel, "", 4, &rec, &rec); - const TRecnotype items = cur.items(); - cur.freeze(); - - TAssoc_array movs; - for (cur = 0; cur.pos() < items; ++cur) - { - movs.add(rec.get(EFF_NUMREG)); - rec.zero(EFF_EFFCONT); - rec.zero(EFF_NUMREG); - rel.rewrite(); - } - - if (movs.items() > 0) - { - TString msg; - msg = "E' necessario cancellare i seguenti movimenti contabili:\n"; - FOR_EACH_ASSOC_OBJECT(movs, hash, key, obj) - msg << key << ' '; - warning_box(msg); - } - stop_run(K_ESC); - } - } - break; - case DLG_DELREC: - if (e == fe_button && yesno_box("Confermare l'eliminazione della distinta %ld", - get_long(F_DIST))) - { - TSheet_field& sheet = sfield(F_SHEET); - FOR_EACH_SHEET_ROW(sheet, r, row) - { - row->add(" ", 0); - row->add("A", 1); - } - save_rate(); - } - break; - case DLG_SAVEREC: - if (e == fe_button) - { - TEdit_field& cab = efield(F_CAB); - if (!cab.empty()) - { - if (check_fields()) - { - save_rate(); - fill_distinta(true); - disable(F_TIPOPAG); - } - } - else - return error_box("E' necessario specificare una banca di presentazione"); - } - break; - case DLG_PRINT: - if (e == fe_button) - { - print(); - return FALSE; - } - break; - case F_SORT: - if (e == fe_modify) - { - TSheet_field& s = sfield(F_SHEET); - if (s.items() > 0) - { - sort_sheet(); - s.force_update(); - } - } - break; - case F_CLIFO: - case F_DA_DATA: - case F_A_DATA: - if (e == fe_modify) - { - if (get(F_CLIFO).not_empty() || get(F_DA_DATA).not_empty() || get(F_A_DATA).not_empty()) - enable(F_AGGIORNA); - } - break; - case F_DATAPAG: - if (e == fe_close) - { - TDate datapag(o.get()); - - if (!datapag.ok()) - datapag = o.mask().get(F_DATA); - return datapag >= get_date(F_DATADIST) || yesno_box("Riga n. %d. Data pagamento precedente alla data distinta.\n Si desidera continuare", sfield(F_SHEET).selected()); - } - case F_SHEET: - return on_sheet_event(o, e, jolly); - default: - if (jolly > 0) - return on_sheet_event(o, e, jolly); - break; - } - return TRUE; -} - TPF_mask::TPF_mask() : TAutomask("pi0002100a") { - _rel = new TRelation(LF_REFFETTI); - _rel->add(LF_EFFETTI, "NPROGTR==NPROGTR"); } TPF_mask::~TPF_mask() -{ delete _rel; } +{ +} /////////////////////////////////////////////////////////// @@ -1093,59 +362,40 @@ TPF_mask::~TPF_mask() class TPresent_fatture : public TSkeleton_application { - TPF_mask* _mask; +protected: + virtual const char* extra_modules() const { return "sc"; } public: virtual bool create(); virtual void main_loop(); - virtual void print(); virtual bool firm_change_enabled() const { return false; } }; void TPresent_fatture::main_loop() { open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_CFVEN, - LF_PARTITE, LF_SCADENZE, LF_PAGSCA, - LF_EFFETTI, LF_REFFETTI, LF_CESS, 0); - enable_menu_item(M_FILE_PRINT); - _mask = new TPF_mask; - do + LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0); + TPF_mask m; + while (m.run() == K_ENTER) { - _mask->reset(); - _mask->enable(-3); - _mask->enable(F_TIPOPAG); - _mask->enable(-4); - _mask->disable(-5); - _mask->disable(DLG_SAVEREC); - _mask->hide(F_UNCONTABIL); - _mask->sfield(F_SHEET).destroy(); } - while (_mask->run() != K_QUIT); - - delete _mask; - _mask = NULL; } -void TPresent_fatture::print() -{ - if (_mask) - _mask->print(); -} - - bool TPresent_fatture::create() { - if (!has_module(EPAUT)) + //se non ha la sc non può proseguire + if (!has_module(SCAUT)) return error_box(TR("Modulo non autorizzato")); - - return TSkeleton_application::create(); + Tdninst dninst; + if (!dninst.can_I_run(true)) + return error_box(TR("Programma non autorizzato!")); + return TSkeleton_application::create(); } - -int pi000200(int argc, char* argv[]) +int pi0002100(int argc, char* argv[]) { int n = 0; TPresent_fatture pe; - pe.run(argc, argv, TR("Presentazione fatture")); + pe.run(argc, argv, TR("Gestione anticipi fatture")); return 0; } diff --git a/ps/pi0002100a.h b/ps/pi0002100a.h index 5c6bc0dd7..3c10e3393 100755 --- a/ps/pi0002100a.h +++ b/ps/pi0002100a.h @@ -1,46 +1,19 @@ -#define F_TIPOCF 201 -#define F_DA_DATA 202 -#define F_A_DATA 203 -#define F_ABI 204 -#define F_CAB 205 -#define F_TIPODIST 206 -#define F_DIST 207 -#define F_DUMMYDIST 208 -#define F_DATADIST 209 -#define F_CODVAL 210 -#define F_EURO 211 -#define F_CAMBIO 212 -#define F_DATACAMBIO 213 -#define F_DESCAB 214 -#define F_SORT 215 -#define F_CLIFO 220 -#define F_RAGSOCCF 221 -#define F_TIPOPAG 222 -#define F_TOTAL 230 -#define F_SPESE 231 -#define F_TIPOEFF 232 -#define F_PROG 233 +#define F_CLIFO 201 +#define F_RAGSOCCF 202 +#define F_DATAMOV 203 +#define F_TOTALEANT 204 -#define F_SHEET 300 -#define F_AGGIORNA 301 -#define F_CONTABILI 302 -#define F_UNCONTABIL 303 +#define F_SHEET 300 -#define F_TIPOPAGEFF 401 - -#define F_PAGA 100 -#define F_IMPORTO 101 -#define F_ACCSAL 102 -#define F_DATAPAG 103 -#define F_VALBEN 104 -#define F_RESIDUO 105 -#define F_CODCF 106 -#define F_RAGSOC 107 -#define F_ANNO 108 -#define F_PARTITA 109 -#define F_RIGA 110 -#define F_RATA 111 -#define F_DATA 112 -#define F_RIGADIST 113 -#define F_RIGAEFF 114 -#define F_DESC_TIPO 115 +#define F_PAGATO 101 +#define F_IMPORTOANT 102 +#define F_ABI 103 +#define F_CAB 104 +#define F_IMPORTO 105 +#define F_RESIDUO 106 +#define F_ANNO 107 +#define F_PARTITA 108 +#define F_RIGA 109 +#define F_RATA 110 +#define F_DATA 111 +#define F_TIPOPAG 112 diff --git a/ps/pi0002100a.uml b/ps/pi0002100a.uml index 8bd1caaa9..a660535eb 100755 --- a/ps/pi0002100a.uml +++ b/ps/pi0002100a.uml @@ -2,249 +2,29 @@ TOOLBAR "topbar" 0 0 0 2 -BUTTON DLG_NEWREC 10 2 -BEGIN - PROMPT -16 -1 "~Nuovo" - PICTURE BMP_NEWREC - PICTURE BMP_NEWRECDN - GROUP 3 -END - BUTTON DLG_SAVEREC 10 2 BEGIN PROMPT -26 -1 "~Registra" - PICTURE BMP_SAVEREC PICTURE BMP_SAVERECDN END -BUTTON DLG_DELREC 10 2 -BEGIN - PROMPT -36 -1 "~Elimina" - - PICTURE BMP_DELREC - PICTURE BMP_DELRECDN - GROUP 5 -END - -BUTTON DLG_PRINT 10 2 -BEGIN - PROMPT -46 -1 "" - PICTURE BMP_PRINT -END - #include ENDPAGE -PAGE "Disposizioni incassi/pagamenti" 0 2 0 0 +PAGE "Gestione anticipi fatture" 0 2 0 0 -GROUPBOX DLG_NULL 78 6 +GROUPBOX DLG_NULL 78 4 BEGIN - PROMPT 1 0 "@bDistinta" -END - -LIST F_TIPODIST 1 15 -BEGIN - PROMPT 2 1 "Tipo " - ITEM "I|All'incasso" - MESSAGE ENABLE,F_TIPOEFF - ITEM "B|Salvo buon fine" - MESSAGE RESET,F_TIPOEFF|DISABLE,F_TIPOEFF - ITEM "S|Allo sconto" - MESSAGE RESET,F_TIPOEFF|DISABLE,F_TIPOEFF - GROUP 3 -END - -LIST F_DUMMYDIST 1 -BEGIN - PROMPT 15 1 "" - ITEM "1|1" - FLAGS "H" -END - -NUMBER F_DIST 5 -BEGIN - PROMPT 28 1 "Numero " - USE LF_EFFETTI KEY 4 SELECT NRIGADIST==1 - INPUT TIPODIST F_TIPODIST - INPUT NDIST F_DIST - INPUT NRIGADIST F_DUMMYDIST - DISPLAY "Tipo" TIPODIST - DISPLAY "Numero" NDIST - DISPLAY "Data@10" DATADIST - DISPLAY "C/F" TIPOCF - DISPLAY "ABI@5" CODABIP - DISPLAY "CAB@5" CODCABP - DISPLAY "Valuta" CODVAL - OUTPUT F_TIPODIST TIPODIST - OUTPUT F_DIST NDIST - OUTPUT F_DATADIST DATADIST - OUTPUT F_CODVAL CODVAL - OUTPUT F_CAMBIO CAMBIO - OUTPUT F_DATACAMBIO DATACAMBIO - OUTPUT F_EURO CONTROEURO - OUTPUT F_TIPOCF TIPOCF - OUTPUT F_ABI CODABIP - OUTPUT F_CAB CODCABP - OUTPUT F_PROG PROGBNP - OUTPUT F_TIPOPAG TIPOPAG - OUTPUT F_SPESE SPESE - CHECKTYPE SEARCH - GROUP 4 -END - -STRING F_CODVAL 3 -BEGIN - PROMPT 50 1 "Valuta " - FLAGS "UZ" - USE %VAL - INPUT CODTAB F_CODVAL - DISPLAY "Codice" CODTAB - DISPLAY "Cambio\nStandard" S4 - DISPLAY "Contro\nEuro@6" B1 - DISPLAY "Denominazione@50" S0 - OUTPUT F_CODVAL CODTAB - OUTPUT F_EURO B1 - CHECKTYPE NORMAL - GROUP 3 - MESSAGE EMPTY CLEAR,6@ - MESSAGE ENABLE,6@ -END - -BOOLEAN F_EURO -BEGIN - PROMPT 64 1 "Contro Euro" - FLAGS "D" -END - -DATE F_DATADIST -BEGIN - PROMPT 2 2 "Data " - FLAGS "A" - CHECKTYPE REQUIRED -END - -DATE F_DATACAMBIO -BEGIN - PROMPT 23 2 "Data cambio " - FLAGS "R" - USE CAM - JOIN %VAL ALIAS 104 INTO CODTAB[1,3]==CODTAB[1,3] - INPUT CODTAB[1,3] F_CODVAL SELECT - INPUT CODTAB[4,11] F_DATACAMBIO - DISPLAY "Cod" CODTAB[1,3] - DISPLAY "Data@10" D0 - DISPLAY "Cambio" S4 - DISPLAY "Parita'\nEuro@6" B1 - DISPLAY "Valuta@50" 104@->S0 - OUTPUT F_DATACAMBIO D0 - OUTPUT F_CAMBIO S4 - CHECKTYPE SEARCH - GROUP 6 -END - -NUMBER F_CAMBIO 15 6 -BEGIN - PROMPT 50 2 "Cambio " - GROUP 6 -END - -NUMBER F_ABI 5 -BEGIN - PROMPT 2 3 "Banca " - FLAGS "Z" - USE BNP - JOIN %BAN ALIAS 100 INTO CODTAB==CODTAB[1,10] - INPUT CODTAB[1,5] F_ABI - INPUT CODTAB[6,10] F_CAB - INPUT CODTAB[11,12] F_PROG - DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] - DISPLAY "Progr." CODTAB[11,12] - DISPLAY "IBAN@25" S3 - DISPLAY "Denominazione@50" 100@->S0 - OUTPUT F_ABI CODTAB[1,5] - OUTPUT F_CAB CODTAB[6,10] - OUTPUT F_DESCAB 100@->S0 - OUTPUT F_PROG CODTAB[11,12] - CHECKTYPE SEARCH -END - -NUMBER F_CAB 5 -BEGIN - PROMPT 17 3 "" - FLAGS "Z" - COPY ALL F_ABI - CHECKTYPE REQUIRED -END - -NUMBER F_PROG 2 -BEGIN - PROMPT 26 3 "" - FLAGS "Z" - COPY ALL F_ABI - CHECKTYPE SEARCH -END - - -STRING F_DESCAB 50 42 -BEGIN - PROMPT 32 3 "" - USE %BAN KEY 2 SELECT 100@->CODTAB!="" - JOIN BNP ALIAS 100 INTO CODTAB==CODTAB - INPUT S0 F_DESCAB - DISPLAY "Denominazione@50" S0 - DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] - OUTPUT F_ABI CODTAB[1,5] - OUTPUT F_CAB CODTAB[6,10] - OUTPUT F_DESCAB S0 - CHECKTYPE SEARCH -END - -LIST F_TIPOPAG 1 30 -BEGIN - PROMPT 2 4 "Pagamento " - ITEM "1|Rimessa Diretta" - ITEM "2|Tratta" - ITEM "3|Ricevuta Bancaria" - ITEM "4|Cessione" - ITEM "5|Paghero'" - ITEM "6|Lettera di credito" - ITEM "7|Tratta accettata" - ITEM "8|Rapporti interbancari diretti" - ITEM "9|Bonifico" -END - -LIST F_TIPOEFF 1 10 -BEGIN - PROMPT 50 4 "Tipo effetti " - ITEM "C|Attivi" - MESSAGE COPY,F_TIPOCF - ITEM "F|Passivi" - MESSAGE COPY,F_TIPOCF -END - -GROUPBOX DLG_NULL 78 5 -BEGIN - PROMPT 1 6 "@bSelezione effetti" -END - -LIST F_TIPOCF 1 9 -BEGIN - PROMPT 2 7 "" - ITEM "C|Cliente" - ITEM "F|Fornitore" - FLAGS "D" - //GROUP 3 + PROMPT 1 0 "Parametri" END NUMBER F_CLIFO 6 BEGIN - PROMPT 15 7 "" + PROMPT 2 1 "Cliente " USE LF_CLIFO - INPUT TIPOCF F_TIPOCF SELECT + INPUT TIPOCF "C" SELECT INPUT CODCF F_CLIFO DISPLAY "Codice" CODCF DISPLAY "Ragione Sociale@50" RAGSOC @@ -256,9 +36,9 @@ END STRING F_RAGSOCCF 50 37 BEGIN - PROMPT 25 7 "" + PROMPT 25 1 "" USE LF_CLIFO KEY 2 - INPUT TIPOCF F_TIPOCF SELECT + INPUT TIPOCF "C" SELECT INPUT RAGSOC F_RAGSOCCF DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Codice" CODCF @@ -267,182 +47,104 @@ BEGIN ADD RUN cg0 -1 END -DATE F_DA_DATA +DATE F_DATAMOV BEGIN - PROMPT 2 8 "Dal " + PROMPT 2 2 "Data mov. " END -DATE F_A_DATA +CURRENCY F_TOTALEANT BEGIN - PROMPT 20 8 "Al " - FLAGS "A" -END - -LISTBOX F_SORT 10 -BEGIN - PROMPT 35 8 "Ordinamento " - ITEM " |Standard" - ITEM "1|Scadenza" - ITEM "2|Residuo" -END - -BUTTON F_AGGIORNA 10 2 -BEGIN - PROMPT 66 7 "" - PICTURE BMP_SELECT -END - -LIST F_TIPOPAGEFF 1 30 -BEGIN - PROMPT 2 9 "Solo effetti con tipo pagamento " - ITEM " | " - ITEM "1|Rimessa Diretta" - ITEM "2|Tratta" - ITEM "3|Ricevuta Bancaria" - ITEM "4|Cessione" - ITEM "5|Paghero'" - ITEM "6|Lettera di credito" - ITEM "7|Tratta accettata" - ITEM "8|Rapporti interbancari diretti" - ITEM "9|Bonifico" -END - -BUTTON F_CONTABILI 30 1 -BEGIN - PROMPT 2 11 "~Contabilizzazione" - GROUP 5 -END - -BUTTON F_UNCONTABIL 30 1 -BEGIN - PROMPT 47 11 "~Annulla contabilizzazione" - FLAGS "H" + PROMPT 2 4 "Totale " + FLAGS "D" END SPREADSHEET F_SHEET 0 -2 BEGIN - PROMPT 0 12 "" - ITEM "Importo@18" - ITEM "A/S@3" - ITEM "Data Pagamento" - ITEM "Val.Ben." + PROMPT 0 6 "Partite aperte" + ITEM "Importo pagato@18" + ITEM "Importo anticipato@18" + ITEM "Abi@5" + ITEM "Cab@5" + ITEM "Importo fattura@18" ITEM "Residuo@18" - ITEM "Codice" - ITEM "Ragione Sociale@20" ITEM "Anno" ITEM "Partita" ITEM "Riga" ITEM "Rata" ITEM "Scadenza@10" - ITEM "Riga" - ITEM "Effetto" - ITEM "Tipo Pagamento@20" -END - -CURRENCY F_TOTAL 18 -BEGIN - PROMPT 1 -1 "Totale " - DRIVENBY F_CODVAL - FLAGS "D" -END - -CURRENCY F_SPESE 18 -BEGIN - PROMPT 28 -1 "Spese " + ITEM "Tipo pag." END ENDPAGE ENDMASK -PAGE "Rate" -1 -1 70 10 +PAGE "Fatture" -1 -1 70 10 -NUMBER F_RIGADIST 4 +CURRENCY F_PAGATO 18 BEGIN - PROMPT 31 1 "Riga effetto " + PROMPT 1 1 "Importo pagato " +END + +CURRENCY F_IMPORTOANT 18 +BEGIN + PROMPT 1 2 "Importo anticipato " +END + +NUMBER F_ABI 5 +BEGIN + PROMPT 1 3 "ABI " +END + +NUMBER F_CAB 5 +BEGIN + PROMPT 1 4 "CAB " +END + +CURRENCY F_IMPORTO 18 +BEGIN + PROMPT 1 5 "Importo fattura " FLAGS "D" END -NUMBER F_RIGAEFF 4 +CURRENCY F_RESIDUO 18 BEGIN - PROMPT 51 1 "" - FLAGS "D" -END - -NUMBER F_CODCF 6 -BEGIN - PROMPT 1 1 "" - FLAGS "D" -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 9 1 "" + PROMPT 1 6 "Residuo " + NUM_CALC #F_IMPORTO-#F_IMPORTOANT FLAGS "D" END NUMBER F_ANNO 4 BEGIN - PROMPT 1 3 "Anno " + PROMPT 1 7 "Anno " FLAGS "D" END STRING F_PARTITA 7 BEGIN - PROMPT 21 3 "Partita " + PROMPT 21 7 "Partita " FLAGS "D_" END NUMBER F_RIGA 4 BEGIN - PROMPT 38 3 "Riga " + PROMPT 38 7 "Riga " FLAGS "D" END NUMBER F_RATA 4 BEGIN - PROMPT 50 3 "Rata " + PROMPT 50 7 "Rata " FLAGS "D" END DATE F_DATA BEGIN - PROMPT 1 4 "Scadenza" + PROMPT 1 8 "Scadenza" FLAGS "D" END -BOOLEAN F_VALBEN -BEGIN - PROMPT 21 4 "Valuta benefciario" -END - -DATE F_DATAPAG -BEGIN - PROMPT 40 4 "Data pagamento " -END - - -CURRENCY F_RESIDUO 18 -BEGIN - PROMPT 1 5 "Residuo " - FLAGS "D" - DRIVENBY -F_CODVAL -END - -CURRENCY F_IMPORTO 18 -BEGIN - PROMPT 1 6 "Importo " - DRIVENBY -F_CODVAL -END - -LIST F_ACCSAL 1 10 -BEGIN - PROMPT 41 6 "" - ITEM "A|Acconto" - ITEM "S|Saldo" -END - -STRING F_DESC_TIPO 30 +STRING F_TIPOPAG 30 BEGIN PROMPT 1 7 "Tipo pagamento " FLAGS "D" @@ -454,17 +156,12 @@ TOOLBAR "" 0 0 0 2 BUTTON DLG_OK 10 2 BEGIN - PROMPT -13 -1 "" + PROMPT -12 -1 "" END BUTTON DLG_CANCEL 10 2 BEGIN - PROMPT -23 -1 "" -END - -BUTTON F_PAGA 10 2 -BEGIN - PROMPT -33 -1 "~Paga" + PROMPT -22 -1 "" END ENDPAGE