Patch level : 12.0 982
Files correlati : ve0.exe ve1.exe ve5.exe ve6.exe ve0200b.msk Commento : Ristrutturato modulo li
This commit is contained in:
parent
8bdb4472ef
commit
d74548ab04
@ -27,7 +27,7 @@ bool TFatturazione_bolle_app::create()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TFatturazione_bolle_app::process(TProgress_monitor& iw, TElaborazione & eld,
|
bool TFatturazione_bolle_app::process(TProgress_monitor& iw, TElaborazione & eld,
|
||||||
TLista_documenti& din, const TDate& data_elab)
|
TLista_documenti& din, const TDate& data_elab, TLog_report & log)
|
||||||
{
|
{
|
||||||
// Crea documenti di output
|
// Crea documenti di output
|
||||||
TLista_documenti dout;
|
TLista_documenti dout;
|
||||||
@ -37,7 +37,8 @@ bool TFatturazione_bolle_app::process(TProgress_monitor& iw, TElaborazione & eld
|
|||||||
TString msg;
|
TString msg;
|
||||||
|
|
||||||
msg << din.items() << TR(" documenti raggruppati in ") << dout.items();
|
msg << din.items() << TR(" documenti raggruppati in ") << dout.items();
|
||||||
iw.set_text(msg); // Messaggio sul cliente
|
log.log(0, msg);
|
||||||
|
iw.set_text(msg); // Messaggio sul cliente
|
||||||
do_events(); // Attende visualizzazione
|
do_events(); // Attende visualizzazione
|
||||||
lint_batch(true);
|
lint_batch(true);
|
||||||
lint_reset_msg();
|
lint_reset_msg();
|
||||||
@ -57,411 +58,427 @@ bool TFatturazione_bolle_app::process(TProgress_monitor& iw, TElaborazione & eld
|
|||||||
const TString & str = lint_get_msg();
|
const TString & str = lint_get_msg();
|
||||||
|
|
||||||
if (str.full())
|
if (str.full())
|
||||||
ok = error_box(str);
|
{
|
||||||
|
TToken_string errmsg(str, '\n');
|
||||||
|
const int items = errmsg.items();
|
||||||
|
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
log.log(0, errmsg.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||||
{
|
{
|
||||||
TProgress_monitor iw(0, "Inizializzazione...\n ");
|
TLog_report log;
|
||||||
|
{
|
||||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
TProgress_monitor iw(0, "Inizializzazione...\n ");
|
||||||
const int anno = data_elab.year();
|
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||||
|
const int anno = data_elab.year();
|
||||||
const long dc = m.get_long(F_CODICE_CLIFO_DA);
|
|
||||||
const long ac = m.get_long(F_CODICE_CLIFO_A);
|
|
||||||
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
|
||||||
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
|
||||||
const TString16 dz(m.get(F_CODICE_ZONA_DA));
|
|
||||||
const TString16 az(m.get(F_CODICE_ZONA_A));
|
|
||||||
|
|
||||||
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
|
||||||
TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare
|
|
||||||
const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab;
|
|
||||||
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
|
||||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
|
||||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
|
||||||
|
|
||||||
TElaborazione& eld = *elab(m.get(F_CODICE_ELAB));
|
|
||||||
TToken_string tipidoc(24), statidoc(10);
|
|
||||||
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
|
||||||
|
|
||||||
TTipo_documento t(eld.tipo_iniziale(0));
|
|
||||||
char tipocf(t.tipocf());
|
|
||||||
TLista_cf clienti(tipocf);
|
|
||||||
|
|
||||||
const int tot_cli = clienti.leggi_doc(eld, dd, ad, dc, ac, da, aa, dz, az);
|
const long dc = m.get_long(F_CODICE_CLIFO_DA);
|
||||||
|
const long ac = m.get_long(F_CODICE_CLIFO_A);
|
||||||
TString msg(80);
|
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
||||||
iw.set_max(tot_cli);
|
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
||||||
for (int c = 0; c < tot_cli; c++)
|
const TString16 dz(m.get(F_CODICE_ZONA_DA));
|
||||||
{
|
const TString16 az(m.get(F_CODICE_ZONA_A));
|
||||||
const long codcli = clienti[c]; // Codice cliente in esame
|
|
||||||
msg = TR("Elaborazione documenti del cliente ");
|
|
||||||
msg << codcli << " ...";
|
|
||||||
iw.set_text(msg); // Messaggio sul cliente
|
|
||||||
do_events(); // Attende visualizzazione
|
|
||||||
|
|
||||||
TLista_documenti din; // Legge tutti i documenti di input
|
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
||||||
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare
|
||||||
if (din.items() > 0)
|
const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab;
|
||||||
{
|
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
||||||
if (m.get(F_ORDINAMENTO) == "Z")
|
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||||
din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC);
|
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||||
bool ok = process(iw, eld, din, data_elab);
|
|
||||||
if (!ok) // In caso di errore termina qui l'elaborazione.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!iw.add_status())
|
TElaborazione& eld = *elab(m.get(F_CODICE_ELAB));
|
||||||
break;
|
TToken_string tipidoc(24), statidoc(10);
|
||||||
}
|
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
||||||
delete &eld;
|
|
||||||
|
TTipo_documento t(eld.tipo_iniziale(0));
|
||||||
|
char tipocf(t.tipocf());
|
||||||
|
TLista_cf clienti(tipocf);
|
||||||
|
|
||||||
|
const int tot_cli = clienti.leggi_doc(eld, dd, ad, dc, ac, da, aa, dz, az);
|
||||||
|
|
||||||
|
TString msg(80);
|
||||||
|
iw.set_max(tot_cli);
|
||||||
|
for (int c = 0; c < tot_cli; c++)
|
||||||
|
{
|
||||||
|
const long codcli = clienti[c]; // Codice cliente in esame
|
||||||
|
|
||||||
|
msg = TR("Elaborazione documenti del cliente ");
|
||||||
|
msg << codcli << " ...";
|
||||||
|
log.log(0, msg);
|
||||||
|
iw.set_text(msg); // Messaggio sul cliente
|
||||||
|
do_events(); // Attende visualizzazione
|
||||||
|
|
||||||
|
TLista_documenti din; // Legge tutti i documenti di input
|
||||||
|
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||||
|
if (din.items() > 0)
|
||||||
|
{
|
||||||
|
if (m.get(F_ORDINAMENTO) == "Z")
|
||||||
|
din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC);
|
||||||
|
bool ok = process(iw, eld, din, data_elab, log);
|
||||||
|
if (!ok) // In caso di errore termina qui l'elaborazione.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!iw.add_status())
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
delete &eld;
|
||||||
|
}
|
||||||
|
log.print_or_preview();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
void TFatturazione_bolle_app::process_by_ragsoc(const TMask& m)
|
||||||
{
|
{
|
||||||
TProgress_monitor iw(0, "Inizializzazione...\n ");
|
TLog_report log;
|
||||||
|
{
|
||||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
TProgress_monitor iw(0, "Inizializzazione...\n ");
|
||||||
const int anno = data_elab.year();
|
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||||
|
const int anno = data_elab.year();
|
||||||
const TString dr = m.get(F_RAGSOC_CLIFO_DA);
|
|
||||||
const TString ar = m.get(F_RAGSOC_CLIFO_A);
|
|
||||||
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
|
||||||
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
|
||||||
const TString16 dz(m.get(F_CODICE_ZONA_DA));
|
|
||||||
const TString16 az(m.get(F_CODICE_ZONA_A));
|
|
||||||
|
|
||||||
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
|
||||||
TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare
|
|
||||||
const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab;
|
|
||||||
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
|
||||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
|
||||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
|
||||||
|
|
||||||
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
|
||||||
TElaborazione & eld = *e;
|
|
||||||
TToken_string tipidoc(24), statidoc(10);
|
|
||||||
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
|
||||||
|
|
||||||
TTipo_documento t(eld.tipo_iniziale(0));
|
|
||||||
char tipocf(t.tipocf());
|
|
||||||
TLista_cf clienti(tipocf);
|
|
||||||
const int tot_cli = clienti.leggi_ragsoc(dr, ar, da, aa, dz, az);
|
|
||||||
|
|
||||||
TString msg(80);
|
|
||||||
iw.set_max(tot_cli);
|
|
||||||
for (int c = 0; c < tot_cli; c++)
|
|
||||||
{
|
|
||||||
const long codcli = clienti[c]; // Codice cliente in esame
|
|
||||||
msg = TR("Elaborazione documenti del cliente ");
|
|
||||||
msg << codcli << " ...";
|
|
||||||
iw.set_text(msg); // Messaggio sul cliente
|
|
||||||
do_events(); // Attende visualizzazione
|
|
||||||
|
|
||||||
TLista_documenti din; // Legge tutti i documenti di input
|
|
||||||
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
|
||||||
if (din.items() > 0)
|
|
||||||
{
|
|
||||||
if (m.get(F_ORDINAMENTO) == "Z")
|
|
||||||
din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC);
|
|
||||||
bool ok = process(iw, eld, din, data_elab);
|
|
||||||
if (!ok) // In caso di errore termina qui l'elaborazione.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!iw.add_status())
|
const TString dr = m.get(F_RAGSOC_CLIFO_DA);
|
||||||
break;
|
const TString ar = m.get(F_RAGSOC_CLIFO_A);
|
||||||
}
|
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
||||||
delete e;
|
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
||||||
|
const TString16 dz(m.get(F_CODICE_ZONA_DA));
|
||||||
|
const TString16 az(m.get(F_CODICE_ZONA_A));
|
||||||
|
|
||||||
|
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
||||||
|
TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare
|
||||||
|
const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab;
|
||||||
|
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
||||||
|
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||||
|
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||||
|
|
||||||
|
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
||||||
|
TElaborazione & eld = *e;
|
||||||
|
TToken_string tipidoc(24), statidoc(10);
|
||||||
|
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
||||||
|
|
||||||
|
TTipo_documento t(eld.tipo_iniziale(0));
|
||||||
|
char tipocf(t.tipocf());
|
||||||
|
TLista_cf clienti(tipocf);
|
||||||
|
const int tot_cli = clienti.leggi_ragsoc(dr, ar, da, aa, dz, az);
|
||||||
|
|
||||||
|
TString msg(80);
|
||||||
|
iw.set_max(tot_cli);
|
||||||
|
for (int c = 0; c < tot_cli; c++)
|
||||||
|
{
|
||||||
|
const long codcli = clienti[c]; // Codice cliente in esame
|
||||||
|
msg = TR("Elaborazione documenti del cliente ");
|
||||||
|
msg << codcli << " ...";
|
||||||
|
log.log(0, msg);
|
||||||
|
iw.set_text(msg); // Messaggio sul cliente
|
||||||
|
do_events(); // Attende visualizzazione
|
||||||
|
|
||||||
|
TLista_documenti din; // Legge tutti i documenti di input
|
||||||
|
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||||
|
if (din.items() > 0)
|
||||||
|
{
|
||||||
|
if (m.get(F_ORDINAMENTO) == "Z")
|
||||||
|
din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC);
|
||||||
|
bool ok = process(iw, eld, din, data_elab, log);
|
||||||
|
if (!ok) // In caso di errore termina qui l'elaborazione.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!iw.add_status())
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
delete e;
|
||||||
|
}
|
||||||
|
log.print_or_preview();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||||
{
|
{
|
||||||
TProgress_monitor iw(0, TR("Inizializzazione...\n "));
|
TLog_report log;
|
||||||
|
{
|
||||||
|
TProgress_monitor iw(0, TR("Inizializzazione...\n "));
|
||||||
|
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||||
|
const int anno = data_elab.year();
|
||||||
|
long dc = m.get_long(F_CODICE_CLIFO_DA);
|
||||||
|
long ac = m.get_long(F_CODICE_CLIFO_A);
|
||||||
|
|
||||||
|
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
||||||
|
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
||||||
|
const TString8 dz(m.get(F_CODICE_ZONA_DA));
|
||||||
|
const TString8 az(m.get(F_CODICE_ZONA_A));
|
||||||
|
|
||||||
|
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
||||||
|
TDate ad = m.get_date(F_DATA_DOCUMENTO_A);
|
||||||
|
if (!ad.ok()) ad = data_elab;
|
||||||
|
|
||||||
|
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
||||||
|
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||||
|
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||||
|
|
||||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
||||||
const int anno = data_elab.year();
|
TElaborazione & eld = *e;
|
||||||
long dc = m.get_long(F_CODICE_CLIFO_DA);
|
TToken_string tipidoc(24), statidoc(10);
|
||||||
long ac = m.get_long(F_CODICE_CLIFO_A);
|
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
||||||
|
|
||||||
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
|
||||||
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
|
||||||
const TString8 dz(m.get(F_CODICE_ZONA_DA));
|
|
||||||
const TString8 az(m.get(F_CODICE_ZONA_A));
|
|
||||||
|
|
||||||
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
|
||||||
TDate ad = m.get_date(F_DATA_DOCUMENTO_A);
|
|
||||||
if (!ad.ok()) ad = data_elab;
|
|
||||||
|
|
||||||
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
|
||||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
|
||||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
|
||||||
|
|
||||||
TElaborazione * e = elab(m.get(F_CODICE_ELAB));
|
TTipo_documento t(eld.tipo_iniziale(0));
|
||||||
TElaborazione & eld = *e;
|
char tipocf(t.tipocf());
|
||||||
TToken_string tipidoc(24), statidoc(10);
|
TLista_cf clienti(tipocf);
|
||||||
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
const int tot_cli = clienti.leggi(dc, ac);
|
||||||
|
TLista_documenti din, dout; // Legge tutti i documenti di input
|
||||||
|
TString msg(80);
|
||||||
|
|
||||||
TTipo_documento t(eld.tipo_iniziale(0));
|
iw.set_max(tot_cli);
|
||||||
char tipocf(t.tipocf());
|
for (int c = 0; c < tot_cli; c++)
|
||||||
TLista_cf clienti(tipocf);
|
{
|
||||||
const int tot_cli = clienti.leggi(dc, ac);
|
const long codcli = clienti[c]; // Codice cliente in esame
|
||||||
TLista_documenti din, dout; // Legge tutti i documenti di input
|
msg = TR("Elaborazione documenti del cliente");
|
||||||
|
msg << ' ' << codcli << "...";
|
||||||
|
log.log(0, msg);
|
||||||
|
iw.set_text(msg); // Messaggio sul cliente
|
||||||
|
do_events(); // Attende visualizzazione
|
||||||
|
|
||||||
TString msg(80);
|
TLista_documenti list;
|
||||||
iw.set_max(tot_cli);
|
list.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||||
for (int c = 0; c < tot_cli; c++)
|
|
||||||
{
|
|
||||||
const long codcli = clienti[c]; // Codice cliente in esame
|
|
||||||
msg = TR("Elaborazione documenti del cliente");
|
|
||||||
msg << ' ' << codcli << "...";
|
|
||||||
iw.set_text(msg); // Messaggio sul cliente
|
|
||||||
do_events(); // Attende visualizzazione
|
|
||||||
|
|
||||||
TLista_documenti list;
|
for (int i = list.items() - 1; i >= 0; i--)
|
||||||
list.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
{
|
||||||
|
const TDocumento& doc = list[i];
|
||||||
for (int i = list.items()-1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
const TDocumento& doc = list[i];
|
|
||||||
|
|
||||||
bool to_del = FALSE;
|
|
||||||
const int agente = doc.get_int(DOC_CODAG);
|
|
||||||
if (agente > 0)
|
|
||||||
{
|
|
||||||
if (da > 0 && agente < da) to_del = true;
|
|
||||||
if (aa > 0 && agente > aa) to_del = true;
|
|
||||||
}
|
|
||||||
const TString8 zona = doc.get(DOC_ZONA);
|
|
||||||
if (zona.full())
|
|
||||||
{
|
|
||||||
if (dz.not_empty() && zona < dz) to_del = true;
|
|
||||||
if (az.not_empty() && zona > az) to_del = true;
|
|
||||||
}
|
|
||||||
if (to_del)
|
|
||||||
list.destroy(i);
|
|
||||||
}
|
|
||||||
const int items = list.items();
|
|
||||||
for (int j = 0; j < items; j++)
|
|
||||||
din.add(list[j]);
|
|
||||||
|
|
||||||
if (!iw.add_status())
|
bool to_del = FALSE;
|
||||||
break;
|
const int agente = doc.get_int(DOC_CODAG);
|
||||||
}
|
if (agente > 0)
|
||||||
if (din.items() > 0 && !iw.is_cancelled())
|
{
|
||||||
{
|
if (da > 0 && agente < da) to_del = true;
|
||||||
if (m.get(F_ORDINAMENTO) == "Z")
|
if (aa > 0 && agente > aa) to_del = true;
|
||||||
din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC);
|
}
|
||||||
process(iw, eld, din, data_elab);
|
const TString8 zona = doc.get(DOC_ZONA);
|
||||||
}
|
if (zona.full())
|
||||||
delete e;
|
{
|
||||||
|
if (dz.not_empty() && zona < dz) to_del = true;
|
||||||
|
if (az.not_empty() && zona > az) to_del = true;
|
||||||
|
}
|
||||||
|
if (to_del)
|
||||||
|
list.destroy(i);
|
||||||
|
}
|
||||||
|
const int items = list.items();
|
||||||
|
for (int j = 0; j < items; j++)
|
||||||
|
din.add(list[j]);
|
||||||
|
|
||||||
|
if (!iw.add_status())
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (din.items() > 0 && !iw.is_cancelled())
|
||||||
|
{
|
||||||
|
if (m.get(F_ORDINAMENTO) == "Z")
|
||||||
|
din.sort(DOC_ZONA "|" DOC_DATADOC "|" DOC_NDOC);
|
||||||
|
process(iw, eld, din, data_elab, log);
|
||||||
|
}
|
||||||
|
delete e;
|
||||||
|
}
|
||||||
|
log.print_or_preview();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFatturazione_bolle_app::process_by_fatt(const TMask& m)
|
void TFatturazione_bolle_app::process_by_fatt(const TMask& m)
|
||||||
{
|
{
|
||||||
TWait_cursor hourglass;
|
TLog_report log;
|
||||||
|
{
|
||||||
|
TWait_cursor hourglass;
|
||||||
|
TElaborazione* e = elab(m.get(F_CODICE_ELAB));
|
||||||
|
TElaborazione& eld = *e;
|
||||||
|
TToken_string tipidoc(24), statidoc(10);
|
||||||
|
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
||||||
|
|
||||||
TElaborazione* e = elab(m.get(F_CODICE_ELAB));
|
const TTipo_documento t(eld.tipo_iniziale(0));
|
||||||
TElaborazione& eld = *e;
|
const char tipocffatt = t.tipocf() == 'C' ? 'F' : 'C';
|
||||||
TToken_string tipidoc(24), statidoc(10);
|
|
||||||
eld.tipi_stati_iniziali(tipidoc, statidoc);
|
|
||||||
|
|
||||||
const TTipo_documento t(eld.tipo_iniziale(0));
|
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||||
const char tipocffatt = t.tipocf() == 'C' ? 'F' : 'C';
|
const int anno = data_elab.year();
|
||||||
|
long dc = m.get_long(F_CODICE_CLIFO_DA);
|
||||||
|
long ac = m.get_long(F_CODICE_CLIFO_A);
|
||||||
|
|
||||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
||||||
const int anno = data_elab.year();
|
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
||||||
long dc = m.get_long(F_CODICE_CLIFO_DA);
|
const TString& dz = m.get(F_CODICE_ZONA_DA);
|
||||||
long ac = m.get_long(F_CODICE_CLIFO_A);
|
const TString& az = m.get(F_CODICE_ZONA_A);
|
||||||
|
|
||||||
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
|
||||||
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
|
||||||
const TString& dz = m.get(F_CODICE_ZONA_DA);
|
|
||||||
const TString& az = m.get(F_CODICE_ZONA_A);
|
|
||||||
|
|
||||||
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
|
||||||
const long dn = codnum.full() ? m.get_long(F_NUMERO_DOCUMENTO_DA) : 0;
|
|
||||||
const long an = codnum.full() ? m.get_long(F_NUMERO_DOCUMENTO_A) : 0;
|
|
||||||
|
|
||||||
TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
||||||
if (!dd.ok())
|
const long dn = codnum.full() ? m.get_long(F_NUMERO_DOCUMENTO_DA) : 0;
|
||||||
dd = TDate(1,1,anno);
|
const long an = codnum.full() ? m.get_long(F_NUMERO_DOCUMENTO_A) : 0;
|
||||||
TDate ad = m.get_date(F_DATA_DOCUMENTO_A);
|
|
||||||
if (!ad.ok())
|
|
||||||
ad = data_elab;
|
|
||||||
|
|
||||||
const int nkey = (dn > 0 || an > 0) ? 1 : 3;
|
TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
||||||
TString query;
|
if (!dd.ok())
|
||||||
query << "USE DOC KEY " << nkey << " SELECT (TIPOCFFATT=\"" << tipocffatt << "\")";
|
dd = TDate(1, 1, anno);
|
||||||
|
TDate ad = m.get_date(F_DATA_DOCUMENTO_A);
|
||||||
|
if (!ad.ok())
|
||||||
|
ad = data_elab;
|
||||||
|
|
||||||
if (dc > 0 || ac > 0)
|
const int nkey = (dn > 0 || an > 0) ? 1 : 3;
|
||||||
query << "&&(BETWEEN(CODCFFATT," << dc << ',' << ac << "))";
|
TString query;
|
||||||
|
query << "USE DOC KEY " << nkey << " SELECT (TIPOCFFATT=\"" << tipocffatt << "\")";
|
||||||
query << "&&(BETWEEN(DATADOC," << dd.date2ansi() << ',' << ad.date2ansi() << "))";
|
|
||||||
|
|
||||||
if (da > 0 || aa > 0)
|
if (dc > 0 || ac > 0)
|
||||||
query << "&&(BETWEEN(CODAG," << da << "," << aa << "))";
|
query << "&&(BETWEEN(CODCFFATT," << dc << ',' << ac << "))";
|
||||||
|
|
||||||
if (dz.full() || az.full())
|
|
||||||
query << "&&(BETWEEN(ZONA,\"" << dz << "\",\"" << az << "\"))";
|
|
||||||
|
|
||||||
if (nkey == 3 && codnum.full())
|
query << "&&(BETWEEN(DATADOC," << dd.date2ansi() << ',' << ad.date2ansi() << "))";
|
||||||
query << "&&(CODNUM=\"" << codnum << "\")";
|
|
||||||
|
|
||||||
query << "\nBY " << DOC_CODCFFATT;
|
if (da > 0 || aa > 0)
|
||||||
if (eld.usa_doc_rif())
|
query << "&&(BETWEEN(CODAG," << da << "," << aa << "))";
|
||||||
query << ' ' << DOC_DATADOCRIF;
|
|
||||||
|
|
||||||
if (nkey == 1)
|
if (dz.full() || az.full())
|
||||||
{
|
query << "&&(BETWEEN(ZONA,\"" << dz << "\",\"" << az << "\"))";
|
||||||
query << "\nFROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << dn;
|
|
||||||
query << "\nTO PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << an;
|
if (nkey == 3 && codnum.full())
|
||||||
}
|
query << "&&(CODNUM=\"" << codnum << "\")";
|
||||||
else
|
|
||||||
{
|
query << "\nBY " << DOC_CODCFFATT;
|
||||||
query << "\nFROM DATADOC=" << dd.date2ansi();
|
if (eld.usa_doc_rif())
|
||||||
query << "\nTO DATADOC=" << ad.date2ansi();
|
query << ' ' << DOC_DATADOCRIF;
|
||||||
}
|
|
||||||
|
if (nkey == 1)
|
||||||
|
{
|
||||||
|
query << "\nFROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << dn;
|
||||||
|
query << "\nTO PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << an;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query << "\nFROM DATADOC=" << dd.date2ansi();
|
||||||
|
query << "\nTO DATADOC=" << ad.date2ansi();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TISAM_recordset docs(query);
|
TISAM_recordset docs(query);
|
||||||
const TRectype& head = docs.cursor()->curr();
|
const TRectype& head = docs.cursor()->curr();
|
||||||
|
TProgress_monitor iw(docs.items(), TR("Elaborazione documenti da fatturare"), true);
|
||||||
|
long last_clifo = 0; // Ultimo cliente elaborato
|
||||||
|
TLista_documenti din; // Lista dei documenti dell'ultimo cliente
|
||||||
|
|
||||||
TProgress_monitor iw(docs.items(), TR("Elaborazione documenti da fatturare"), true);
|
for (bool ok = docs.move_first(); ok; ok = docs.move_next())
|
||||||
|
{
|
||||||
|
const long clifo = docs.get(DOC_CODCFFATT).as_int();
|
||||||
|
if (clifo > 0 && clifo >= dc && (clifo <= ac || ac <= 0)) // Cliente da fatturare non nullo e valido
|
||||||
|
{
|
||||||
|
if (clifo != last_clifo) // Cambio cliente
|
||||||
|
{
|
||||||
|
if (din.items() > 0) // Ci sono documenti da elaborare?
|
||||||
|
{
|
||||||
|
process(iw, eld, din, data_elab, log); // Elaborali ...
|
||||||
|
din.destroy(-1); // ... e poi buttali
|
||||||
|
}
|
||||||
|
last_clifo = clifo;
|
||||||
|
}
|
||||||
|
|
||||||
long last_clifo = 0; // Ultimo cliente elaborato
|
if (!iw.add_status(1))
|
||||||
TLista_documenti din; // Lista dei documenti dell'ultimo cliente
|
break;
|
||||||
|
|
||||||
|
|
||||||
for (bool ok = docs.move_first(); ok; ok = docs.move_next())
|
// Controlla se il documento e' in uno stato valido per l'elaborazione
|
||||||
{
|
const TString4 tipodoc = head.get(DOC_TIPODOC);
|
||||||
const long clifo = docs.get(DOC_CODCFFATT).as_int();
|
const char statodoc = head.get_char(DOC_STATO);
|
||||||
if (clifo > 0 && clifo >= dc && (clifo <= ac || ac <= 0)) // Cliente da fatturare non nullo e valido
|
for (int i = tipidoc.items() - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (clifo != last_clifo) // Cambio cliente
|
if (tipodoc == tipidoc.get(i) && statodoc == statidoc.get_char(i))
|
||||||
{
|
{
|
||||||
if (din.items() > 0) // Ci sono documenti da elaborare?
|
din.add(head);
|
||||||
{
|
break;
|
||||||
process(iw, eld, din, data_elab); // Elaborali ...
|
}
|
||||||
din.destroy(-1); // ... e poi buttali
|
}
|
||||||
}
|
}
|
||||||
last_clifo = clifo;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!iw.add_status(1))
|
// Termina l'elaborazione dei documenti dell'ultimo cliente
|
||||||
break;
|
if (din.items() > 0 && !iw.is_cancelled())
|
||||||
|
process(iw, eld, din, data_elab, log);
|
||||||
// Controlla se il documento e' in uno stato valido per l'elaborazione
|
safe_delete(e);
|
||||||
const TString4 tipodoc = head.get(DOC_TIPODOC);
|
}
|
||||||
const char statodoc = head.get_char(DOC_STATO);
|
log.print_or_preview();
|
||||||
for (int i = tipidoc.items()-1; i>=0; i--)
|
|
||||||
{
|
|
||||||
if (tipodoc == tipidoc.get(i) && statodoc == statidoc.get_char(i))
|
|
||||||
{
|
|
||||||
din.add(head);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Termina l'elaborazione dei documenti dell'ultimo cliente
|
|
||||||
if (din.items() > 0 && !iw.is_cancelled())
|
|
||||||
process(iw, eld, din, data_elab);
|
|
||||||
|
|
||||||
delete e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Effettuo un test per i clienti che hanno un plafond attivo, se trovo delle bolle che fuoriescono chiedo se continuare
|
// Effettuo un test per i clienti che hanno un plafond attivo, se trovo delle bolle che fuoriescono chiedo se continuare
|
||||||
bool TFatturazione_bolle_app::test_dicint(const TMask& m)
|
bool TFatturazione_bolle_app::test_dicint(const TMask& m)
|
||||||
{
|
{
|
||||||
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
bool ok = true;
|
||||||
const int anno = data_elab.year();
|
|
||||||
|
|
||||||
const long dc = m.get_long(F_CODICE_CLIFO_DA);
|
|
||||||
const long ac = m.get_long(F_CODICE_CLIFO_A);
|
|
||||||
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
|
||||||
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
|
||||||
const TString16 dz(m.get(F_CODICE_ZONA_DA));
|
|
||||||
const TString16 az(m.get(F_CODICE_ZONA_A));
|
|
||||||
|
|
||||||
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
|
||||||
TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare
|
|
||||||
const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab;
|
|
||||||
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
|
||||||
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
|
||||||
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
|
||||||
|
|
||||||
TElaborazione * eld = elab(m.get(F_CODICE_ELAB));
|
|
||||||
TToken_string tipidoc(24), statidoc(10);
|
|
||||||
eld->tipi_stati_iniziali(tipidoc, statidoc);
|
|
||||||
|
|
||||||
TTipo_documento t(eld->tipo_iniziale(0));
|
|
||||||
char tipocf(t.tipocf());
|
|
||||||
TLista_cf clienti(tipocf);
|
|
||||||
TString msg(80);
|
|
||||||
const int tot_cli = clienti.leggi_doc(*eld, dd, ad, dc, ac, da, aa, dz, az);
|
|
||||||
TLog_report lerr(TR("Errori controllo plafond"));
|
|
||||||
bool err = false;
|
|
||||||
|
|
||||||
lerr.log(0,"\n");
|
if (has_module(LIAUT, CHK_DONGLE))
|
||||||
for (int c = 0; c < tot_cli; c++)
|
{
|
||||||
{
|
const TDate data_elab = m.get_date(F_DATA_ELAB);
|
||||||
const long codcli = clienti[c]; // Codice cliente in esame
|
const int anno = data_elab.year();
|
||||||
TLi_manager cli('C', codcli, data_elab.year()); // Inizializzo l'oggetto per la gestione del plafond
|
|
||||||
|
|
||||||
if (cli.has_valid_plafond())
|
const long dc = m.get_long(F_CODICE_CLIFO_DA);
|
||||||
|
const long ac = m.get_long(F_CODICE_CLIFO_A);
|
||||||
|
const int da = m.get_int(F_CODICE_AGENTE_DA);
|
||||||
|
const int aa = m.get_int(F_CODICE_AGENTE_A);
|
||||||
|
const TString16 dz(m.get(F_CODICE_ZONA_DA));
|
||||||
|
const TString16 az(m.get(F_CODICE_ZONA_A));
|
||||||
|
|
||||||
|
const TDate dd = m.get_date(F_DATA_DOCUMENTO_DA);
|
||||||
|
TString st_da = m.get(F_DATA_DOCUMENTO_A); // qui verificare
|
||||||
|
const TDate ad = st_da.not_empty() ? (TDate)(const char*)st_da : data_elab;
|
||||||
|
const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
|
||||||
|
const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
|
||||||
|
const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
|
||||||
|
|
||||||
|
TElaborazione * eld = elab(m.get(F_CODICE_ELAB));
|
||||||
|
TToken_string tipidoc(24), statidoc(10);
|
||||||
|
eld->tipi_stati_iniziali(tipidoc, statidoc);
|
||||||
|
|
||||||
|
TTipo_documento t(eld->tipo_iniziale(0));
|
||||||
|
char tipocf(t.tipocf());
|
||||||
|
TLista_cf clienti(tipocf);
|
||||||
|
const int tot_cli = clienti.leggi_doc(*eld, dd, ad, dc, ac, da, aa, dz, az);
|
||||||
|
TLog_report lerr(TR("Errori controllo plafond"));
|
||||||
|
|
||||||
|
lerr.log(0, "\n");
|
||||||
|
for (int c = 0; c < tot_cli; c++)
|
||||||
{
|
{
|
||||||
bool ok = true;
|
const long codcli = clienti[c]; // Codice cliente in esame
|
||||||
real plafond, res_plafond, utilizzo;
|
TLi_manager cli('C', codcli, data_elab.year()); // Inizializzo l'oggetto per la gestione del plafond
|
||||||
TLista_documenti din; // Legge tutti i documenti di input
|
|
||||||
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
|
||||||
|
|
||||||
lint_batch(true);
|
if (cli.has_valid_plafond())
|
||||||
lint_reset_msg();
|
|
||||||
plafond = cli.get_plafond();
|
|
||||||
res_plafond = cli.get_residuo();
|
|
||||||
for (int i = 0; i < din.items(); i++)
|
|
||||||
{
|
{
|
||||||
const real importo_utilizzato = din[i].importo_plafond();
|
real plafond, res_plafond, utilizzo;
|
||||||
TToken_string plafs(din[i].get(DOC_PLAFOND), ',');
|
TLista_documenti din; // Legge tutti i documenti di input
|
||||||
const TDate datadoc = din[i].get_date(DOC_DATADOC);
|
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||||
|
bool cli_ok = true;
|
||||||
|
|
||||||
|
lint_batch(true);
|
||||||
|
lint_reset_msg();
|
||||||
|
plafond = cli.get_plafond();
|
||||||
|
res_plafond = cli.get_residuo();
|
||||||
|
for (int i = 0; i < din.items(); i++)
|
||||||
|
{
|
||||||
|
const real importo_utilizzato = din[i].importo_plafond();
|
||||||
|
TToken_string plafs(din[i].get(DOC_PLAFOND), ',');
|
||||||
|
const TDate datadoc = din[i].get_date(DOC_DATADOC);
|
||||||
|
|
||||||
utilizzo += importo_utilizzato;
|
utilizzo += importo_utilizzato;
|
||||||
ok = cli.utilizza_plafond(din[i], plafs, importo_utilizzato);
|
cli_ok = cli.utilizza_plafond(din[i], plafs, importo_utilizzato);
|
||||||
}
|
|
||||||
cli.set_dirty(false);
|
}
|
||||||
lint_batch(false);
|
cli.set_dirty(false);
|
||||||
if (!ok || utilizzo > res_plafond)
|
lint_batch(false);
|
||||||
{
|
if (!cli_ok || utilizzo > res_plafond)
|
||||||
bool plur = din.items() > 1;
|
{
|
||||||
TString err;
|
bool plur = din.items() > 1;
|
||||||
const TString & str = lint_get_msg();
|
TString msg;
|
||||||
|
const TString & str = lint_get_msg();
|
||||||
|
|
||||||
msg << TR("Errore durante la generazione del plafond:\n");
|
msg << TR("Errore durante la generazione del plafond:") << '\n';
|
||||||
msg << (plur ? TR("I documenti da elaborare superano") : TR("Il documento da elaborare supera"));
|
msg << (plur ? TR("I documenti da elaborare superano") : TR("Il documento da elaborare supera"));
|
||||||
msg << TR(" il plafond per questo cliente.") << '\n';
|
msg << TR(" il plafond del cliente.") << ' ' << codcli << '\n';
|
||||||
msg << TR("Plafond rimanente: ") << res_plafond << '\n';
|
msg << TR("Plafond rimanente: ") << res_plafond << '\n';
|
||||||
msg << TR("Totale plafond in fattura : ") << utilizzo << '\n';
|
msg << TR("Totale plafond in fattura : ") << utilizzo << '\n';
|
||||||
msg << (plur ? TR("Le fatture non sono state create.") : TR("La fattura non e' stata creata."));
|
msg << (plur ? TR("Le fatture non sono state create.") : TR("La fattura non e' stata creata.")) << '\n';
|
||||||
if (str.full())
|
lerr.log(0, msg);
|
||||||
msg << '\n' << str;
|
ok = false;
|
||||||
lerr.log(0, msg);
|
}
|
||||||
}
|
}
|
||||||
err &= !ok;
|
|
||||||
}
|
}
|
||||||
}
|
safe_delete(eld);
|
||||||
safe_delete(eld);
|
if (!ok)
|
||||||
if(err)
|
lerr.print_or_preview();
|
||||||
{
|
}
|
||||||
lerr.print_or_preview();
|
return ok;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
// Effettuo un test per i clienti che hanno un plafond attivo, se trovo delle bolle che fuoriescono chiedo se continuare
|
// Effettuo un test per i clienti che hanno un plafond attivo, se trovo delle bolle che fuoriescono chiedo se continuare
|
||||||
bool TFatturazione_bolle_app::test_CONAI(const TMask& m)
|
bool TFatturazione_bolle_app::test_CONAI(const TMask& m)
|
||||||
@ -581,33 +598,30 @@ void TFatturazione_bolle_app::main_loop()
|
|||||||
|
|
||||||
while (m.run() == K_ENTER)
|
while (m.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
if(has_module(LIAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "ve", "USELETTERE") && !test_dicint(m)) // Controllo se ho documenti al di fuori del plafond
|
if (test_dicint(m) && test_CONAI(m))
|
||||||
{
|
{
|
||||||
continue;
|
const TString& select_from = m.get(F_SELEZIONE);
|
||||||
}
|
const TString& orderby = m.get(F_ORDINAMENTO);
|
||||||
if (!test_CONAI(m))
|
|
||||||
continue;
|
if (select_from != _default_selection)
|
||||||
const TString& select_from = m.get(F_SELEZIONE);
|
ini_set_string(CONFIG_DITTA, "ve", "FATBOLSEL", _default_selection = select_from);
|
||||||
if (select_from != _default_selection)
|
if (orderby == "R")
|
||||||
ini_set_string(CONFIG_DITTA, "ve", "FATBOLSEL", _default_selection = select_from);
|
process_by_ragsoc(m);
|
||||||
|
else
|
||||||
const TString& orderby = m.get(F_ORDINAMENTO);
|
{
|
||||||
if (orderby == "R")
|
if (clifo_da_fatt(m))
|
||||||
process_by_ragsoc(m);
|
{
|
||||||
else
|
process_by_fatt(m);
|
||||||
{
|
}
|
||||||
if (clifo_da_fatt(m))
|
else
|
||||||
{
|
{
|
||||||
process_by_fatt(m);
|
if (select_from == "D")
|
||||||
}
|
process_by_doc(m);
|
||||||
else
|
else
|
||||||
{
|
process_by_cli(m);
|
||||||
if (select_from == "D")
|
}
|
||||||
process_by_doc(m);
|
}
|
||||||
else
|
}
|
||||||
process_by_cli(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ protected:
|
|||||||
virtual TFatturazione_bolle * elab(const TString & cod) const { return new TFatturazione_bolle(cod);}
|
virtual TFatturazione_bolle * elab(const TString & cod) const { return new TFatturazione_bolle(cod);}
|
||||||
|
|
||||||
bool clifo_da_fatt(const TMask& m) const;
|
bool clifo_da_fatt(const TMask& m) const;
|
||||||
bool process(TProgress_monitor& iw, TElaborazione & eld, TLista_documenti& din, const TDate& data_elab);
|
bool process(TProgress_monitor& iw, TElaborazione & eld, TLista_documenti& din, const TDate& data_elab, TLog_report & log);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void process_by_cli(const TMask& m);
|
void process_by_cli(const TMask& m);
|
||||||
|
@ -936,9 +936,8 @@ void TDocumento::set_riga_sconto()
|
|||||||
|
|
||||||
void TDocumento::update_esenzione()
|
void TDocumento::update_esenzione()
|
||||||
{
|
{
|
||||||
if (!clifor().use_lettere())
|
if (clifor().use_lettere())
|
||||||
{
|
{
|
||||||
bool to_update = false;
|
|
||||||
const TString4 codiva = codesiva();
|
const TString4 codiva = codesiva();
|
||||||
|
|
||||||
for (int i = physical_rows(); i > 0; i--)
|
for (int i = physical_rows(); i > 0; i--)
|
||||||
@ -946,7 +945,7 @@ void TDocumento::update_esenzione()
|
|||||||
TRiga_documento & rdoc = row(i);
|
TRiga_documento & rdoc = row(i);
|
||||||
const TString& cod = rdoc.get(RDOC_CODIVA);
|
const TString& cod = rdoc.get(RDOC_CODIVA);
|
||||||
|
|
||||||
if (cod.blank())
|
if (!rdoc.is_descrizione() && cod.blank())
|
||||||
{
|
{
|
||||||
if (codiva.full())
|
if (codiva.full())
|
||||||
rdoc.put(RDOC_CODIVA, codiva);
|
rdoc.put(RDOC_CODIVA, codiva);
|
||||||
@ -1541,16 +1540,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
|||||||
if (!dcons.ok())
|
if (!dcons.ok())
|
||||||
r.put(RDOC_DATACONS, datacons);
|
r.put(RDOC_DATACONS, datacons);
|
||||||
}
|
}
|
||||||
|
if (r.get(RDOC_CODCMS).blank()) r.put(RDOC_CODCMS, codcms);
|
||||||
/* dal 27-9-2013 considero singolarmente i campi di analitica replicati sulle righe
|
|
||||||
if (r.get(RDOC_CODCMS).blank() && r.get(RDOC_FASCMS).blank() && r.get(RDOC_CODCOSTO).blank())
|
|
||||||
{
|
|
||||||
r.put(RDOC_CODCMS, codcms);
|
|
||||||
r.put(RDOC_FASCMS, fascms);
|
|
||||||
r.put(RDOC_CODCOSTO, codcos);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (r.get(RDOC_CODCMS).blank()) r.put(RDOC_CODCMS, codcms);
|
|
||||||
if (r.get(RDOC_FASCMS).blank()) r.put(RDOC_FASCMS, fascms);
|
if (r.get(RDOC_FASCMS).blank()) r.put(RDOC_FASCMS, fascms);
|
||||||
if (r.get(RDOC_CODCOSTO).blank()) r.put(RDOC_CODCOSTO, codcos);
|
if (r.get(RDOC_CODCOSTO).blank()) r.put(RDOC_CODCOSTO, codcos);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user