Corretti errori causali e prima nota

git-svn-id: svn://10.65.10.50/trunk@517 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-11-03 12:33:37 +00:00
parent cd56f9aecc
commit 7dc1fc51e9
15 changed files with 161 additions and 143 deletions

View File

@ -577,14 +577,11 @@ bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
// 2. g-c-s devono esistere // 2. g-c-s devono esistere
bool TCaus_app::sottoconto_hndl (TMask_field& f, KEY k) bool TCaus_app::sottoconto_hndl (TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (k == K_ENTER && f.get().not_empty())
{ {
const int g = f.mask().get_int(SS_GRUPPO); const TMask& m = f.mask();
const int c = f.mask().get_int(SS_CONTO); const bool ok = m.get(SS_GRUPPO).not_empty() && m.get(SS_CONTO).not_empty();
const int s = atoi(f.get()); if (!ok) return f.error_box("Conto incompleto");
if (s != 0 && (g == 0 || c == 0))
return f.error_box("Conto incompleto");
} }
return TRUE; return TRUE;
} }

View File

@ -162,17 +162,9 @@ BEGIN
ITEM "Gr." ITEM "Gr."
ITEM "Co." ITEM "Co."
ITEM "Sottoc.@6" ITEM "Sottoc.@6"
<<<<<<< cg0500a.uml
ITEM "Descrizione Conto@50" ITEM "Descrizione Conto@50"
ITEM "Desc. agg.@5" ITEM "Desc. agg.@5"
ITEM "Descrizione Aggiuntiva@50" ITEM "Descrizione Aggiuntiva@50"
=======
ITEM "D/A"
ITEM "Descrizione conto@50"
ITEM "Descr. agg.@5"
ITEM "Iva"
ITEM "Cod.Iva@4"
>>>>>>> 1.27
END END
ENDPAGE ENDPAGE
@ -256,8 +248,6 @@ BOOLEAN F_OP_INTRACOM
BEGIN BEGIN
PROMPT 2 10 "Operazione intracomunitaria" PROMPT 2 10 "Operazione intracomunitaria"
FIELD LF_CAUSALI->INTRACOM FIELD LF_CAUSALI->INTRACOM
// MESSAGE TRUE "X", F_MOV_VALU | DISABLE, F_MOV_VALU
// MESSAGE FALSE "", F_MOV_VALU | ENABLE, F_MOV_VALU
GROUP 2 GROUP 2
END END
@ -265,6 +255,8 @@ BOOLEAN F_VALINTRA
BEGIN BEGIN
PROMPT 34 10 "Gestione valuta per operazioni intrac." PROMPT 34 10 "Gestione valuta per operazioni intrac."
FIELD LF_CAUSALI->VALINTRA FIELD LF_CAUSALI->VALINTRA
MESSAGE FALSE " ",F_MOV_VALU|ENABLE,F_MOV_VALU
MESSAGE TRUE "X",F_MOV_VALU|DISABLE,F_MOV_VALU
GROUP 2 GROUP 2
END END

View File

@ -210,7 +210,7 @@ BEGIN
GROUP 1 GROUP 1
END END
STRING 109 5 STRING 109 50
BEGIN BEGIN
PROMPT 1 8 "" PROMPT 1 8 ""
FLAGS "D" FLAGS "D"

View File

