Continua senza sosta lo sviluppo del saldaconto

git-svn-id: svn://10.65.10.50/trunk@1174 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-03-27 14:35:06 +00:00
parent ab49a4f5d7
commit 350fc53821
6 changed files with 598 additions and 451 deletions

View File

@ -1025,9 +1025,15 @@ END
STRING F_CODAG 5 STRING F_CODAG 5
BEGIN BEGIN
PROMPT 46 15 "Codice agente " PROMPT 44 15 "Codice agente "
FLAGS "UZ" FLAGS "UZ"
FIELD LF_CFVEN->CODAG 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 GROUP 7
HELP "Codice dell'agente di cui si serve il cliente" HELP "Codice dell'agente di cui si serve il cliente"
END END

View File

@ -131,37 +131,38 @@
#define S_ANNO 101 #define S_ANNO 101
#define S_NUM 102 #define S_NUM 102
#define S_DATADOC 103 #define S_RIGA 103
#define S_NUMPROT 104 #define S_DATADOC 104
#define S_NUMDOC 105 #define S_NUMPROT 105
#define S_DESCR 106 #define S_NUMDOC 106
#define S_RATA 107 #define S_DESCR 107
#define S_DATASCAD 108 #define S_RATA 108
#define S_IMPORTO 109 #define S_DATASCAD 109
#define S_IMPORTOVAL 110 #define S_IMPORTO 110
#define S_SEZIONE 111 #define S_IMPORTOVAL 111
#define S_IMPORTOPAG 112 #define S_SEZIONE 112
#define S_RITENUTE 113 #define S_IMPORTOPAG 113
#define S_SEZRITENUTE 114 #define S_RITENUTE 114
#define S_SALDOACC 115 #define S_SEZRITENUTE 115
#define S_RESIDUO 116 #define S_SALDOACC 116
#define S_DATAPAG 117 #define S_RESIDUO 117
#define S_CODPAG 118 #define S_DATAPAG 118
#define S_TIPOPAG 119 #define S_CODPAG 119
#define S_TIPO 120 #define S_TIPOPAG 120
#define S_GRUPPO 121 #define S_TIPO 121
#define S_CONTO 122 #define S_GRUPPO 122
#define S_SOTTOCONTO 123 #define S_CONTO 123
#define S_DESCRCONTO 124 #define S_SOTTOCONTO 124
#define S_DESCAGG 125 #define S_DESCRCONTO 125
#define S_VSABI 126 #define S_DESCAGG 126
#define S_VSCAB 127 #define S_VSABI 127
#define S_DESCVSABI 128 #define S_VSCAB 128
#define S_AGENTE 129 #define S_DESCVSABI 129
#define S_DESCAGENTE 130 #define S_AGENTE 130
#define S_NSABI 131 #define S_DESCAGENTE 131
#define S_NSCAB 132 #define S_NSABI 132
#define S_DESCNSABI 133 #define S_NSCAB 133
#define S_DESPAG 134 #define S_DESCNSABI 134
#define S_DESPAG 135
#endif #endif

View File

