Aggiunta la gestione del saldo DARE e AVERE e dei totali IMPONIBILI.

Aggiuta la ricerca per descrizione dei conti e dei clienti nelle maschere.


git-svn-id: svn://10.65.10.50/trunk@129 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-09-01 16:26:29 +00:00
parent c9d6658992
commit 03532d4a93
10 changed files with 1553 additions and 1324 deletions

View File

@ -49,6 +49,10 @@
#define F_CORRVALUTA 134
#define F_DATA74TER 135
#define F_DESCAGG 136
#define F_DARE 137
#define F_AVERE 138
#define F_IMPONIBILI 139
#define F_IMPOSTE 140
#define F_SHEETCG 300
#define F_SHEETIVA 301

View File

@ -168,7 +168,7 @@ END
SPREADSHEET F_SHEETCG
BEGIN
PROMPT 1 10 ""
PROMPT 0 9 ""
ITEM "Dare@17"
ITEM "Avere@17"
ITEM " @1"
@ -186,6 +186,20 @@ BEGIN
ITEM " @1"
END
NUMBER F_DARE 17
BEGIN
PROMPT 1 -1 "Saldo Dare "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_AVERE 17
BEGIN
PROMPT 40 -1 "Saldo Avere "
FLAGS "DRV"
PICTURE "."
END
ENDPAGE
ENDMASK

View File

@ -315,7 +315,7 @@ STRING F_PIVACLIENTE 14
BEGIN
PROMPT 1 11 "Partita IVA "
GROUP 1
USE LF_CLIFO KEY 3
USE LF_CLIFO KEY 5
INPUT TIPOCF "C"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PIVACLIENTE
@ -331,7 +331,7 @@ STRING F_PIVAFORNITORE 14
BEGIN
PROMPT 1 11 "Partita IVA "
GROUP 2
USE LF_CLIFO KEY 3
USE LF_CLIFO KEY 5
INPUT TIPOCF "F"
INPUT STATOPAIV F_STATOPAIV
INPUT PAIV F_PIVAFORNITORE
@ -534,7 +534,7 @@ END
SPREADSHEET F_SHEETIVA 0 7
BEGIN
PROMPT 3 4 ""
PROMPT 0 4 ""
ITEM "Imponibile@14"
ITEM "Iva@4"
ITEM "Det@1"
@ -547,10 +547,23 @@ BEGIN
ITEM "Descrizione Conto@50"
END
NUMBER F_IMPONIBILI 17
BEGIN
PROMPT 1 11 "Totale imponibili "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_IMPOSTE 17
BEGIN
PROMPT 40 11 "Totale imposte "
FLAGS "DRV"
PICTURE "."
END
SPREADSHEET F_SHEETCG
BEGIN
PROMPT 3 11 ""
PROMPT 0 12 ""
ITEM "Dare@17"
ITEM "Avere@17"
ITEM " @1"
@ -568,6 +581,20 @@ BEGIN
ITEM " @1"
END
NUMBER F_DARE 17
BEGIN
PROMPT 1 -1 "Saldo Dare "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_AVERE 17
BEGIN
PROMPT 40 -1 "Saldo Avere "
FLAGS "DRV"
PICTURE "."
END
ENDPAGE
ENDMASK

View File