@ -468,10 +468,9 @@ bool data_limite (TMask_field& f, KEY key)
TDate in="", fin=""; TDate in="", fin="";
// CG1600_application * a = (CG1600_application*) MainApp(); // CG1600_application * a = (CG1600_application*) MainApp();
tipobil = atoi(m.get(F_TIPOBIL)); tipobil = m.get_int(F_TIPOBIL);
tipostampa = atoi(m.get(F_TIPOSTAMPA)); tipostampa = m.get_int(F_TIPOSTAMPA);
int annoese = m.get_int(F_ANNOESE);
long annoese = m.get_long(F_ANNOESE);
if ((tipobil == 1) && (tipostampa == 1)) if ((tipobil == 1) && (tipostampa == 1))
{ {

View File

@ -53,9 +53,6 @@ TMask* TPrimanota_application::load_mask(int n)
_savenew = !c.get_bool("Cg21SN"); _savenew = !c.get_bool("Cg21SN");
} }
break; break;
case 1:
m->set_handler(F_VISVAL, visval_handler);
break;
case 2: case 2:
{ {
m->set_handler(F_CODREG, reg_handler); m->set_handler(F_CODREG, reg_handler);
@ -66,7 +63,6 @@ TMask* TPrimanota_application::load_mask(int n)
m->set_handler(F_RITFIS, ritfis_handler); m->set_handler(F_RITFIS, ritfis_handler);
m->set_handler(F_RITSOC, ritsoc_handler); m->set_handler(F_RITSOC, ritsoc_handler);
m->set_handler(F_CODIVA, main_codiva_handler); m->set_handler(F_CODIVA, main_codiva_handler);
m->set_handler(F_VISVAL, visval_handler);
m->set_handler(F_OCCASEDIT, occas_handler); m->set_handler(F_OCCASEDIT, occas_handler);
m->set_handler(F_SOLAIVA, solaiva_handler); m->set_handler(F_SOLAIVA, solaiva_handler);
m->set_handler(F_SHEETIVA, iva_handler); m->set_handler(F_SHEETIVA, iva_handler);
@ -82,21 +78,14 @@ TMask* TPrimanota_application::load_mask(int n)
ism.set_handler(209, sheet_clifo_handler); ism.set_handler(209, sheet_clifo_handler);
ism.set_handler(309, sheet_clifo_handler); ism.set_handler(309, sheet_clifo_handler);
} }
break; case 1:
case 3: {
m->set_handler(O_CODICE, occas_code_handler);
break;
default:
CHECKD(0, "Che cavolo di maschera e' la ", n);
break;
}
if (n == 1 || n == 2)
{
m->set_handler(F_DATAREG, datareg_handler); m->set_handler(F_DATAREG, datareg_handler);
m->set_handler(F_DATACOMP, datacomp_handler); m->set_handler(F_DATACOMP, datacomp_handler);
m->set_handler(F_DESCR, descr_handler); m->set_handler(F_DESCR, descr_handler);
m->set_handler(F_CODCAUS, caus_modify_handler); m->set_handler(F_CODCAUS, caus_modify_handler);
m->set_handler(F_SHEETCG, cg_handler); m->set_handler(F_SHEETCG, cg_handler);
m->set_handler(F_VISVAL, visval_handler);
TSheet_field& cg = (TSheet_field&)m->field(F_SHEETCG); TSheet_field& cg = (TSheet_field&)m->field(F_SHEETCG);
cg.set_notify(cg_notify); cg.set_notify(cg_notify);
@ -111,6 +100,14 @@ if (n == 1 || n == 2)
cgm.set_handler(113, suspended_handler); cgm.set_handler(113, suspended_handler);
cgm.set_handler(213, sheet_clifo_handler); cgm.set_handler(213, sheet_clifo_handler);
cgm.set_handler(313, sheet_clifo_handler); cgm.set_handler(313, sheet_clifo_handler);
}
break;
case 3:
m->set_handler(O_CODICE, occas_code_handler);
break;
default:
CHECKD(0, "Che cavolo di maschera e' la ", n);
break;
} }
return _msk[n] = m; return _msk[n] = m;
@ -204,7 +201,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
m->show(F_NUMRIF, sal); m->show(F_NUMRIF, sal);
if (sal) if (sal)
{ {
TString80 val; TString16 val;
if (riferimento_partita()) if (riferimento_partita())
val = m->get(F_NUMDOC); val = m->get(F_NUMDOC);
else else
@ -292,6 +289,7 @@ void TPrimanota_application::init_mask(TMask& m)
fill_sheet(m); fill_sheet(m);
const bool intra = _causale.intra(); const bool intra = _causale.intra();
const bool valintra = _causale.valintra();
if (_iva != nessuna_iva) if (_iva != nessuna_iva)
{ {
@ -311,14 +309,14 @@ void TPrimanota_application::init_mask(TMask& m)
m.show(F_CORRLIRE, intra); m.show(F_CORRLIRE, intra);
const bool corrval = intra && _causale.corrval(); const bool corrval = intra && _causale.valintra();
m.show(F_CORRVALUTA, corrval); m.show(F_CORRVALUTA, corrval);
m.show(F_CODIVA, m.mode() == MODE_INS); m.show(F_CODIVA, m.mode() == MODE_INS);
} }
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_VISVAL (GROUP 3) // Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_VISVAL (GROUP 3)
const bool valuta = _causale.valuta() && (intra || gestione_valuta()); const bool valuta = _causale.valuta() || _causale.valintra();
m.send_key(K_SHIFT+K_CTRL+(valuta ? 's' : 'h'), -3); m.send_key(K_SHIFT+K_CTRL+(valuta ? 's' : 'h'), -3);
if (valuta) if (valuta)
m.set(F_VISVAL, "X"); m.set(F_VISVAL, "X");
@ -328,15 +326,13 @@ void TPrimanota_application::init_query_mode(TMask& m)
{ {
read_firm_params(); read_firm_params();
enable_menu_item(M_FILE_PRINT); enable_menu_item(M_FILE_PRINT);
// m.enable(DLG_NEWREC);
} }
void TPrimanota_application::fill_sheet(TMask& m) const void TPrimanota_application::fill_sheet(TMask& m) const
{ {
TSheet_field& cgs = (TSheet_field&)m.field(F_SHEETCG); TSheet_field& cgs = (TSheet_field&)m.field(F_SHEETCG);
for (int r = cgs.items(); r < 16; r++) for (int r = cgs.items(); r < 16; r++) cgs.row(r);
cgs.row(r);
if (_iva != nessuna_iva) if (_iva != nessuna_iva)
{ {
@ -364,9 +360,7 @@ const char* TPrimanota_application::get_next_key()
k.add(F_DATADOC); k.add(m.get(F_DATADOC)); // documento k.add(F_DATADOC); k.add(m.get(F_DATADOC)); // documento
const long n = m.get_long(F_NUMDOC); const long n = m.get_long(F_NUMDOC);
if (n > 0) if (n > 0)
{ { k.add(F_NUMDOC); k.add(n+1); } // incrementa numero documento
k.add(F_NUMDOC); k.add(n+1); // incrementa numero documento
}
} }
return strcpy(__tmp_string, k); return strcpy(__tmp_string, k);
@ -413,10 +407,8 @@ void TPrimanota_application::init_insert_mode(TMask& m)
TBill tc; _causale.bill(nriga, tc); TBill tc; _causale.bill(nriga, tc);
if (tc.conto() < 1) continue; // Considera solo conti validi if (tc.conto() < 1) continue; // Considera solo conti validi
char sezione = rcaus->get_char(RCA_SEZIONE); const char sezione = rcaus->get_char(RCA_SEZIONE);
if (sezione != 'A') sezione = 'D'; const TImporto zero('D', ZERO);
const TImporto zero(sezione, ZERO);
const TString80 desc(_causale.desc_agg(i)); const TString80 desc(_causale.desc_agg(i));
if (nriga == 1) m.set(F_DESCR, desc); if (nriga == 1) m.set(F_DESCR, desc);
@ -424,26 +416,18 @@ void TPrimanota_application::init_insert_mode(TMask& m)
if (iva() == nessuna_iva) if (iva() == nessuna_iva)
{ {
const int pos = set_cgs_row(-1,zero,tc,desc,' '); const int pos = set_cgs_row(-1,zero,tc,desc,' ');
cgs().disable_cell(pos, sezione == 'D' ? 1 : 0); if (sezione > ' ')
cgs().disable_cell(pos, sezione == 'D' ? 1 : 0);
} }
else else
{ {
if (nriga >= 2 && nriga <= 9) if (nriga >= 2 && nriga <= 9)
continue; // Conti per IVA detraibile e non, ritenute sociali e fiscali continue; // Conti per IVA detraibile e non, ritenute sociali e fiscali
const bool rigaiva = rcaus->get_bool(RCA_RIGAIVA); const char tipo = nriga == 1 ? 'T' : ' ';
if (rigaiva) if (nriga == 1 && tc.tipo() > ' ' && tc.sottoconto() != 0)
{ m.set(tc.tipo() == 'C' ? F_CLIENTE : F_FORNITORE, tc.sottoconto());
const TString16 codiva(rcaus->get(RCA_CODIVA)); set_cgs_row(-1,zero,tc,desc,tipo);
set_ivas_row(-1,codiva,tc,desc);
}
else
{
const char tipo = nriga == 1 ? 'T' : ' ';
if (nriga == 1 && tc.tipo() > ' ' && tc.sottoconto() != 0)
m.set(tc.tipo() == 'C' ? F_CLIENTE : F_FORNITORE, tc.sottoconto());
set_cgs_row(-1,zero,tc,desc,tipo);
}
} }
} }
} }
@ -455,6 +439,7 @@ void TPrimanota_application::init_modify_mode(TMask& m)
} }
// Legge un conto da una riga contabile o iva di prima nota
bool TPrimanota_application::get_conto(const TRectype& r, TBill& c) const bool TPrimanota_application::get_conto(const TRectype& r, TBill& c) const
{ {
c.set(r.get_int("GRUPPO"), r.get_int("CONTO"), c.set(r.get_int("GRUPPO"), r.get_int("CONTO"),
@ -464,6 +449,7 @@ bool TPrimanota_application::get_conto(const TRectype& r, TBill& c) const
return c.ok(); return c.ok();
} }
// Scrive un conto su una riga di proma nota
void TPrimanota_application::put_conto(TRectype& r, const TBill& c) const void TPrimanota_application::put_conto(TRectype& r, const TBill& c) const
{ {
r.put("TIPOC", c.tipo()); r.put("TIPOC", c.tipo());
@ -604,7 +590,7 @@ int TPrimanota_application::read(TMask& m)
} }
// Trasferisce i dati da maschera a movimento di prima nota
void TPrimanota_application::mask2rel(const TMask& m) void TPrimanota_application::mask2rel(const TMask& m)
{ {
_rel->lfile().zero(); _rel->lfile().zero();
@ -622,7 +608,6 @@ void TPrimanota_application::mask2rel(const TMask& m)
cgs_pack(); // Destroy all null rows cgs_pack(); // Destroy all null rows
TArray& rows = cgs().rows_array(); TArray& rows = cgs().rows_array();
int cur = 1;
// Controlla se e' un movimento con righe contabili // Controlla se e' un movimento con righe contabili
if (iva() == nessuna_iva || !m.get_bool(F_SOLAIVA)) if (iva() == nessuna_iva || !m.get_bool(F_SOLAIVA))
@ -635,7 +620,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
const TConto conto(row, 2, 0x3); const TConto conto(row, 2, 0x3);
_saldi.aggiorna(conto, n.valore(), n.sezione(), TRUE); _saldi.aggiorna(conto, n.valore(), n.sezione(), TRUE);
TRectype &r = _rel->cg(cur-1); TRectype &r = _rel->cg(i);
r.zero(); r.zero();
r.put("IMPORTO", n.valore()); // Importo r.put("IMPORTO", n.valore()); // Importo
@ -644,7 +629,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
r.put("NUMREG", numreg); r.put("NUMREG", numreg);
r.put("ANNOES", annoes); r.put("ANNOES", annoes);
r.put("DATAREG", datareg); r.put("DATAREG", datareg);
r.put("NUMRIG", cur); r.put("NUMRIG", i+1);
put_conto(r, conto); // Conto put_conto(r, conto); // Conto
@ -663,14 +648,13 @@ void TPrimanota_application::mask2rel(const TMask& m)
rcontr = bill2contr(contro, n.sezione())+1; rcontr = bill2contr(contro, n.sezione())+1;
if (rcontr < 1) if (rcontr < 1)
{ {
warning_box("La riga contabile %d non ha una contropartita valida", cur); rcontr = i == 0 ? 2 : 1;
rcontr = 0; if (!yesno_box("La riga contabile %d non ha una contropartita valida:\n"
"si desidera trasformarla nel conto della riga %d", i+1, rcontr))
rcontr = 0;
} }
} }
r.put("RCONTR", rcontr); // Contropartita r.put("RCONTR", rcontr); // Contropartita
cur++;
} }
} }
if (_iva == nessuna_iva) return; if (_iva == nessuna_iva) return;
@ -711,18 +695,17 @@ void TPrimanota_application::mask2rel(const TMask& m)
} }
TArray& irows = ivas().rows_array(); TArray& irows = ivas().rows_array();
cur = 1;
for (int i = 0; i < irows.items(); i++) for (int i = 0; i < irows.items(); i++)
{ {
TToken_string& row = (TToken_string&)irows[i]; TToken_string& row = (TToken_string&)irows[i];
if (row.empty_items()) if (row.empty_items())
continue; continue;
TRectype &r = _rel->iva(cur-1); TRectype &r = _rel->iva(i);
r.zero(); r.zero();
r.put("ANNOES", annoes); r.put("ANNOES", annoes);
r.put("NUMREG", numreg); r.put("NUMREG", numreg);
r.put("NUMRIG", cur); r.put("NUMRIG", i+1);
real imponibile(row.get(0)); real imponibile(row.get(0));
if (to_swap) imponibile = -imponibile; if (to_swap) imponibile = -imponibile;
@ -746,8 +729,6 @@ void TPrimanota_application::mask2rel(const TMask& m)
const int rimp = bill2pos(c, 'I')+1; const int rimp = bill2pos(c, 'I')+1;
r.put("RIGAIMP", rimp); r.put("RIGAIMP", rimp);
put_conto(r, c); put_conto(r, c);
cur++;
} }
} }
@ -836,8 +817,6 @@ void TPrimanota_application::genera_incasso(const char* causimm)
if (caus.data_doc()) m.efield(F_DATADOC).check_type(CHECK_REQUIRED); if (caus.data_doc()) m.efield(F_DATADOC).check_type(CHECK_REQUIRED);
if (caus.num_doc()) m.efield(F_NUMDOC).check_type(CHECK_REQUIRED); if (caus.num_doc()) m.efield(F_NUMDOC).check_type(CHECK_REQUIRED);
TBill conto; caus.bill(1, conto); // Conto della seconda riga della causale
m.set(F_DATAREG, curr_mask().get(F_DATAREG)); m.set(F_DATAREG, curr_mask().get(F_DATAREG));
m.set(F_DATACOMP, curr_mask().get(F_DATACOMP)); m.set(F_DATACOMP, curr_mask().get(F_DATACOMP));
@ -850,14 +829,14 @@ void TPrimanota_application::genera_incasso(const char* causimm)
m.set(I_SEZIONE1, caus.sezione_clifo() == 'D' ? "D" : "A"); m.set(I_SEZIONE1, caus.sezione_clifo() == 'D' ? "D" : "A");
m.set(F_TOTALE, curr_mask().get(F_TOTALE)); m.set(F_TOTALE, curr_mask().get(F_TOTALE));
m.set(F_CLIFO, clifo() == 'C' ? "C" : "F");
m.set(F_GRUPPOCLIFO, conto.gruppo());
m.set(F_CONTOCLIFO, conto.conto());
const short clifo_id = clifo() == 'C' ? F_CLIENTE : F_FORNITORE; m.set(F_CLIFO, _rel->cg(0).get("TIPOC"));
m.set(clifo_id, curr_mask().get(clifo_id)); m.set(F_GRUPPOCLIFO, _rel->cg(0).get("GRUPPO"));
m.set(F_CONTOCLIFO, _rel->cg(0).get("CONTO"));
const TString& clifo = _rel->cg(0).get("SOTTOCONTO");
m.set(F_CLIENTE, clifo); m.set(F_FORNITORE, clifo); m.set(I_SOTTOCONTO, clifo);
caus.bill(2, conto); TBill conto; caus.bill(2, conto); // Conto della seconda riga della causale
m.set(I_SEZIONE2, caus.sezione_clifo() == 'D' ? "A" : "D"); m.set(I_SEZIONE2, caus.sezione_clifo() == 'D' ? "A" : "D");
m.set(I_IMPORTO2, curr_mask().get(F_TOTALE)); m.set(I_IMPORTO2, curr_mask().get(F_TOTALE));
m.set(I_GRUPPO2, conto.gruppo()); m.set(I_GRUPPO2, conto.gruppo());
@ -884,7 +863,19 @@ void TPrimanota_application::genera_incasso(const char* causimm)
r.put("TIPOC", m.get(F_CLIFO)); r.put("TIPOC", m.get(F_CLIFO));
r.put("GRUPPO", m.get(F_GRUPPOCLIFO)); r.put("GRUPPO", m.get(F_GRUPPOCLIFO));
r.put("CONTO", m.get(F_CONTOCLIFO)); r.put("CONTO", m.get(F_CONTOCLIFO));
short clifo_id;
switch (m.get(F_CLIFO)[0])
{
case 'C':
clifo_id = F_CLIENTE; break;
case 'F':
clifo_id = F_FORNITORE; break;
default :
clifo_id = I_SOTTOCONTO; break;
}
r.put("SOTTOCONTO", m.get(clifo_id)); r.put("SOTTOCONTO", m.get(clifo_id));
r.put("DESCR", m.get(F_DESCR)); r.put("DESCR", m.get(F_DESCR));
r.put("RCONTR", 2); r.put("RCONTR", 2);
r.put("ROWTYPE", " "); r.put("ROWTYPE", " ");

