diff --git a/cg/cg0200a.uml b/cg/cg0200a.uml index 06265ed24..04b249243 100755 --- a/cg/cg0200a.uml +++ b/cg/cg0200a.uml @@ -1025,9 +1025,15 @@ END STRING F_CODAG 5 BEGIN - PROMPT 46 15 "Codice agente " + PROMPT 44 15 "Codice agente " FLAGS "UZ" FIELD LF_CFVEN->CODAG + USE AGE + INPUT CODTAB F_CODAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODAG CODTAB + CHECKTYPE NORMAL GROUP 7 HELP "Codice dell'agente di cui si serve il cliente" END diff --git a/cg/cg2100.h b/cg/cg2100.h index 72965d02a..7bd6af2ca 100755 --- a/cg/cg2100.h +++ b/cg/cg2100.h @@ -131,37 +131,38 @@ #define S_ANNO 101 #define S_NUM 102 -#define S_DATADOC 103 -#define S_NUMPROT 104 -#define S_NUMDOC 105 -#define S_DESCR 106 -#define S_RATA 107 -#define S_DATASCAD 108 -#define S_IMPORTO 109 -#define S_IMPORTOVAL 110 -#define S_SEZIONE 111 -#define S_IMPORTOPAG 112 -#define S_RITENUTE 113 -#define S_SEZRITENUTE 114 -#define S_SALDOACC 115 -#define S_RESIDUO 116 -#define S_DATAPAG 117 -#define S_CODPAG 118 -#define S_TIPOPAG 119 -#define S_TIPO 120 -#define S_GRUPPO 121 -#define S_CONTO 122 -#define S_SOTTOCONTO 123 -#define S_DESCRCONTO 124 -#define S_DESCAGG 125 -#define S_VSABI 126 -#define S_VSCAB 127 -#define S_DESCVSABI 128 -#define S_AGENTE 129 -#define S_DESCAGENTE 130 -#define S_NSABI 131 -#define S_NSCAB 132 -#define S_DESCNSABI 133 -#define S_DESPAG 134 +#define S_RIGA 103 +#define S_DATADOC 104 +#define S_NUMPROT 105 +#define S_NUMDOC 106 +#define S_DESCR 107 +#define S_RATA 108 +#define S_DATASCAD 109 +#define S_IMPORTO 110 +#define S_IMPORTOVAL 111 +#define S_SEZIONE 112 +#define S_IMPORTOPAG 113 +#define S_RITENUTE 114 +#define S_SEZRITENUTE 115 +#define S_SALDOACC 116 +#define S_RESIDUO 117 +#define S_DATAPAG 118 +#define S_CODPAG 119 +#define S_TIPOPAG 120 +#define S_TIPO 121 +#define S_GRUPPO 122 +#define S_CONTO 123 +#define S_SOTTOCONTO 124 +#define S_DESCRCONTO 125 +#define S_DESCAGG 126 +#define S_VSABI 127 +#define S_VSCAB 128 +#define S_DESCVSABI 129 +#define S_AGENTE 130 +#define S_DESCAGENTE 131 +#define S_NSABI 132 +#define S_NSCAB 133 +#define S_DESCNSABI 134 +#define S_DESPAG 135 #endif diff --git a/cg/cg2100s.uml b/cg/cg2100s.uml index 3d2fa4cd8..f2abf07d8 100755 --- a/cg/cg2100s.uml +++ b/cg/cg2100s.uml @@ -1,316 +1,361 @@ -#include "cg2100.h" - -TOOLBAR "" 0 20 0 2 - -BUTTON DLG_OK 10 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_CANCEL 10 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - - -PAGE "Pagamento" -1 -1 77 20 - -GROUPBOX DLG_NULL 78 6 -BEGIN - PROMPT 1 0 "@BPartita" -END - -NUMBER S_ANNO 4 -BEGIN - PROMPT 2 1 "Anno partita " - FLAGS "RD" -END - -STRING S_NUM 7 -BEGIN - PROMPT 38 1 "Numero partita " - FLAGS "D" -END - -STRING S_DESCR 50 -BEGIN - PROMPT 2 2 "Descrizione " - FLAGS "D" -END - -NUMBER S_RATA 4 -BEGIN - PROMPT 2 3 "Rata " - FLAGS "D" -END - -DATE S_DATASCAD -BEGIN - PROMPT 20 3 "Data " - FLAGS "D" -END - -NUMBER S_RESIDUO 15 -BEGIN - PROMPT 44 3 "Residuo " - PICTURE "." - FLAGS "D" -END - -NUMBER S_IMPORTOVAL 15 3 -BEGIN - PROMPT 2 4 "Importo in valuta " - PICTURE ".3" - FLAGS "D" -END - -NUMBER S_IMPORTO 15 -BEGIN - PROMPT 44 4 "Importo in lire " - PICTURE "." - FLAGS "D" -END - - -GROUPBOX DLG_NULL 78 13 -BEGIN - PROMPT 1 6 "@BPagamento" -END - -NUMBER S_IMPORTOPAG 15 -BEGIN - PROMPT 2 7 "Importo pagamento " - PICTURE "." - FIELD IMPORTOPAG -END - -NUMBER S_IMPORTOPAG 15 -BEGIN - PROMPT 38 7 "Ritenute professionali " - PICTURE "." - FIELD RITENUTE -END - -BOOLEAN S_SALDOACC -BEGIN - PROMPT 2 8 "Saldo " - FIELD SALDOACC -END - -DATE S_DATAPAG -BEGIN - PROMPT 38 8 "Data pagamento " - FIELD DATAPAG -END - -STRING S_CODPAG 4 -BEGIN - PROMPT 2 9 "Pagamento " - FLAGS "UZ" - USE CPG - INPUT CODTAB S_CODPAG - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - DISPLAY "Tipo" I0 - OUTPUT S_CODPAG CODTAB - OUTPUT S_DESPAG S0 - OUTPUT S_TIPOPAG I0 - FIELD CODPAG -END - -STRING S_DESPAG 50 -BEGIN - PROMPT 24 9 "" - USE CPG KEY 2 - INPUT S0 S_DESPAG - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - DISPLAY "Tipo" I0 - COPY OUTPUT S_CODPAG -END - -LIST S_TIPOPAG 2 40 -BEGIN - PROMPT 2 10 "Tipo 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" - ITEM "10|Altro" - FIELD TIPOPAG -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 11 "@bConto di contropartita" -END - -LIST S_TIPO 1 12 -BEGIN - PROMPT 2 12 "Tipo " - ITEM " |Conto" - ITEM "C|Cliente" - ITEM "F|Fornitore" - FIELD TIPOCF - FLAGS "H" -END - -NUMBER S_GRUPPO 3 -BEGIN - PROMPT 28 11 "Gruppo " - FIELD GRUPPO - CHECKTYPE REQUIRED -END - -NUMBER S_CONTO 3 -BEGIN - PROMPT 44 11 "Conto " - FIELD CONTO - CHECKTYPE REQUIRED -END - -NUMBER S_SOTTOCONTO 6 -BEGIN - PROMPT 58 11 "Sottoconto " - FIELD SOTTOCONTO - USE LF_PCON - INPUT GRUPPO S_GRUPPO - INPUT CONTO S_CONTO - INPUT SOTTOCONTO S_SOTTOCONTO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - OUTPUT S_GRUPPO GRUPPO - OUTPUT S_CONTO CONTO - OUTPUT S_SOTTOCONTO SOTTOCONTO - OUTPUT S_DESCRCONTO DESCR - CHECKTYPE REQUIRED -END - -STRING S_DESCRCONTO 50 -BEGIN - PROMPT 2 12 "Descrizione conto " - USE LF_PCON KEY 2 - INPUT DESCR S_DESCRCONTO - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT S_SOTTOCONTO - CHECKTYPE REQUIRED -END - -STRING S_DESCAGG 50 -BEGIN - PROMPT 2 14 "Descrizione aggiuntiva " - FIELD DESCAGG -END - -NUMBER S_VSABI 5 -BEGIN - PROMPT 2 15 "Vostra Banca - ABI " - FLAGS "Z" - USE %BAN - INPUT CODTAB[1,5] S_VSABI - INPUT CODTAB[6,10] S_VSCAB - DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] - DISPLAY "Denominazione@50" S0 - OUTPUT S_VSABI CODTAB[1,5] - OUTPUT S_VSCAB CODTAB[6,10] - OUTPUT S_DESCVSABI S0 - CHECKTYPE REQUIRED - FIELD VSABI -END - -NUMBER S_VSCAB 5 -BEGIN - PROMPT 30 15 "CAB " - FLAGS "Z" - COPY ALL S_VSABI - CHECKTYPE REQUIRED - FIELD VSCAB -END - -STRING S_DESCVSABI 50 32 -BEGIN - PROMPT 42 15 "" - USE %BAN KEY 2 - INPUT S0 S_DESCVSABI - DISPLAY "Denominazione@50" S0 - DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] - COPY OUTPUT S_VSABI - CHECKTYPE REQUIRED -END - -STRING S_AGENTE 5 -BEGIN - PROMPT 2 16 "Agente " - FLAGS "UZ" - USE AGE - INPUT CODTAB S_AGENTE - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione @50" S0 - OUTPUT S_AGENTE CODTAB - OUTPUT S_DESCAGENTE S0 - CHECKTYPE NORMAL - FIELD AGENTE -END - -STRING S_DESCAGENTE 50 -BEGIN - PROMPT 24 16 "" - USE AGE KEY 2 - INPUT S0 S_DESCAGENTE - DISPLAY "Descrizione @50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT S_AGENTE - CHECKTYPE NORMAL -END - - -NUMBER S_NSABI 5 -BEGIN - PROMPT 2 17 "Nostra Banca - ABI " - FLAGS "Z" - COPY USE S_VSABI - INPUT CODTAB[1,5] S_NSABI - INPUT CODTAB[6,10] S_NSCAB - COPY DISPLAY S_VSABI - OUTPUT S_NSABI CODTAB[1,5] - OUTPUT S_NSCAB CODTAB[6,10] - FIELD NSABI - CHECKTYPE REQUIRED -END - -NUMBER S_VSCAB 5 -BEGIN - PROMPT 30 17 "CAB " - FLAGS "Z" - COPY ALL S_NSABI - FIELD NSCAB - CHECKTYPE REQUIRED -END - -STRING S_DESCNSABI 50 32 -BEGIN - PROMPT 42 15 "" - COPY USE S_DESCVSABI - INPUT S0 S_DESCNSABI - COPY DISPLAY S_DESCVSABI - COPY OUTPUT S_NSABI - CHECKTYPE REQUIRED -END - -ENDPAGE - -ENDMASK +#include "cg2100.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + + +PAGE "Pagamento" -1 -1 77 20 + +GROUPBOX DLG_NULL 78 7 +BEGIN + PROMPT 1 0 "@BPartita" +END + +NUMBER S_ANNO 4 +BEGIN + PROMPT 2 1 "Anno " + FLAGS "D" + FIELD ANNO +END + +STRING S_NUM 7 +BEGIN + PROMPT 19 1 "Numero " + FLAGS "DR" + FIELD NUMPART +END + +STRING S_RIGA 4 +BEGIN + PROMPT 40 1 "Riga " + FLAGS "DR" + FIELD NRIGA +END + +STRING S_NUMDOC 7 +BEGIN + PROMPT 2 2 "Numero Documento " + FLAGS "D" +END + +DATE S_DATADOC +BEGIN + PROMPT 28 2 "Data documento " + FLAGS "D" +END + +NUMBER S_NUMPROT 5 +BEGIN + PROMPT 56 2 "Protocollo IVA " + FLAGS "DR" +END + +STRING S_DESCR 50 +BEGIN + PROMPT 2 3 "Descrizione " + FLAGS "D" +END + +NUMBER S_RATA 4 +BEGIN + PROMPT 2 4 "Rata " + FLAGS "DR" +END + +DATE S_DATASCAD +BEGIN + PROMPT 21 4 "Data " + FLAGS "D" +END + +NUMBER S_RESIDUO 15 +BEGIN + PROMPT 44 4 "Residuo " + PICTURE "." + FLAGS "DR" +END + +NUMBER S_IMPORTOVAL 15 2 +BEGIN + PROMPT 2 5 "Importo in valuta " + PICTURE ".2" + FLAGS "DR" +END + +NUMBER S_IMPORTO 15 +BEGIN + PROMPT 38 5 "Importo " + PICTURE "." + FLAGS "DR" +END + +LIST S_SEZIONE 6 +BEGIN + PROMPT 68 5 "" + ITEM "A|Avere" + ITEM "D|Dare" + FLAGS "D" +END + + + +GROUPBOX DLG_NULL 78 12 +BEGIN + PROMPT 1 7 "@BPagamento" +END + +NUMBER S_IMPORTOPAG 15 +BEGIN + PROMPT 2 8 "Importo pagamento " + PICTURE "." + FIELD IMPORTO + FLAGS "UR" + WARNING "Inserire un importo inferiore al residuo" +END + +NUMBER S_IMPORTOPAG 15 +BEGIN + PROMPT 38 8 "Ritenute professionali " + PICTURE "." + FLAGS "UR" + FIELD RITENUTE +END + +BOOLEAN S_SALDOACC +BEGIN + PROMPT 2 9 "Saldo " + FIELD SALACC +END + +DATE S_DATAPAG +BEGIN + PROMPT 38 9 "Data pagamento " + FIELD DATAREG +END + +STRING S_CODPAG 4 +BEGIN + PROMPT 2 10 "Pagamento " + FLAGS "UZ" + USE %CPG + INPUT CODTAB S_CODPAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "Tipo" I0 + OUTPUT S_CODPAG CODTAB + OUTPUT S_DESPAG S0 + OUTPUT S_TIPOPAG I0 + FIELD CODPAG + CHECKTYPE REQUIRED +END + +STRING S_DESPAG 50 +BEGIN + PROMPT 24 10 "" + USE CPG KEY 2 + INPUT S0 S_DESPAG + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + DISPLAY "Tipo" I0 + COPY OUTPUT S_CODPAG + CHECKTYPE REQUIRED +END + +LIST S_TIPOPAG 2 35 +BEGIN + PROMPT 2 11 "Tipo 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" + ITEM "10|Altro" + FIELD TIPOPAG +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 12 "@bConto di contropartita" +END + +LIST S_TIPO 1 12 +BEGIN + PROMPT 2 12 "Tipo " + ITEM " |Conto" + ITEM "C|Cliente" + ITEM "F|Fornitore" + FIELD TIPOCF + FLAGS "H" +END + +NUMBER S_GRUPPO 3 +BEGIN + PROMPT 24 12 "Gruppo " + FIELD GRUPPO + CHECKTYPE REQUIRED + FLAGS "R" +END + +NUMBER S_CONTO 3 +BEGIN + PROMPT 42 12 "Conto " + FIELD CONTO + CHECKTYPE REQUIRED + FLAGS "R" +END + +NUMBER S_SOTTOCONTO 6 +BEGIN + PROMPT 57 12 "Sottoconto " + FIELD SOTTOCONTO + USE LF_PCON + INPUT GRUPPO S_GRUPPO + INPUT CONTO S_CONTO + INPUT SOTTOCONTO S_SOTTOCONTO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT S_GRUPPO GRUPPO + OUTPUT S_CONTO CONTO + OUTPUT S_SOTTOCONTO SOTTOCONTO + OUTPUT S_DESCRCONTO DESCR + CHECKTYPE REQUIRED + FLAGS "R" +END + +STRING S_DESCRCONTO 50 +BEGIN + PROMPT 2 13 "Descrizione conto " + USE LF_PCON KEY 2 + INPUT DESCR S_DESCRCONTO + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT S_SOTTOCONTO + CHECKTYPE REQUIRED +END + +STRING S_DESCAGG 50 +BEGIN + PROMPT 2 14 "Descrizione agg. " + FIELD DESCR +END + +NUMBER S_VSABI 5 +BEGIN + PROMPT 2 15 "Vs. Banca ABI " + FLAGS "Z" + USE %BAN + INPUT CODTAB[1,5] S_VSABI + INPUT CODTAB[6,10] S_VSCAB + DISPLAY "ABI@5" CODTAB[1,5] + DISPLAY "CAB@5" CODTAB[6,10] + DISPLAY "Denominazione@50" S0 + OUTPUT S_VSABI CODTAB[1,5] + OUTPUT S_VSCAB CODTAB[6,10] + OUTPUT S_DESCVSABI S0 + CHECKTYPE REQUIRED + FIELD CODABI +END + +NUMBER S_VSCAB 5 +BEGIN + PROMPT 25 15 "CAB " + FLAGS "Z" + COPY ALL S_VSABI + CHECKTYPE REQUIRED + FIELD CODCAB +END + +STRING S_DESCVSABI 50 37 +BEGIN + PROMPT 37 15 "" + USE %BAN KEY 2 + INPUT S0 S_DESCVSABI + DISPLAY "Denominazione@50" S0 + DISPLAY "ABI@5" CODTAB[1,5] + DISPLAY "CAB@5" CODTAB[6,10] + COPY OUTPUT S_VSABI + CHECKTYPE REQUIRED +END + +STRING S_AGENTE 5 +BEGIN + PROMPT 2 16 "Agente " + FLAGS "UZ" + USE AGE + INPUT CODTAB S_AGENTE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT S_AGENTE CODTAB + OUTPUT S_DESCAGENTE S0 + CHECKTYPE NORMAL + FIELD CODAG +END + +STRING S_DESCAGENTE 50 +BEGIN + PROMPT 24 16 "" + USE AGE KEY 2 + INPUT S0 S_DESCAGENTE + DISPLAY "Descrizione @50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT S_AGENTE + CHECKTYPE NORMAL +END + + +NUMBER S_NSABI 5 +BEGIN + PROMPT 2 17 "Ns. Banca ABI " + FLAGS "Z" + COPY USE S_VSABI + INPUT CODTAB[1,5] S_NSABI + INPUT CODTAB[6,10] S_NSCAB + COPY DISPLAY S_VSABI + OUTPUT S_NSABI CODTAB[1,5] + OUTPUT S_NSCAB CODTAB[6,10] + OUTPUT S_DESCNSABI S0 + FIELD CODABIPR + CHECKTYPE REQUIRED +END + +NUMBER S_NSCAB 5 +BEGIN + PROMPT 25 17 "CAB " + FLAGS "Z" + COPY ALL S_NSABI + FIELD CODCABPR + CHECKTYPE REQUIRED +END + +STRING S_DESCNSABI 50 37 +BEGIN + PROMPT 37 17 "" + COPY USE S_DESCVSABI + INPUT S0 S_DESCNSABI + COPY DISPLAY S_DESCVSABI + COPY OUTPUT S_NSABI + CHECKTYPE REQUIRED +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2103.cpp b/cg/cg2103.cpp index b2986503e..1af0bb6b4 100755 --- a/cg/cg2103.cpp +++ b/cg/cg2103.cpp @@ -380,8 +380,11 @@ const char* TCausale::causale_inc_imm() const const char* TCausale::tipo_doc() const { return _rec.get("TIPODOC"); } +int TCausale::tipomov() const +{ return _rec.get_int("TIPOMOV"); } + bool TCausale::saldaconto() const -{ return _rec.get_int("TIPOMOV") > 0; } +{ return tipomov() > 0; } bool TCausale::ok() const { diff --git a/cg/cg2103.h b/cg/cg2103.h index 9b8748022..7b946acf4 100755 --- a/cg/cg2103.h +++ b/cg/cg2103.h @@ -114,6 +114,7 @@ public: TRegistro& reg() const { return (TRegistro&)_reg; } TipoIVA iva() const { return _iva; } bool corrispettivi() const { return _corrisp; } + int tipomov() const; bool saldaconto() const; virtual bool ok() const; diff --git a/cg/cg2104.cpp b/cg/cg2104.cpp index 7c52ef4b8..922bcf562 100755 --- a/cg/cg2104.cpp +++ b/cg/cg2104.cpp @@ -355,19 +355,19 @@ void TPrimanota_application::write_scadenze(const TMask& m) TRectype& r = _rel->lfile().curr(); - TString nreg(r.get("NUMREG")); - TString ndoc(r.get("NUMDOC")); - TString tmov(r.get("TIPOMOV")); - TDate ddoc(r.get_date("DATADOC")); - TDate dreg(r.get_date("DATAREG")); - TString reg (r.get("REG")); - TString desc(r.get("DESCR")); - TString protiva(r.get("PROTIVA")); - TString codcaus(r.get("CODCAUS")); - TString codval (r.get("CODVAL")); - TString cambio (r.get("CAMBIO")); + const long nreg = r.get_long("NUMREG"); + const TString16 ndoc(r.get("NUMDOC")); + const int tmov = r.get_int("TIPOMOV"); + const TDate ddoc(r.get_date("DATADOC")); + const TDate dreg(r.get_date("DATAREG")); + const TString16 reg (r.get("REG")); + const TString80 desc(r.get("DESCR")); + const int protiva = r.get_int("PROTIVA"); + const TString16 codcaus(r.get("CODCAUS")); + const TString16 codval (r.get("CODVAL")); + const real cambio (r.get("CAMBIO")); - TString numpart = m.get(F_NUMRIF); + const TString16 numpart = m.get(F_NUMRIF); const int anno = m.get_int(F_ANNORIF); char sezione = _rel->cg(0).get_char("SEZIONE"); // Dare/Avere @@ -416,6 +416,7 @@ void TPrimanota_application::write_scadenze(const TMask& m) partita.put("NREG", nreg); partita.put("DATAREG",dreg); partita.put("DATADOC",ddoc); + partita.put("NUMDOC", ndoc); partita.put("REG", reg); partita.put("DESCR", desc); partita.put("PROTIVA",protiva); @@ -651,6 +652,8 @@ bool TPrimanota_application::edit_scadenze(int currig, const TBill& b, int anno, while (k == K_ENTER) { k = a.run(); + + long pos; if (k == K_ENTER) { const int rata = a.row().get_int(0); @@ -661,30 +664,150 @@ bool TPrimanota_application::edit_scadenze(int currig, const TBill& b, int anno, err = scadenza.read(); CHECKD(err == NOERR, "Non ritrovo piu' la rata ", rata); + int urig = 1; int nrig = a.row().get_int(4); if (nrig == 0) // Ho cliccato su una scadenza { - for (long i = a.selected()+1; i < a.items(); i++) // Cerca pagamento + for (pos = a.selected()+1; pos < a.items(); pos++) // Cerca pagamento { - const int r = a.row(i).get_int(4); - if (r == 0 || a.enabled(i)) - { - nrig = r; + const int nr = a.row(pos).get_int(4); + if (nr) urig = nr; + if (nr == 0 || a.enabled(pos)) + { + nrig = nr; break; } } } - + + const bool nuovo = nrig == 0; TRectype part(parbas); - if (nrig == 0) // Inserimento di un nuovo pagamento - part.zero(); + if (nuovo) // Inserimento di un nuovo pagamento + { + // PART_ANNO viene preso dalla partita base + // PART_NUMPART viene preso dalla partita base + + nrig = urig+1; + part.put(PART_NRIGA, nrig); // Riga di partita + + part.put(PART_TIPOMOV, causale().tipomov()); // Dati causale corrente + part.put(PART_CODCAUS, causale().codice()); + + part.put(PART_NUMRIG, currig); // Riga su cui ho cliccato + + // Copia dati movimento corrente + part.put(PART_DATAREG, curr_mask().get(F_DATAREG)); + part.put(PART_DATADOC, curr_mask().get(F_DATADOC)); + part.put(PART_NUMDOC, curr_mask().get(F_NUMDOC)); + part.put(PART_DESCR, curr_mask().get(F_DESCR)); + + part.zero(PART_REG); + part.zero(PART_PROTIVA); + + TImporto imp; imp = cgs().row(currig); + part.put(PART_SEZ, imp.sezione()); // Sezione della riga cliccata + + part.zero(PART_IMPOSTA); + part.zero(PART_IMPORTO); + part.zero(PART_SPESE); + + TString80 tmp; + + tmp = scadenza.get(SCAD_CODPAG); + part.put(PART_CODPAG, tmp); + + tmp = scadenza.get(SCAD_TIPOPAG); + part.put(PART_TIPOPAG, tmp); + + part.zero(PART_CODVAL); + part.zero(PART_CAMBIO); + part.zero(PART_IMPORTOVAL); + part.zero(PART_DATACAM); + + int caus = 2; // Calcola riga causale per la contropartita + switch (atoi(tmp)) + { + case 2: // Tratta + case 7: // Tratta accettata + caus = 3; break; + case 3: // Ricevuta bancaria + caus = 4; break; + case 4: // Cessione + caus = 5; break; + case 5: // Paghero' + caus = 6; break; + case 6: // Fattura di credito + caus = 7; break; + case 1: // Rimessa + case 8: // Rapporti interbancari diretti + case 9: // Bonifico + default: + caus = 2; break; + } + + TBill bill; causale().bill(caus, bill); + if (bill.empty()) causale().bill(caus = 1, bill); + bill.put(part); + + if (b.tipo() > ' ') // Se cliente o fornitore cerca sua banca + { + TRelation cliforel(LF_CLIFO); + cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF"); + TRectype& clifo = cliforel.lfile().curr(); + + clifo.put(CLI_TIPOCF, b.tipo()); + clifo.put(CLI_CODCF, b.codclifo()); + const int err = cliforel.read(); + CHECK(err == NOERR, "Chiss'e' fregato il clifo"); + + tmp = clifo.get(CLI_CODABI); + part.put(PART_CODABI, tmp); + tmp = clifo.get(CLI_CODCAB); + part.put(PART_CODCAB, tmp); + tmp = cliforel.lfile(LF_CFVEN).get(CLI_CODAG); + part.put(PART_CODAG, tmp); + } + else + { + part.zero(PART_CODABI); + part.zero(PART_CODCAB); + part.zero(PART_CODAG); + } + + part.zero(PART_IMPTOTPAG); + part.zero(PART_RITENUTE); + + part.zero(PART_DATARIFPAG); + part.zero(PART_NUMRIFPAG); + part.zero(PART_CHIUSA); + + tmp = scadenza.get(SCAD_NRATA); + part.put(PART_NRATA, tmp); + + tmp = scadenza.get(SCAD_CODABIPR); + part.put(PART_CODABIPR, tmp); + + tmp = scadenza.get(SCAD_CODCABPR); + part.put(PART_CODCABPR, tmp); + } else { } if (edit_pagamento(parbas, scadenza.curr(), part)) { - err = (nrig == 0) ? partita.write(part) : partita.rewrite(part); + err = nuovo ? partita.write(part) : partita.rewrite(part); + + if (nuovo && err == NOERR) + { + r.cut(0); + r.add(part.get(PART_NRATA)); + r.add(part.get(PART_DATADOC)); + r.add(part.get(PART_IMPORTO)); + r.add(part.get(PART_DESCR)); + r.add(part.get(PART_NRIGA)); + a.insert(r, pos); + } } } } @@ -692,102 +815,70 @@ bool TPrimanota_application::edit_scadenze(int currig, const TBill& b, int anno, return TRUE; } -bool TPrimanota_application::edit_pagamento(const TRectype& parbas, - const TRectype& scaden, - TRectype& part) + + +static bool importopag_handler(TMask_field& f, KEY k) +{ + if (f.to_check(k)) + { + TMask& m = f.mask(); + const real r(m.get(S_RESIDUO)); + real i(f.get()); + + if (i > r) + { + warning_box("Non e' possibile inserire un importo superiore al residuo"); + i = r; + f.set(i.string()); + } + if (i == r) + { + m.set(S_SALDOACC, "X"); + m.disable(S_SALDOACC); + } + else + m.enable(S_SALDOACC); + } + return TRUE; +} + + +bool TPrimanota_application::edit_pagamento(const TRectype& parbas, const TRectype& scaden, TRectype& part) { TMask m("cg2100s"); + m.set_handler(S_IMPORTOPAG, importopag_handler); TRelation rel(LF_PARTITE); // Working relation - - rel.lfile().curr() = part; + TLocalisamfile& partita = rel.lfile(); + partita.curr() = part; + m.autoload(&rel); // Load current record on mask const real importo(scaden.get(SCAD_IMPORTO)); const real importopag(part.get(SCAD_IMPORTO)); const real ritenute(part.get(PART_RITENUTE)); const real residuo = importo - importopag; - - m.set(S_RESIDUO, residuo.string()); - m.set(S_DATADOC, parbas.get(PART_DATADOC)); - m.set(S_NUMPROT, parbas.get(PART_PROTIVA)); - m.set(S_NUMDOC, parbas.get(PART_NUMDOC)); - m.set(S_DESCR, parbas.get(PART_DESCR)); - - m.set(S_RATA, scaden.get(SCAD_NRATA)); - m.set(S_DATASCAD, scaden.get(SCAD_DATASCAD)); - m.set(S_IMPORTO, scaden.get(SCAD_IMPORTO)); - m.set(S_IMPORTOVAL, scaden.get(SCAD_IMPORTOVAL)); - m.set(S_SEZIONE, parbas.get(PART_SEZ)); - m.set(S_IMPORTOPAG, importopag.string()); - - if (part.empty()) // Insert mode - { - TString80 tmp; - - tmp = curr_mask().get(F_DATAREG); - m.set(S_DATAPAG, tmp); - - tmp = scaden.get(SCAD_CODPAG); - m.set(S_CODPAG, tmp); - tmp = scaden.get(SCAD_TIPOPAG); - m.set(S_TIPOPAG, tmp); + // Dati del documento (fattura) che ha generato la scadenza + m.set(S_NUMDOC, parbas.get(PART_NUMDOC)); // Numero documento + m.set(S_DATADOC, parbas.get(PART_DATADOC)); // Data documento + m.set(S_NUMPROT, parbas.get(PART_PROTIVA)); // Protocollo IVA + m.set(S_DESCR, parbas.get(PART_DESCR)); // Descrizione documento - int caus = 2; // Calcola riga causale - switch (atoi(tmp)) - { - case 2: - caus = 3; break; // Tratta - case 3: - caus = 4; break; // Ricevuta bancaria - case 4: - caus = 5; break; // Cessione - case 5: - caus = 6; break; // Paghero' - case 6: - caus = 7; break; // Fattura di credito - case 7: - caus = 3; break; // Tratta accettata - case 1: // Rimessa - case 8: // Rapporti interbancari diretti - case 9: // Bonifico - default: - caus = 2; break; - } - - TBill bill; causale().bill(caus, bill); - m.set(S_TIPO, bill.tipo()); - m.set(S_GRUPPO, bill.gruppo()); - m.set(S_CONTO, bill.conto()); - m.set(S_SOTTOCONTO, bill.sottoconto()); + // Dati della scadenza che ha generato la partita + m.set(S_RESIDUO, residuo.string()); // Residuo da pagare + m.set(S_DATASCAD, scaden.get(SCAD_DATASCAD)); // Data della scadenza + m.set(S_IMPORTO, scaden.get(SCAD_IMPORTO)); // Importo della rata + m.set(S_IMPORTOVAL, scaden.get(SCAD_IMPORTOVAL)); // " in valuta + m.set(S_RATA, scaden.get(SCAD_NRATA)); - tmp = curr_mask().get(F_DESCR); - m.set(S_DESCR, tmp); - - bill.get(parbas); - if (bill.tipo() > ' ') - { - TLocalisamfile clifo(LF_CLIFO); - clifo.put(CLI_TIPOCF, bill.tipo()); - clifo.put(CLI_CODCF, bill.codclifo()); - tmp = clifo.get(CLI_CODABI); - m.set(S_VSABI, tmp); - tmp = clifo.get(CLI_CODBAN); - m.set(S_VSCAB, tmp); - tmp = clifo.get(CLI_CODAG); - m.set(S_AGENTE, tmp); - } - tmp = scaden.get(SCAD_CODABIPR); - m.set(S_NSABI, tmp); - tmp = scaden.get(SCAD_CODCABPR); - m.set(S_NSCAB, tmp); - } - + if (importopag.is_zero()) + m.set(S_IMPORTOPAG, residuo.string()); + const KEY key = m.run(); if (key == K_ENTER) { m.autosave(&rel); - part = rel.lfile().curr(); + part = partita.curr(); } return key == K_ENTER;