@ -1,316 +1,361 @@
#include "cg2100.h" #include "cg2100.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_CANCEL 10 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END
ENDPAGE ENDPAGE
PAGE "Pagamento" -1 -1 77 20 PAGE "Pagamento" -1 -1 77 20
GROUPBOX DLG_NULL 78 6 GROUPBOX DLG_NULL 78 7
BEGIN BEGIN
PROMPT 1 0 "@BPartita" PROMPT 1 0 "@BPartita"
END END
NUMBER S_ANNO 4 NUMBER S_ANNO 4
BEGIN BEGIN
PROMPT 2 1 "Anno partita " PROMPT 2 1 "Anno "
FLAGS "RD" FLAGS "D"
END FIELD ANNO
END
STRING S_NUM 7
BEGIN STRING S_NUM 7
PROMPT 38 1 "Numero partita " BEGIN
FLAGS "D" PROMPT 19 1 "Numero "
END FLAGS "DR"
FIELD NUMPART
STRING S_DESCR 50 END
BEGIN
PROMPT 2 2 "Descrizione " STRING S_RIGA 4
FLAGS "D" BEGIN
END PROMPT 40 1 "Riga "
FLAGS "DR"
NUMBER S_RATA 4 FIELD NRIGA
BEGIN END
PROMPT 2 3 "Rata "
FLAGS "D" STRING S_NUMDOC 7
END BEGIN
PROMPT 2 2 "Numero Documento "
DATE S_DATASCAD FLAGS "D"
BEGIN END
PROMPT 20 3 "Data "
FLAGS "D" DATE S_DATADOC
END BEGIN
PROMPT 28 2 "Data documento "
NUMBER S_RESIDUO 15 FLAGS "D"
BEGIN END
PROMPT 44 3 "Residuo "
PICTURE "." NUMBER S_NUMPROT 5
FLAGS "D" BEGIN
END PROMPT 56 2 "Protocollo IVA "
FLAGS "DR"
NUMBER S_IMPORTOVAL 15 3 END
BEGIN
PROMPT 2 4 "Importo in valuta " STRING S_DESCR 50
PICTURE ".3" BEGIN
FLAGS "D" PROMPT 2 3 "Descrizione "
END FLAGS "D"
END
NUMBER S_IMPORTO 15
BEGIN NUMBER S_RATA 4
PROMPT 44 4 "Importo in lire " BEGIN
PICTURE "." PROMPT 2 4 "Rata "
FLAGS "D" FLAGS "DR"
END END
DATE S_DATASCAD
GROUPBOX DLG_NULL 78 13 BEGIN
BEGIN PROMPT 21 4 "Data "
PROMPT 1 6 "@BPagamento" FLAGS "D"
END END
NUMBER S_IMPORTOPAG 15 NUMBER S_RESIDUO 15
BEGIN BEGIN
PROMPT 2 7 "Importo pagamento " PROMPT 44 4 "Residuo "
PICTURE "." PICTURE "."
FIELD IMPORTOPAG FLAGS "DR"
END END
NUMBER S_IMPORTOPAG 15 NUMBER S_IMPORTOVAL 15 2
BEGIN BEGIN
PROMPT 38 7 "Ritenute professionali " PROMPT 2 5 "Importo in valuta "
PICTURE "." PICTURE ".2"
FIELD RITENUTE FLAGS "DR"
END END
BOOLEAN S_SALDOACC NUMBER S_IMPORTO 15
BEGIN BEGIN
PROMPT 2 8 "Saldo " PROMPT 38 5 "Importo "
FIELD SALDOACC PICTURE "."
END FLAGS "DR"
END
DATE S_DATAPAG
BEGIN LIST S_SEZIONE 6
PROMPT 38 8 "Data pagamento " BEGIN
FIELD DATAPAG PROMPT 68 5 ""
END ITEM "A|Avere"
ITEM "D|Dare"
STRING S_CODPAG 4 FLAGS "D"
BEGIN END
PROMPT 2 9 "Pagamento "
FLAGS "UZ"
USE CPG
INPUT CODTAB S_CODPAG GROUPBOX DLG_NULL 78 12
DISPLAY "Codice" CODTAB BEGIN
DISPLAY "Descrizione@50" S0 PROMPT 1 7 "@BPagamento"
DISPLAY "Tipo" I0 END
OUTPUT S_CODPAG CODTAB
OUTPUT S_DESPAG S0 NUMBER S_IMPORTOPAG 15
OUTPUT S_TIPOPAG I0 BEGIN
FIELD CODPAG PROMPT 2 8 "Importo pagamento "
END PICTURE "."
FIELD IMPORTO
STRING S_DESPAG 50 FLAGS "UR"
BEGIN WARNING "Inserire un importo inferiore al residuo"
PROMPT 24 9 "" END
USE CPG KEY 2
INPUT S0 S_DESPAG NUMBER S_IMPORTOPAG 15
DISPLAY "Descrizione@50" S0 BEGIN
DISPLAY "Codice" CODTAB PROMPT 38 8 "Ritenute professionali "
DISPLAY "Tipo" I0 PICTURE "."
COPY OUTPUT S_CODPAG FLAGS "UR"
END FIELD RITENUTE
END
LIST S_TIPOPAG 2 40
BEGIN BOOLEAN S_SALDOACC
PROMPT 2 10 "Tipo pagamento " BEGIN
ITEM "1|Rimessa Diretta" PROMPT 2 9 "Saldo "
ITEM "2|Tratta" FIELD SALACC
ITEM "3|Ricevuta Bancaria" END
ITEM "4|Cessione"
ITEM "5|Paghero'" DATE S_DATAPAG
ITEM "6|Lettera di credito" BEGIN
ITEM "7|Tratta accettata" PROMPT 38 9 "Data pagamento "
ITEM "8|Rapporti interbancari diretti" FIELD DATAREG
ITEM "9|Bonifico" END
ITEM "10|Altro"
FIELD TIPOPAG STRING S_CODPAG 4
END BEGIN
PROMPT 2 10 "Pagamento "
TEXT DLG_NULL FLAGS "UZ"
BEGIN USE %CPG
PROMPT 2 11 "@bConto di contropartita" INPUT CODTAB S_CODPAG
END DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
LIST S_TIPO 1 12 DISPLAY "Tipo" I0
BEGIN OUTPUT S_CODPAG CODTAB
PROMPT 2 12 "Tipo " OUTPUT S_DESPAG S0
ITEM " |Conto" OUTPUT S_TIPOPAG I0
ITEM "C|Cliente" FIELD CODPAG
ITEM "F|Fornitore" CHECKTYPE REQUIRED
FIELD TIPOCF END
FLAGS "H"
END STRING S_DESPAG 50
BEGIN
NUMBER S_GRUPPO 3 PROMPT 24 10 ""
BEGIN USE CPG KEY 2
PROMPT 28 11 "Gruppo " INPUT S0 S_DESPAG
FIELD GRUPPO DISPLAY "Descrizione@50" S0
CHECKTYPE REQUIRED DISPLAY "Codice" CODTAB
END DISPLAY "Tipo" I0
COPY OUTPUT S_CODPAG
NUMBER S_CONTO 3 CHECKTYPE REQUIRED
BEGIN END
PROMPT 44 11 "Conto "
FIELD CONTO LIST S_TIPOPAG 2 35
CHECKTYPE REQUIRED BEGIN
END PROMPT 2 11 "Tipo pagamento "
ITEM "1|Rimessa Diretta"
NUMBER S_SOTTOCONTO 6 ITEM "2|Tratta"
BEGIN ITEM "3|Ricevuta Bancaria"
PROMPT 58 11 "Sottoconto " ITEM "4|Cessione"
FIELD SOTTOCONTO ITEM "5|Paghero'"
USE LF_PCON ITEM "6|Lettera di credito"
INPUT GRUPPO S_GRUPPO ITEM "7|Tratta accettata"
INPUT CONTO S_CONTO ITEM "8|Rapporti interbancari diretti"
INPUT SOTTOCONTO S_SOTTOCONTO ITEM "9|Bonifico"
DISPLAY "Gruppo" GRUPPO ITEM "10|Altro"
DISPLAY "Conto" CONTO FIELD TIPOPAG
DISPLAY "Sottoconto" SOTTOCONTO END
DISPLAY "Descrizione@50" DESCR
OUTPUT S_GRUPPO GRUPPO TEXT DLG_NULL
OUTPUT S_CONTO CONTO BEGIN
OUTPUT S_SOTTOCONTO SOTTOCONTO PROMPT 2 12 "@bConto di contropartita"
OUTPUT S_DESCRCONTO DESCR END
CHECKTYPE REQUIRED
END LIST S_TIPO 1 12
BEGIN
STRING S_DESCRCONTO 50 PROMPT 2 12 "Tipo "
BEGIN ITEM " |Conto"
PROMPT 2 12 "Descrizione conto " ITEM "C|Cliente"
USE LF_PCON KEY 2 ITEM "F|Fornitore"
INPUT DESCR S_DESCRCONTO FIELD TIPOCF
DISPLAY "Descrizione@50" DESCR FLAGS "H"
DISPLAY "Gruppo" GRUPPO END
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO NUMBER S_GRUPPO 3
COPY OUTPUT S_SOTTOCONTO BEGIN
CHECKTYPE REQUIRED PROMPT 24 12 "Gruppo "
END FIELD GRUPPO
CHECKTYPE REQUIRED
STRING S_DESCAGG 50 FLAGS "R"
BEGIN END
PROMPT 2 14 "Descrizione aggiuntiva "
FIELD DESCAGG NUMBER S_CONTO 3
END BEGIN
PROMPT 42 12 "Conto "
NUMBER S_VSABI 5 FIELD CONTO
BEGIN CHECKTYPE REQUIRED
PROMPT 2 15 "Vostra Banca - ABI " FLAGS "R"
FLAGS "Z" END
USE %BAN
INPUT CODTAB[1,5] S_VSABI NUMBER S_SOTTOCONTO 6
INPUT CODTAB[6,10] S_VSCAB BEGIN
DISPLAY "ABI@5" CODTAB[1,5] PROMPT 57 12 "Sottoconto "
DISPLAY "CAB@5" CODTAB[6,10] FIELD SOTTOCONTO
DISPLAY "Denominazione@50" S0 USE LF_PCON
OUTPUT S_VSABI CODTAB[1,5] INPUT GRUPPO S_GRUPPO
OUTPUT S_VSCAB CODTAB[6,10] INPUT CONTO S_CONTO
OUTPUT S_DESCVSABI S0 INPUT SOTTOCONTO S_SOTTOCONTO
CHECKTYPE REQUIRED DISPLAY "Gruppo" GRUPPO
FIELD VSABI DISPLAY "Conto" CONTO
END DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
NUMBER S_VSCAB 5 OUTPUT S_GRUPPO GRUPPO
BEGIN OUTPUT S_CONTO CONTO
PROMPT 30 15 "CAB " OUTPUT S_SOTTOCONTO SOTTOCONTO
FLAGS "Z" OUTPUT S_DESCRCONTO DESCR
COPY ALL S_VSABI CHECKTYPE REQUIRED
CHECKTYPE REQUIRED FLAGS "R"
FIELD VSCAB END
END
STRING S_DESCRCONTO 50
STRING S_DESCVSABI 50 32 BEGIN
BEGIN PROMPT 2 13 "Descrizione conto "
PROMPT 42 15 "" USE LF_PCON KEY 2
USE %BAN KEY 2 INPUT DESCR S_DESCRCONTO
INPUT S0 S_DESCVSABI DISPLAY "Descrizione@50" DESCR
DISPLAY "Denominazione@50" S0 DISPLAY "Gruppo" GRUPPO
DISPLAY "ABI@5" CODTAB[1,5] DISPLAY "Conto" CONTO
DISPLAY "CAB@5" CODTAB[6,10] DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT S_VSABI COPY OUTPUT S_SOTTOCONTO
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING S_AGENTE 5 STRING S_DESCAGG 50
BEGIN BEGIN
PROMPT 2 16 "Agente " PROMPT 2 14 "Descrizione agg. "
FLAGS "UZ" FIELD DESCR
USE AGE END
INPUT CODTAB S_AGENTE
DISPLAY "Codice" CODTAB NUMBER S_VSABI 5
DISPLAY "Descrizione @50" S0 BEGIN
OUTPUT S_AGENTE CODTAB PROMPT 2 15 "Vs. Banca ABI "
OUTPUT S_DESCAGENTE S0 FLAGS "Z"
CHECKTYPE NORMAL USE %BAN
FIELD AGENTE INPUT CODTAB[1,5] S_VSABI
END INPUT CODTAB[6,10] S_VSCAB
DISPLAY "ABI@5" CODTAB[1,5]
STRING S_DESCAGENTE 50 DISPLAY "CAB@5" CODTAB[6,10]
BEGIN DISPLAY "Denominazione@50" S0
PROMPT 24 16 "" OUTPUT S_VSABI CODTAB[1,5]
USE AGE KEY 2 OUTPUT S_VSCAB CODTAB[6,10]
INPUT S0 S_DESCAGENTE OUTPUT S_DESCVSABI S0
DISPLAY "Descrizione @50" S0 CHECKTYPE REQUIRED
DISPLAY "Codice" CODTAB FIELD CODABI
COPY OUTPUT S_AGENTE END
CHECKTYPE NORMAL
END NUMBER S_VSCAB 5
BEGIN
PROMPT 25 15 "CAB "
NUMBER S_NSABI 5 FLAGS "Z"
BEGIN COPY ALL S_VSABI
PROMPT 2 17 "Nostra Banca - ABI " CHECKTYPE REQUIRED
FLAGS "Z" FIELD CODCAB
COPY USE S_VSABI END
INPUT CODTAB[1,5] S_NSABI
INPUT CODTAB[6,10] S_NSCAB STRING S_DESCVSABI 50 37
COPY DISPLAY S_VSABI BEGIN
OUTPUT S_NSABI CODTAB[1,5] PROMPT 37 15 ""
OUTPUT S_NSCAB CODTAB[6,10] USE %BAN KEY 2
FIELD NSABI INPUT S0 S_DESCVSABI
CHECKTYPE REQUIRED DISPLAY "Denominazione@50" S0
END DISPLAY "ABI@5" CODTAB[1,5]
DISPLAY "CAB@5" CODTAB[6,10]
NUMBER S_VSCAB 5 COPY OUTPUT S_VSABI
BEGIN CHECKTYPE REQUIRED
PROMPT 30 17 "CAB " END
FLAGS "Z"
COPY ALL S_NSABI STRING S_AGENTE 5
FIELD NSCAB BEGIN
CHECKTYPE REQUIRED PROMPT 2 16 "Agente "
END FLAGS "UZ"
USE AGE
STRING S_DESCNSABI 50 32 INPUT CODTAB S_AGENTE
BEGIN DISPLAY "Codice" CODTAB
PROMPT 42 15 "" DISPLAY "Descrizione @50" S0
COPY USE S_DESCVSABI OUTPUT S_AGENTE CODTAB
INPUT S0 S_DESCNSABI OUTPUT S_DESCAGENTE S0
COPY DISPLAY S_DESCVSABI CHECKTYPE NORMAL
COPY OUTPUT S_NSABI FIELD CODAG
CHECKTYPE REQUIRED END
END
STRING S_DESCAGENTE 50
ENDPAGE BEGIN
PROMPT 24 16 ""
ENDMASK 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