View File

@ -81,23 +81,24 @@
// Maschera incasso/pagamento immediato // Maschera incasso/pagamento immediato
#define I_SEZIONE1 201 #define I_SEZIONE1 201
#define I_IMPORTO1 202 #define I_IMPORTO1 202
#define I_SOTTOCONTO 203
#define I_SEZIONE2 203 #define I_SEZIONE2 210
#define I_IMPORTO2 204 #define I_IMPORTO2 211
#define I_GRUPPO2 205 #define I_GRUPPO2 212
#define I_CONTO2 206 #define I_CONTO2 213
#define I_SOTTOCONTO2 207 #define I_SOTTOCONTO2 214
#define I_SEZIONE3 208 #define I_SEZIONE3 220
#define I_IMPORTO3 209 #define I_IMPORTO3 221
#define I_GRUPPO3 210 #define I_GRUPPO3 222
#define I_CONTO3 211 #define I_CONTO3 223
#define I_SOTTOCONTO3 212 #define I_SOTTOCONTO3 224
#define I_SEZIONE4 213 #define I_SEZIONE4 230
#define I_IMPORTO4 214 #define I_IMPORTO4 231
#define I_GRUPPO4 215 #define I_GRUPPO4 232
#define I_CONTO4 216 #define I_CONTO4 233
#define I_SOTTOCONTO4 217 #define I_SOTTOCONTO4 234
#endif #endif