@ -157,12 +157,15 @@ int TMovimentoPN::write(bool force, TDate&)
const TString16 reg(r.get("REG"));
TRegistro registro(reg, annoiva);
if (reg.not_empty() && registro.tipo_attivita() == "M")
if (registro.iva() != nessuna_iva)
{
const bool mista = registro.tipo_attivita() == "M";
for (int i = 0; i < iva_items(); i++)
{
int tipoatt = 1;
if (mista)
{
const int riga = iva(i).get_int("RIGAIMP");
int tipoatt = 0;
if (riga)
{
const TRectype& r = cg(riga-1);
@ -175,7 +178,8 @@ int TMovimentoPN::write(bool force, TDate&)
if (ib == ib_passivita || ib == ib_ricavi)
{
int ricser = conto.get_int("RICSER");
tipoatt = (ricser <= 0) ? 2 : 1;
tipoatt = (ricser == 0) ? 2 : 1;
}
}
}
}

View File

@ -266,10 +266,16 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo)
case 'F': // Ritenute Fiscali
case 'S': // Ritenute Sociali
case 'D': // IVA Detraibile
case 'N':last = 3; break; // IVA Non detraibile
case 'N':
last = 3; // IVA Non detraibile
break;
case 'T': // Totale documento
case 'I':last = 6; break; // Imponibile
default :last = 0; break; // Solo contabile
case 'I':
last = 7; // Imponibile
break;
default :
last = 0; // Solo contabile
break;
}
TSheet_field& cg = cgs();
@ -343,14 +349,7 @@ void TPrimanota_application::cgs_pack()
{
const real imp = get_cgs_imp(i);
if (imp == 0.0)
{
del = TRUE;
/*
const TConto c(r, 6, 0x0); // Remove if import=0 and Bill not used
del = !bill_used(c);
*/
}
}
if (del)
rows.destroy(i, FALSE);
@ -360,6 +359,44 @@ void TPrimanota_application::cgs_pack()
}
real TPrimanota_application::calcola_saldo() const
{
TArray& rows = cgs().rows_array();
const int max = rows.items();
real tdare, tavere;
for (int i = 0; i < max; i++)
{
TToken_string& r = (TToken_string&)rows[i];
const real dare(r.get(0));
const real avere(r.get());
tdare += dare;
tavere += avere;
}
real saldo = tdare-tavere;
switch (saldo.sign())
{
case 1:
mask().set(F_DARE, saldo.string());
mask().reset(F_AVERE);
break;
case -1:
mask().reset(F_DARE);
saldo = -saldo;
mask().set(F_AVERE, saldo.string());
break;
default:
mask().reset(F_DARE);
mask().reset(F_AVERE);
break;
}
return saldo;
}
// Handler dello sheet di contabilita'
// Certified 90%
bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
@ -367,22 +404,15 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
if (k == K_ENTER)
{
TSheet_field& cg = app().cgs();
bool empty = TRUE;
real saldo;
for (int i = 0; i < cg.items(); i++)
{
const real imp = app().get_cgs_imp(i);
if (empty) empty = imp == 0.0;
saldo += imp;
}
if (saldo != 0.0)
real saldo = app().calcola_saldo();
if (saldo != ZERO)
{
const char* ss = saldo.string(".");
return f.error_box("Il movimento e' sbilanciato di %s lire.", ss);
}
else
if (empty)
return f.error_box("Il movimento non contiene nessuna riga contabile!");
if (app().get_cgs_imp(0) == ZERO)
return f.error_box("Il movimento non ha una prima riga contabile valida!");
}
return TRUE;
}
@ -394,15 +424,20 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
TToken_string& row = cg.row(r);
const char tipo = row.empty() ? ' ' : row.right(1)[0];
if (k == K_SPACE)
{
TMask& m = cg.sheet_mask();
m.enable(DLG_DELREC, tipo == ' ');
} else
if (k == K_DEL)
switch(k)
{
case K_SPACE:
cg.sheet_mask().enable(DLG_DELREC, tipo == ' ');
break;
case K_ENTER:
app().calcola_saldo();
break;
case K_DEL:
if (tipo != ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
break;
default:
break;
}
return TRUE;
}
@ -497,7 +532,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
const real& percent = cod2IVA(f.mask().get(102));
real imposta = abs(imponibile) * percent / 100.0;
imposta.ceil();
if (imponibile.sign() < 0) imposta = -imposta;
if (imponibile < ZERO) imposta = -imposta;
const real val(f.get());
if (val != imposta)
@ -506,8 +541,8 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
{
const TString16 wrong(val.string("."));
const TString16 right(imposta.string("."));
if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right));
f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right);
}
}
} else
@ -524,6 +559,26 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
}
real TPrimanota_application::calcola_imp() const
{
TArray& rows = ivas().rows_array();
const int max = rows.items();
real imponibili, imposte;
for (int r = 0; r < max; r++)
{
TToken_string& row = (TToken_string&)rows[r];
imponibili += real(row.get(0));
imposte += real(row.get(3));
}
mask().set(F_IMPONIBILI, imponibili.string());
mask().set(F_IMPOSTE, imposte.string());
return imponibili+imposte;
}
// Certified 50%
bool TPrimanota_application::iva_notify(int r, KEY k)
{
@ -590,6 +645,9 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
else
app().add_cgs_imp(oldposiva, imp-oldiva);
oldiva = imp;
app().calcola_imp();
app().calcola_saldo();
}
return TRUE;
}
@ -601,13 +659,7 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
{
if (k != K_ENTER) return TRUE;
real imp;
for (int r = 0; r < app().ivas().items(); r++)
{
TToken_string& row = app().ivas().row(r);
imp += real(row.get(0)); // imponibile
imp += real(row.get(3)); // imposta
}
const real imp = app().calcola_imp();
const TMask& m = f.mask();
real tot(m.get(F_TOTALE));

View File

@ -127,6 +127,8 @@ protected:
real get_cgs_imp(int n);
void add_cgs_imp(int n, const real& importo);
void cgs_pack();
real calcola_saldo() const;
real calcola_imp() const;
void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc);
int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo);