View File

@ -380,8 +380,11 @@ const char* TCausale::causale_inc_imm() const
const char* TCausale::tipo_doc() const const char* TCausale::tipo_doc() const
{ return _rec.get("TIPODOC"); } { return _rec.get("TIPODOC"); }
int TCausale::tipomov() const
{ return _rec.get_int("TIPOMOV"); }
bool TCausale::saldaconto() const bool TCausale::saldaconto() const
{ return _rec.get_int("TIPOMOV") > 0; } { return tipomov() > 0; }
bool TCausale::ok() const bool TCausale::ok() const
{ {

View File

@ -114,6 +114,7 @@ public:
TRegistro& reg() const { return (TRegistro&)_reg; } TRegistro& reg() const { return (TRegistro&)_reg; }
TipoIVA iva() const { return _iva; } TipoIVA iva() const { return _iva; }
bool corrispettivi() const { return _corrisp; } bool corrispettivi() const { return _corrisp; }
int tipomov() const;
bool saldaconto() const; bool saldaconto() const;
virtual bool ok() const; virtual bool ok() const;

View File

@ -355,19 +355,19 @@ void TPrimanota_application::write_scadenze(const TMask& m)
TRectype& r = _rel->lfile().curr(); TRectype& r = _rel->lfile().curr();
TString nreg(r.get("NUMREG")); const long nreg = r.get_long("NUMREG");
TString ndoc(r.get("NUMDOC")); const TString16 ndoc(r.get("NUMDOC"));
TString tmov(r.get("TIPOMOV")); const int tmov = r.get_int("TIPOMOV");
TDate ddoc(r.get_date("DATADOC")); const TDate ddoc(r.get_date("DATADOC"));
TDate dreg(r.get_date("DATAREG")); const TDate dreg(r.get_date("DATAREG"));
TString reg (r.get("REG")); const TString16 reg (r.get("REG"));
TString desc(r.get("DESCR")); const TString80 desc(r.get("DESCR"));
TString protiva(r.get("PROTIVA")); const int protiva = r.get_int("PROTIVA");
TString codcaus(r.get("CODCAUS")); const TString16 codcaus(r.get("CODCAUS"));
TString codval (r.get("CODVAL")); const TString16 codval (r.get("CODVAL"));
TString cambio (r.get("CAMBIO")); 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); const int anno = m.get_int(F_ANNORIF);
char sezione = _rel->cg(0).get_char("SEZIONE"); // Dare/Avere 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("NREG", nreg);
partita.put("DATAREG",dreg); partita.put("DATAREG",dreg);
partita.put("DATADOC",ddoc); partita.put("DATADOC",ddoc);
partita.put("NUMDOC", ndoc);
partita.put("REG", reg); partita.put("REG", reg);
partita.put("DESCR", desc); partita.put("DESCR", desc);
partita.put("PROTIVA",protiva); partita.put("PROTIVA",protiva);
@ -651,6 +652,8 @@ bool TPrimanota_application::edit_scadenze(int currig, const TBill& b, int anno,
while (k == K_ENTER) while (k == K_ENTER)
{ {
k = a.run(); k = a.run();
long pos;
if (k == K_ENTER) if (k == K_ENTER)
{ {
const int rata = a.row().get_int(0); 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(); err = scadenza.read();
CHECKD(err == NOERR, "Non ritrovo piu' la rata ", rata); CHECKD(err == NOERR, "Non ritrovo piu' la rata ", rata);
int urig = 1;
int nrig = a.row().get_int(4); int nrig = a.row().get_int(4);
if (nrig == 0) // Ho cliccato su una scadenza 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); const int nr = a.row(pos).get_int(4);
if (r == 0 || a.enabled(i)) if (nr) urig = nr;
{ if (nr == 0 || a.enabled(pos))
nrig = r; {
nrig = nr;
break; break;
} }
} }
} }
const bool nuovo = nrig == 0;
TRectype part(parbas); TRectype part(parbas);
if (nrig == 0) // Inserimento di un nuovo pagamento if (nuovo) // Inserimento di un nuovo pagamento
part.zero(); {
// 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 else
{ {
} }
if (edit_pagamento(parbas, scadenza.curr(), part)) 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; 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"); TMask m("cg2100s");
m.set_handler(S_IMPORTOPAG, importopag_handler);
TRelation rel(LF_PARTITE); // Working relation TRelation rel(LF_PARTITE); // Working relation
TLocalisamfile& partita = rel.lfile();
rel.lfile().curr() = part; partita.curr() = part;
m.autoload(&rel); // Load current record on mask
const real importo(scaden.get(SCAD_IMPORTO)); const real importo(scaden.get(SCAD_IMPORTO));
const real importopag(part.get(SCAD_IMPORTO)); const real importopag(part.get(SCAD_IMPORTO));
const real ritenute(part.get(PART_RITENUTE)); const real ritenute(part.get(PART_RITENUTE));
const real residuo = importo - importopag; 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); // Dati del documento (fattura) che ha generato la scadenza
m.set(S_TIPOPAG, tmp); 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 // Dati della scadenza che ha generato la partita
switch (atoi(tmp)) m.set(S_RESIDUO, residuo.string()); // Residuo da pagare
{ m.set(S_DATASCAD, scaden.get(SCAD_DATASCAD)); // Data della scadenza
case 2: m.set(S_IMPORTO, scaden.get(SCAD_IMPORTO)); // Importo della rata
caus = 3; break; // Tratta m.set(S_IMPORTOVAL, scaden.get(SCAD_IMPORTOVAL)); // " in valuta
case 3: m.set(S_RATA, scaden.get(SCAD_NRATA));
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());
tmp = curr_mask().get(F_DESCR); if (importopag.is_zero())
m.set(S_DESCR, tmp); m.set(S_IMPORTOPAG, residuo.string());
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);
}
const KEY key = m.run(); const KEY key = m.run();
if (key == K_ENTER) if (key == K_ENTER)
{ {
m.autosave(&rel); m.autosave(&rel);
part = rel.lfile().curr(); part = partita.curr();
} }
return key == K_ENTER; return key == K_ENTER;