View File

@ -104,7 +104,7 @@ END
LIST F_PROVVISORIO 1 25 LIST F_PROVVISORIO 1 25
BEGIN BEGIN
PROMPT 1 7 "Movimento provvisorio " PROMPT 1 7 "Movimento provvisorio "
FIELD PROVVIS FIELD PROVVIS
ITEM " |No (movimento normale)" ITEM " |No (movimento normale)"
ITEM "P|Si (cancellabile)" ITEM "P|Si (cancellabile)"

View File

@ -364,7 +364,7 @@ BOOLEAN F_OCCASIONALE
BEGIN BEGIN
MESSAGE FALSE HIDE,F_OCCASEDIT|ENABLE,F_PIVACLIENTE|ENABLE,F_PIVAFORNITORE|SHOW,F_STATOPAIV MESSAGE FALSE HIDE,F_OCCASEDIT|ENABLE,F_PIVACLIENTE|ENABLE,F_PIVAFORNITORE|SHOW,F_STATOPAIV
MESSAGE TRUE SHOW,F_OCCASEDIT|DISABLE,F_PIVACLIENTE|DISABLE,F_PIVAFORNITORE|HIDE,F_STATOPAIV MESSAGE TRUE SHOW,F_OCCASEDIT|DISABLE,F_PIVACLIENTE|DISABLE,F_PIVAFORNITORE|HIDE,F_STATOPAIV
FLAGS "GH" FLAGS "GHP"
END END
STRING F_CODPAG 4 STRING F_CODPAG 4