View File

@ -1,4 +1,4 @@
PAGE "RIGA PRIMA NOTA" -1 -1 67 17
PAGE "RIGA PRIMA NOTA" -1 -1 67 16
GROUPBOX DLG_NULL 66 3
BEGIN
@ -46,9 +46,9 @@ LIST 103 1 12
BEGIN
PROMPT 2 6 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207
END
NUMBER 104 3
@ -87,8 +87,10 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
COPY OUTPUT 105
OUTPUT 106 SOTTOCONTO
OUTPUT 104 GRUPPO
OUTPUT 105 CONTO
OUTPUT 107 DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 2 101 102
@ -107,10 +109,9 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 206 CODCF
OUTPUT 107 RAGSOC
OUTPUT 307 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
FLAGS "G"
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
@ -127,21 +128,64 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 306 CODCF
OUTPUT 107 RAGSOC
OUTPUT 307 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
MESSAGE COPY,106
FLAGS "G"
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
STRING 107 50
BEGIN
PROMPT 2 7 "Descrizione "
PROMPT 2 7 "Descriz. "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 106
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga contabile"
ADD RUN cg0 -0
END
STRING 207 50
BEGIN
PROMPT 2 7 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC 207
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 206
MESSAGE COPY,107
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
STRING 307 50
BEGIN
PROMPT 2 7 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
FLAGS "D"
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC 307
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 306
MESSAGE COPY,107
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
GROUPBOX DLG_NULL 66 4
@ -153,9 +197,9 @@ LIST 110 1 12
BEGIN
PROMPT 2 10 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313|SHOW,114|HIDE,214|HIDE,314
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313|SHOW,214|HIDE,114|HIDE,314
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213|SHOW,314|HIDE,114|HIDE,214
END
NUMBER 111 3
@ -167,12 +211,10 @@ NUMBER 112 3
BEGIN
PROMPT 32 10 "Conto "
FIELD LF_PCON->CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
COPY USE 105
INPUT GRUPPO 111
INPUT CONTO 112
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
COPY DISPLAY 105
OUTPUT 110 TMCF
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
@ -189,21 +231,23 @@ BEGIN
COPY INPUT 112
INPUT SOTTOCONTO 113
COPY DISPLAY 106
COPY OUTPUT 112
OUTPUT 113 SOTTOCONTO
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
OUTPUT 114 DESCR
CHECKTYPE NORMAL
END
NUMBER 213 6
BEGIN
PROMPT 45 10 "Cliente "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
FIELD LF_CLIFO->CODCF
COPY USE 206
INPUT TIPOCF "C"
INPUT CODCF 213
COPY DISPLAY 206
OUTPUT 213 CODCF
OUTPUT 114 RAGSOC
OUTPUT 214 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
@ -211,22 +255,55 @@ END
NUMBER 313 6
BEGIN
PROMPT 45 10 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
FIELD LF_CLIFO->CODCF
COPY USE 306
INPUT TIPOCF "F"
INPUT CODCF 313
COPY DISPLAY 306
COPY OUTPUT 213
OUTPUT 313 CODCF
OUTPUT 314 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
STRING 114 50
BEGIN
PROMPT 2 11 "Descriz. "
FIELD LF_PCON->DESCR
PROMPT 2 11 "Descrizione "
FLAGS "D"
COPY USE 107
INPUT DESCR 114
COPY DISPLAY 107
COPY OUTPUT 113
ADD RUN cg0 -0
WARNING "Conto inesistente sulla riga contabile"
END
STRING 214 50
BEGIN
PROMPT 2 11 "Cliente "
FIELD LF_CLIFO->RAGSOC
COPY USE 207
INPUT TIPOCF "C"
INPUT RAGSOC 214
COPY DISPLAY 207
COPY OUTPUT 213
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
STRING 314 50
BEGIN
PROMPT 2 11 "Fornitore "
FIELD LF_CLIFO->RAGSOC
COPY USE 307
INPUT TIPOCF "F"
INPUT RAGSOC 314
COPY DISPLAY 307
COPY OUTPUT 313
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
LIST 115 20