View File

@ -99,11 +99,11 @@ END
LIST F_CLIFO 1 12 LIST F_CLIFO 1 12
BEGIN BEGIN
PROMPT 37 7 "" PROMPT 37 7 ""
ITEM "C|Cliente" MESSAGE HIDE,F_FORNITORE|SHOW,F_CLIENTE ITEM " |Conto" MESSAGE SHOW,I_SOTTOCONTO|HIDE,F_FORNITORE|HIDE,F_CLIENTE
ITEM "F|Fornitore" MESSAGE HIDE,F_CLIENTE|SHOW,F_FORNITORE ITEM "C|Cliente" MESSAGE HIDE,I_SOTTOCONTO|HIDE,F_FORNITORE|SHOW,F_CLIENTE
ITEM "F|Fornitore" MESSAGE HIDE,I_SOTTOCONTO|HIDE,F_CLIENTE|SHOW,F_FORNITORE
FIELD LF_MOV->TIPO FIELD LF_MOV->TIPO
FLAGS "GD"
END END
NUMBER F_GRUPPOCLIFO 3 NUMBER F_GRUPPOCLIFO 3
@ -116,7 +116,7 @@ END
NUMBER F_CONTOCLIFO 3 NUMBER F_CONTOCLIFO 3
BEGIN BEGIN
PROMPT 57 7 "" PROMPT 57 7 ""
USE LF_PCON SELECT TMCF==#F_CLIFO USE LF_PCON SELECT SOTTOCONTO==""
INPUT GRUPPO F_GRUPPOCLIFO INPUT GRUPPO F_GRUPPOCLIFO
INPUT CONTO F_CONTOCLIFO INPUT CONTO F_CONTOCLIFO
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
@ -139,6 +139,7 @@ BEGIN
DISPLAY "Ragione Sociale Cliente@50" RAGSOC DISPLAY "Ragione Sociale Cliente@50" RAGSOC
OUTPUT F_CLIENTE CODCF OUTPUT F_CLIENTE CODCF
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Cliente assente"
END END
NUMBER F_FORNITORE 6 NUMBER F_FORNITORE 6
@ -152,8 +153,26 @@ BEGIN
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
OUTPUT F_FORNITORE CODCF OUTPUT F_FORNITORE CODCF
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Fornitore assente"
END END
NUMBER I_SOTTOCONTO 6
BEGIN
PROMPT 65 7 ""
USE LF_PCON SELECT SOTTOCONTO != ""
INPUT SOTTOCONTO I_SOTTOCONTO
INPUT GRUPPO F_GRUPPOCLIFO
INPUT CONTO F_CONTOCLIFO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT I_SOTTOCONTO SOTTOCONTO
OUTPUT F_GRUPPOCLIFO GRUPPO
OUTPUT F_CONTOCLIFO CONTO
CHECKTYPE REQUIRED
WARNING "Sottoconto assente"
END
LIST I_SEZIONE2 1 8 LIST I_SEZIONE2 1 8
BEGIN BEGIN
@ -189,7 +208,7 @@ END
NUMBER I_SOTTOCONTO2 6 NUMBER I_SOTTOCONTO2 6
BEGIN BEGIN
PROMPT 65 8 "" PROMPT 65 8 ""
USE LF_PCON SELECT SOTTOCONTO!="" COPY USE I_SOTTOCONTO
INPUT GRUPPO I_GRUPPO2 INPUT GRUPPO I_GRUPPO2
INPUT CONTO I_CONTO2 INPUT CONTO I_CONTO2
INPUT SOTTOCONTO I_SOTTOCONTO2 INPUT SOTTOCONTO I_SOTTOCONTO2
@ -201,6 +220,7 @@ BEGIN
OUTPUT I_CONTO2 CONTO OUTPUT I_CONTO2 CONTO
OUTPUT I_SOTTOCONTO2 SOTTOCONTO OUTPUT I_SOTTOCONTO2 SOTTOCONTO
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Sottoconto assente"
END END
LIST I_SEZIONE3 1 8 LIST I_SEZIONE3 1 8
@ -237,7 +257,7 @@ END
NUMBER I_SOTTOCONTO3 6 NUMBER I_SOTTOCONTO3 6
BEGIN BEGIN
PROMPT 65 9 "" PROMPT 65 9 ""
COPY USE I_SOTTOCONTO2 COPY USE I_SOTTOCONTO
INPUT GRUPPO I_GRUPPO3 INPUT GRUPPO I_GRUPPO3
INPUT CONTO I_CONTO3 INPUT CONTO I_CONTO3
INPUT SOTTOCONTO I_SOTTOCONTO3 INPUT SOTTOCONTO I_SOTTOCONTO3
@ -247,6 +267,7 @@ BEGIN
OUTPUT I_SOTTOCONTO3 SOTTOCONTO OUTPUT I_SOTTOCONTO3 SOTTOCONTO
CHECKTYPE NORMAL CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 I_IMPORTO3 VALIDATE REQIF_FUNC 1 I_IMPORTO3
WARNING "Sottoconto assente"
END END
LIST I_SEZIONE4 1 8 LIST I_SEZIONE4 1 8
@ -283,7 +304,7 @@ END
NUMBER I_SOTTOCONTO4 6 NUMBER I_SOTTOCONTO4 6
BEGIN BEGIN
PROMPT 65 10 "" PROMPT 65 10 ""
COPY USE I_SOTTOCONTO2 COPY USE I_SOTTOCONTO
INPUT GRUPPO I_GRUPPO4 INPUT GRUPPO I_GRUPPO4
INPUT CONTO I_CONTO4 INPUT CONTO I_CONTO4
INPUT SOTTOCONTO I_SOTTOCONTO4 INPUT SOTTOCONTO I_SOTTOCONTO4
@ -293,6 +314,7 @@ BEGIN
OUTPUT I_SOTTOCONTO4 SOTTOCONTO OUTPUT I_SOTTOCONTO4 SOTTOCONTO
CHECKTYPE NORMAL CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 I_IMPORTO4 VALIDATE REQIF_FUNC 1 I_IMPORTO4
WARNING "Sottoconto assente"
END END

View File

@ -582,7 +582,7 @@ TSheet_field& TPrimanota_application::ivas() const
TBill& TPrimanota_application::ivas_bill(TBill& c) TBill& TPrimanota_application::ivas_bill(TBill& c)
{ {
int spric = c.tipo_cr(); const int spric = c.tipo_cr();
if (spric == 2 || spric == 3) if (spric == 2 || spric == 3)
{ {
const TFixed_string td(causale().tipo_doc()); const TFixed_string td(causale().tipo_doc());
@ -591,18 +591,6 @@ TBill& TPrimanota_application::ivas_bill(TBill& c)
return c; return c;
} }
void TPrimanota_application::set_ivas_row(int nriga, const char* codiva, TBill& tc,
const char* desc)
{
TToken_string& riga = ivas().row(nriga);
riga = " "; // Importo
riga.add (codiva); // codiva
riga.add (" | "); // Det - Imposta
riga.add(ivas_bill(tc).string(0x7)); // Conto
riga.add(desc); // Descrizione
}
bool TPrimanota_application::imponibile_handler(TMask_field& f, KEY key) bool TPrimanota_application::imponibile_handler(TMask_field& f, KEY key)
{ {
if (key == K_TAB && f.dirty()) if (key == K_TAB && f.dirty())
@ -1270,13 +1258,32 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
tipo = ' '; tipo = ' ';
} }
TBill c(gruppo, conto, codice, tipo); TBill nuovo(gruppo, conto, codice, tipo);
real tot(m.get(F_TOTALE)); real tot(m.get(F_TOTALE));
// Creazione/Aggiornamento riga totale
const int pos = type2pos('T'); const int pos = type2pos('T');
set_cgs_row(pos, real2imp(tot, 'T'), c, m.get(F_DESCR), 'T'); if (pos >= 0)
{
TSheet_field& ss = cgs();
TToken_string& row = ss.row(pos);
const TBill vecchio(row, 2, 0x1);
if (vecchio.ok() && nuovo != vecchio) // Se cambio cliente/fornitore
{
for (int i = 0; i < ss.items(); i++) if (i != pos)
{
TToken_string& r = ss.row(i);
const TBill tacchia(r, 9, 0x1);
if (tacchia == vecchio)
{
nuovo.add_to(r, 9, 0x3); // Aggiorna contropartite
ss.force_update(i);
}
}
}
}
// Creazione/Aggiornamento riga totale
set_cgs_row(pos, real2imp(tot, 'T'), nuovo, m.get(F_DESCR), 'T');
calcola_saldo(); calcola_saldo();
} }
@ -1292,7 +1299,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
{ {
TMask& m = f.mask(); TMask& m = f.mask();
app().add_cgs_tot(m); app().add_cgs_tot(m);
TLocalisamfile clifo(LF_CLIFO); TLocalisamfile& clifo = ((TEdit_field&)f).browse()->cursor()->file();
const int alleg = clifo.get_int(CLI_ALLEG); const int alleg = clifo.get_int(CLI_ALLEG);
TEdit_field& upi = m.efield(F_RIEPILOGO); TEdit_field& upi = m.efield(F_RIEPILOGO);
upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL); upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL);