View File

@ -10,11 +10,11 @@ BEGIN
PROMPT 2 2 "Tipo "
FIELD TMCF
ITEM " |Conto"
MESSAGE SHOW,109|HIDE,209|HIDE,309
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
ITEM "C|Cliente"
MESSAGE SHOW,209|HIDE,109|HIDE,309
MESSAGE SHOW,209|HIDE,109|HIDE,309|SHOW,210|HIDE,110|HIDE,310
ITEM "F|Fornitore"
MESSAGE SHOW,309|HIDE,109|HIDE,209
MESSAGE SHOW,309|HIDE,109|HIDE,209|SHOW,310|HIDE,110|HIDE,210
FLAGS "U"
END
@ -58,10 +58,10 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 109 SOTTOCONTO
OUTPUT 105 TIPOSPRIC
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO
OUTPUT 109 SOTTOCONTO
OUTPUT 110 DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
@ -80,7 +80,7 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 209 CODCF
OUTPUT 110 RAGSOC
OUTPUT 210 RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "G"
@ -98,7 +98,7 @@ BEGIN
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO
OUTPUT 309 CODCF
OUTPUT 110 RAGSOC
OUTPUT 310 RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "G"
@ -107,10 +107,58 @@ END
STRING 110 50
BEGIN
PROMPT 2 3 "Descrizione "
FLAGS "D"
PROMPT 2 3 "Descriz. "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 109
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga IVA"
ADD RUN cg0 -0
END
STRING 210 50
BEGIN
PROMPT 2 3 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC 210
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 209
MESSAGE COPY,110
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga IVA"
END
STRING 310 50
BEGIN
PROMPT 2 3 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC 310
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 309
MESSAGE COPY,110
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga IVA"
END
GROUPBOX DLG_NULL 67 5
BEGIN
PROMPT 1 5 "Imposta"

View File

@ -14,8 +14,9 @@ int main(int argc,char** argv)
{
case 0: rt = cg3100(argc,argv) ; break;
case 1: rt = cg3200(argc,argv) ; break;
// case 2: rt = cg3400(argc,argv) ; break;
case 3: rt = cg3500(argc,argv) ; break;
case 2: rt = cg3300(argc,argv) ; break;
case 3: rt = cg3400(argc,argv) ; break;
case 4: rt = cg3500(argc,argv) ; break;
default: error_box(usage, argv[0]) ; break;
}
return rt;

View File

@ -12,7 +12,7 @@
int cg3100(int argc, char* argv[]);
int cg3200(int argc, char* argv[]);
int cg3300(int argc, char* argv[]);
//int cg3400(int argc, char* argv[]);
int cg3400(int argc, char* argv[]);
int cg3500(int argc, char* argv[]);
#endif // __CG3_H