View File

@ -158,7 +158,6 @@ protected:
real calcola_saldo() const; real calcola_saldo() const;
real calcola_imp() const; real calcola_imp() const;
void set_ivas_row(int n, const char* codiva, TBill& tc, const char* desc);
int set_cgs_row(int n, const TImporto& importo, TBill& conto, const char* desc, char tipo); int set_cgs_row(int n, const TImporto& importo, TBill& conto, const char* desc, char tipo);
void reset_cgs_row(int n); void reset_cgs_row(int n);
void disable_cgs_cells(int n, char tipo); void disable_cgs_cells(int n, char tipo);

View File

@ -395,7 +395,7 @@ bool TCausale::valuta() const
bool TCausale::intra() const bool TCausale::intra() const
{ return _rec.ok() ? _rec.get_bool("INTRACOM") : FALSE; } { return _rec.ok() ? _rec.get_bool("INTRACOM") : FALSE; }
bool TCausale::corrval() const bool TCausale::valintra() const
{ return _rec.ok() ? _rec.get_bool("VALINTRA") : FALSE; } { return _rec.ok() ? _rec.get_bool("VALINTRA") : FALSE; }
const char* TCausale::causale_inc_imm() const const char* TCausale::causale_inc_imm() const

View File

@ -93,7 +93,7 @@ public:
bool sezionale() const; bool sezionale() const;
bool valuta() const; bool valuta() const;
bool intra() const; bool intra() const;
bool corrval() const; bool valintra() const;
const char* causale_inc_imm() const; const char* causale_inc_imm() const;
const char* tipo_doc() const; const char* tipo_doc() const;

View File

@ -17,7 +17,7 @@ BEGIN
DISPLAY "Tipo" S1 DISPLAY "Tipo" S1
OUTPUT 102 CODTAB OUTPUT 102 CODTAB
OUTPUT 211 S0 OUTPUT 211 S0
CHECKTYPE NORMAL WARNING "Codice IVA assente"
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 101
END END
@ -27,13 +27,23 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
LIST 103 1 59 NUMBER 103 1
BEGIN BEGIN
PROMPT 2 3 "Detraibilita' " PROMPT 2 3 "Detraibilita' "
ITEM " |0. Regime normale" SHEET "Codice|Tipo detraibilita'@75"
ITEM "1|1. IVA indetraibile su acquisti riferiti a ricavi esenti" INPUT 103
ITEM "3|3. IVA indicata per il solo calcolo di ventilazione" ITEM " |Regime normale"
ITEM "9|9. IVA non detraibile per l'articolo 19" ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti"
ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione"
ITEM "9|IVA non detraibile per l'articolo 19"
OUTPUT 103
OUTPUT 130
END
STRING 130 75 52
BEGIN
PROMPT 22 3 ""
FLAGS "D"
END END
NUMBER 101 15 NUMBER 101 15
@ -92,7 +102,7 @@ BEGIN
ADD RUN cg0 -0 ADD RUN cg0 -0
MESSAGE DIRTY,109|DIRTY,209|DIRTY,309 MESSAGE DIRTY,109|DIRTY,209|DIRTY,309
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Conto inesistente nella riga IVA" WARNING "Conto assente"
END END
@ -115,7 +125,7 @@ BEGIN
ADD RUN cg0 -0 ADD RUN cg0 -0
CHECKTYPE NORMAL CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 101
WARNING "Sottoconto inesistente nella riga IVA" WARNING "Sottoconto assente"
END END
@ -135,7 +145,7 @@ BEGIN
ADD RUN cg0 -1 ADD RUN cg0 -1
MESSAGE COPY,109 MESSAGE COPY,109
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 101
WARNING "Cliente inesistente nella riga IVA" WARNING "Cliente assente"
END END
NUMBER 309 6 NUMBER 309 6
@ -154,7 +164,7 @@ BEGIN
ADD RUN cg0 -1 ADD RUN cg0 -1
MESSAGE COPY,109 MESSAGE COPY,109
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 101
WARNING "Fornitore inesistente nella riga IVA" WARNING "Fornitore assente"
END END
STRING 110 50 STRING 110 50

View File

@ -105,7 +105,7 @@ int TBill::compare(const TSortable& s) const
} }
// Certified 90% (uses __tmp_string && isam) // Certified 95%
const char* TBill::describe() const char* TBill::describe()
{ {
int err = NOERR; int err = NOERR;