Correzioni per Aerea
git-svn-id: svn://10.65.10.50/branches/R_10_00@22883 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
1b64d55829
commit
f6f643fa96
@ -752,7 +752,7 @@ END
|
|||||||
|
|
||||||
STRING F_E_PIVA_HARDY 12
|
STRING F_E_PIVA_HARDY 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Partita IVA Hardy "
|
PROMPT 2 4 "Partita IVA Hardy/Aerea "
|
||||||
HELP "Partita IVA Hardy"
|
HELP "Partita IVA Hardy"
|
||||||
FIELD Esselunga_PIvaHardy
|
FIELD Esselunga_PIvaHardy
|
||||||
END
|
END
|
||||||
@ -766,9 +766,10 @@ END
|
|||||||
|
|
||||||
NUMBER F_E_COD_HARDY 6
|
NUMBER F_E_COD_HARDY 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Cod. fornitore Hardy "
|
PROMPT 2 6 "Cod. fornitore Hardy/Aerea"
|
||||||
HELP "Codice fornitore Hardy presso Esselunga"
|
HELP "Codice fornitore Hardy presso Esselunga"
|
||||||
FIELD Esselunga_CodHardy
|
FIELD Esselunga_CodHardy
|
||||||
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_E_COD_ESSELUNGA 6
|
NUMBER F_E_COD_ESSELUNGA 6
|
||||||
|
185
ha/ha0500.cpp
185
ha/ha0500.cpp
@ -4,6 +4,7 @@
|
|||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
#include <recset.h>
|
#include <recset.h>
|
||||||
#include <reputils.h>
|
#include <reputils.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
#include <doc.h>
|
#include <doc.h>
|
||||||
#include <rdoc.h>
|
#include <rdoc.h>
|
||||||
@ -32,22 +33,77 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case F_ADATA:
|
case F_DADATA:
|
||||||
if (e == fe_close || e == fe_modify)
|
if ((e == fe_close || e == fe_modify) && !o.empty())
|
||||||
{
|
{
|
||||||
//se la data iniziale è piena -> l'anno deve essere lo stesso nelle 2 date;
|
//se la data iniziale è piena -> l'anno deve essere lo stesso nelle 2 date;
|
||||||
//se invece è vuota -> la data iniziale viene presa come la data iniziale dell'esercizio della data finale...
|
//se invece è vuota -> la data iniziale viene presa come la data iniziale dell'esercizio della data finale...
|
||||||
//..ma questo qui non serve e viene rinviato alla query principale del recordset
|
//..ma questo qui non serve e viene rinviato alla query principale del recordset
|
||||||
const TDate adata = get_date(F_ADATA);
|
TDate da_data = o.get();
|
||||||
TEsercizi_contabili esc;
|
const TDate a_data = get_date(F_ADATA);
|
||||||
const int adata_esc = esc.date2esc(adata);
|
if (da_data.ok())
|
||||||
|
|
||||||
TDate dadata = o.get();
|
|
||||||
if (dadata.ok())
|
|
||||||
{
|
{
|
||||||
const int dadata_esc = esc.date2esc(dadata);
|
bool changed = false;
|
||||||
if (adata_esc != dadata_esc)
|
if (da_data.day() != 1)
|
||||||
return error_box(TR("Le date devono appartenere allo stesso esercizio!"));
|
{
|
||||||
|
da_data.set_day(1);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
const int tc = get_int(F_TIPOCONTR);
|
||||||
|
if (tc != 8) // non è nolo
|
||||||
|
{
|
||||||
|
const int m = da_data.month();
|
||||||
|
const int r = m % 3;
|
||||||
|
if (r != 1)
|
||||||
|
{
|
||||||
|
da_data.set_month(m - (r == 0 ? 2 : (r-1)));
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changed)
|
||||||
|
o.set(da_data.string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_ADATA:
|
||||||
|
if ((e == fe_close || e == fe_modify) && !o.empty())
|
||||||
|
{
|
||||||
|
TDate d = o.get();
|
||||||
|
if (d.ok())
|
||||||
|
{
|
||||||
|
bool changed = false;
|
||||||
|
const int tc = get_int(F_TIPOCONTR);
|
||||||
|
if (tc != 8) // Non è nolo
|
||||||
|
{
|
||||||
|
const int m = d.month();
|
||||||
|
const int r = m % 3;
|
||||||
|
if (r != 0)
|
||||||
|
{
|
||||||
|
d.set_month(m + 3 - r);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TDate da_data = d;
|
||||||
|
da_data.set_day(1);
|
||||||
|
set(F_DADATA, da_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!d.is_end_month())
|
||||||
|
{
|
||||||
|
d.set_end_month();
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
if (changed)
|
||||||
|
o.set(d.string());
|
||||||
|
|
||||||
|
if (e == fe_close)
|
||||||
|
{
|
||||||
|
const TDate dal = get(F_DADATA);
|
||||||
|
if (dal.ok() && dal.year() != d.year())
|
||||||
|
return error_box(TR("Le date devono appartenere allo stesso anno!"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -56,15 +112,15 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
case F_DEFINITIVO:
|
case F_DEFINITIVO:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
if (o.get() == "X")
|
if (o.get().full())
|
||||||
{
|
{
|
||||||
set(F_KILLPROVV, "X");
|
set(F_KILLPROVV, "X");
|
||||||
disable(F_KILLPROVV);
|
disable(F_KILLPROVV);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
reset(F_KILLPROVV);
|
||||||
enable(F_KILLPROVV);
|
enable(F_KILLPROVV);
|
||||||
set(F_KILLPROVV, " ");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -74,8 +130,6 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
// TSkeleton_application
|
// TSkeleton_application
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
@ -90,6 +144,7 @@ protected:
|
|||||||
|
|
||||||
//metodi medio livello
|
//metodi medio livello
|
||||||
bool aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log);
|
bool aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log);
|
||||||
|
bool deve_generare_nac(const TContratto_premi& contratto, const TDate& data) const;
|
||||||
bool elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log);
|
bool elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log);
|
||||||
bool genera_nac(const TMask& mask, TArray& contratti_cliente, TAssoc_array& nac_nolo, TLog_report& log);
|
bool genera_nac(const TMask& mask, TArray& contratti_cliente, TAssoc_array& nac_nolo, TLog_report& log);
|
||||||
bool genera_fat(const TMask& mask, TContratto_premi& contratto, TToken_string& nakey, TLog_report& log);
|
bool genera_fat(const TMask& mask, TContratto_premi& contratto, TToken_string& nakey, TLog_report& log);
|
||||||
@ -184,6 +239,8 @@ int THardy_elab_docs::kill_provv_nac(const TMask& mask)
|
|||||||
//metodo che filtra tutti i documenti in base ai parametri della maschera
|
//metodo che filtra tutti i documenti in base ai parametri della maschera
|
||||||
long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recset)
|
long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recset)
|
||||||
{
|
{
|
||||||
|
const int tc = mask.get_int(F_TIPOCONTR);
|
||||||
|
|
||||||
//parametri di elaborazione
|
//parametri di elaborazione
|
||||||
//per prima cosa controlla se il cliente è stato specificato; questo influisce sulla scelta della chiave di ricerca sul file
|
//per prima cosa controlla se il cliente è stato specificato; questo influisce sulla scelta della chiave di ricerca sul file
|
||||||
int key = 3;
|
int key = 3;
|
||||||
@ -197,7 +254,9 @@ long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recs
|
|||||||
query << "USE DOC KEY " << key;
|
query << "USE DOC KEY " << key;
|
||||||
//lo stato dipende da quanto sta scritto sulla elaborazione differita (stato iniziale dei docs da considerare)
|
//lo stato dipende da quanto sta scritto sulla elaborazione differita (stato iniziale dei docs da considerare)
|
||||||
//viene messo CODNUM nella SELECT perchè, essendoci un range di date nelle chiavi, la numerazione verrebbe ignorata! (provato!)
|
//viene messo CODNUM nella SELECT perchè, essendoci un range di date nelle chiavi, la numerazione verrebbe ignorata! (provato!)
|
||||||
query << "\nSELECT (STATO>=#STATOINI)&&(STATO<'9')";
|
query << "\nSELECT (STATO>=#STATOINI)";
|
||||||
|
if (tc != 8) // Per i contratti NON di nolo ...
|
||||||
|
query << "&&(STATO<'9')"; // ... scarta i documenti definitivi
|
||||||
|
|
||||||
//in base al tipo documento che si deve elaborare (settato in configurazione), ci possono essere più numerazioni da considerare!
|
//in base al tipo documento che si deve elaborare (settato in configurazione), ci possono essere più numerazioni da considerare!
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
TConfig config(CONFIG_DITTA, "ha");
|
||||||
@ -207,11 +266,9 @@ long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recs
|
|||||||
// Inutile testare tutte le numerazioni, basta il tipo documento
|
// Inutile testare tutte le numerazioni, basta il tipo documento
|
||||||
query << "&&((" << DOC_TIPODOC << "=='" << tipo_doc_to_elab1 << "')||(" << DOC_TIPODOC << "=='" << tipo_doc_to_elab2 << "'))";
|
query << "&&((" << DOC_TIPODOC << "=='" << tipo_doc_to_elab1 << "')||(" << DOC_TIPODOC << "=='" << tipo_doc_to_elab2 << "'))";
|
||||||
|
|
||||||
//se c'è l'agente specificato...
|
|
||||||
const TString& agente = mask.get(F_CODAGE);
|
|
||||||
|
|
||||||
//ordinamento (agente)-codcf-ndoc
|
if (codcf <= 0)
|
||||||
query << "\nBY " << DOC_CODCF << " " << DOC_NDOC;
|
query << "\nBY " << DOC_CODCF << ' ' << DOC_NDOC; //ordinamento codcf-ndoc
|
||||||
|
|
||||||
//from-to dipendente da chiave
|
//from-to dipendente da chiave
|
||||||
switch (key)
|
switch (key)
|
||||||
@ -242,6 +299,8 @@ long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recs
|
|||||||
const TString& stato_ini = config.get("StatoIniFatt");
|
const TString& stato_ini = config.get("StatoIniFatt");
|
||||||
recset.set_var("#STATOINI", stato_ini);
|
recset.set_var("#STATOINI", stato_ini);
|
||||||
|
|
||||||
|
//se c'è l'agente specificato...
|
||||||
|
const TString& agente = mask.get(F_CODAGE);
|
||||||
if (agente.full())
|
if (agente.full())
|
||||||
recset.set_var("#CODAG", agente);
|
recset.set_var("#CODAG", agente);
|
||||||
if (codcf > 0)
|
if (codcf > 0)
|
||||||
@ -454,6 +513,21 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt
|
|||||||
return elaborato;
|
return elaborato;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool THardy_elab_docs::deve_generare_nac(const TContratto_premi& contratto, const TDate& data) const
|
||||||
|
{
|
||||||
|
const int mese = data.month();
|
||||||
|
bool yes = false;
|
||||||
|
switch (contratto.frequenza())
|
||||||
|
{
|
||||||
|
case 'A': yes = mese == 12; break; // Gli annuali valgono solo a dicembre
|
||||||
|
case 'M': yes = true; break; // I mensili (nolo) valgono sempre
|
||||||
|
case 'S': yes = mese == 6 || mese == 12; // I semestrali valgono solo a giugno e dicembre
|
||||||
|
case 'T': yes = data.month() % 3 == 0; break; // I trimestrali valgono solo a marzo, giugno, settembre e dicembre
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return yes;
|
||||||
|
}
|
||||||
|
|
||||||
//aggiorna, in base al documento in esame curr_doc, le somme restituite nelle righe di tipo verigh02 nei contratti validi..
|
//aggiorna, in base al documento in esame curr_doc, le somme restituite nelle righe di tipo verigh02 nei contratti validi..
|
||||||
//..del cliente
|
//..del cliente
|
||||||
bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log)
|
bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log)
|
||||||
@ -472,11 +546,12 @@ bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti
|
|||||||
|
|
||||||
// Calcola l'inizio di validità dei documenti in base alla frequenza (14-01-2013)
|
// Calcola l'inizio di validità dei documenti in base alla frequenza (14-01-2013)
|
||||||
TDate data_inizio(1, 1, data_fine.year());
|
TDate data_inizio(1, 1, data_fine.year());
|
||||||
|
const int mese = data_fine.month();
|
||||||
switch (contratto.frequenza())
|
switch (contratto.frequenza())
|
||||||
{
|
{
|
||||||
case 'M': data_inizio.set_month(data_fine.month()); break; // Solo contratti NOLO
|
case 'M': data_inizio.set_month(mese); break; // Solo contratti NOLO
|
||||||
case 'S': data_inizio.set_month(data_fine.month() > 6 ? 7 : 1); break;
|
case 'S': data_inizio.set_month(mese > 6 ? 7 : 1); break;
|
||||||
case 'T': data_inizio.set_month(max(1, data_fine.month()-2)); break;
|
case 'T': data_inizio.set_month(max(1, mese-2)); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -498,6 +573,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
|
|
||||||
//si informa se l'elaborazione è definitiva o meno
|
//si informa se l'elaborazione è definitiva o meno
|
||||||
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
||||||
|
const TDate data_fine = mask.get(F_ADATA);
|
||||||
|
|
||||||
//giro su tutti i contratti del cliente che stanno nell'array (ogni contratto genera una NAC)
|
//giro su tutti i contratti del cliente che stanno nell'array (ogni contratto genera una NAC)
|
||||||
FOR_EACH_ARRAY_ITEM(contratti_cliente, r, riga)
|
FOR_EACH_ARRAY_ITEM(contratti_cliente, r, riga)
|
||||||
@ -507,9 +583,36 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
const long codcf = contratto.codcf(); // il codice cliente ci serve nella generazione della NAC...
|
const long codcf = contratto.codcf(); // il codice cliente ci serve nella generazione della NAC...
|
||||||
const char tipo_contratto = contratto.tipo_contratto(); // ...e pure il tipo di contratto in esame!
|
const char tipo_contratto = contratto.tipo_contratto(); // ...e pure il tipo di contratto in esame!
|
||||||
|
|
||||||
|
TString80 tip = "";
|
||||||
|
switch (tipo_contratto)
|
||||||
|
{
|
||||||
|
case 'A': tip = TR("Anticipo"); break;
|
||||||
|
case 'N': tip = TR("Nolo"); break;
|
||||||
|
case 'P': tip = TR("Posticipo"); break;
|
||||||
|
case 'R': tip = TR("Rifatturzaione"); break;
|
||||||
|
default : break;
|
||||||
|
}
|
||||||
|
|
||||||
|
TString80 freq = "";
|
||||||
|
switch (contratto.frequenza())
|
||||||
|
{
|
||||||
|
case 'A': freq = TR("annuale"); break;
|
||||||
|
case 'M': freq << TR("rata ") << (contratto.get_int(DOC_NUMANT)+1); break;
|
||||||
|
case 'S': freq << (data_fine.month() < 7 ? TR("I sem.") : TR("II sem.")); break;
|
||||||
|
case 'T': freq << itor((data_fine.month()/3)) << TR(" trim."); break;
|
||||||
|
default : break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool nac_ok = deve_generare_nac(contratto, data_fine);
|
||||||
//segnaliamo l'elaborazione del contratto sul log
|
//segnaliamo l'elaborazione del contratto sul log
|
||||||
TString log_msg;
|
TString log_msg;
|
||||||
log_msg.format(FR("Contratto:%6ld Cliente:%6ld"), ndoc, codcf);
|
log_msg.format(FR("Cliente:%ld Contratto:%ld %s %s"), codcf, ndoc, (const char*)tip, (const char*)freq);
|
||||||
|
log_msg << "(NAC ";
|
||||||
|
if (nac_ok)
|
||||||
|
log_msg << "def.";
|
||||||
|
else
|
||||||
|
log_msg << "provv.";
|
||||||
|
log_msg << ')';
|
||||||
|
|
||||||
// generazione del documento NAC dal contratto
|
// generazione del documento NAC dal contratto
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
@ -556,7 +659,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
const int anno = datadoc.year();
|
const int anno = datadoc.year();
|
||||||
//solo in caso di elaborazione definitiva si scrivono NAC di tipo D;
|
//solo in caso di elaborazione definitiva si scrivono NAC di tipo D;
|
||||||
//sennò di tipo P, che sono uccidibili all'inizio di ogni nuova elaborazione
|
//sennò di tipo P, che sono uccidibili all'inizio di ogni nuova elaborazione
|
||||||
const char provv = definitivo ? 'D' : 'P';
|
const char provv = definitivo && nac_ok ? 'D' : 'P';
|
||||||
|
|
||||||
TDocumento nac(provv, anno, nac_codnum, 0); //num_doc = 0 perchè viene aggiornato in fase di registrazione
|
TDocumento nac(provv, anno, nac_codnum, 0); //num_doc = 0 perchè viene aggiornato in fase di registrazione
|
||||||
nac.set_tipo(nac_tipo);
|
nac.set_tipo(nac_tipo);
|
||||||
@ -761,7 +864,11 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
log_msg << " -- Impossibile aggiornare contratto: errore " << err;
|
log_msg << " -- Impossibile aggiornare contratto: errore " << err;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.log(0, log_msg);
|
if (err == NOERR)
|
||||||
|
log.log(nac_ok ? 1 : 0, log_msg);
|
||||||
|
else
|
||||||
|
log.log(2, log_msg);
|
||||||
|
|
||||||
log.log(0, "");
|
log.log(0, "");
|
||||||
|
|
||||||
|
|
||||||
@ -962,30 +1069,15 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
old_codcf = codcf;
|
old_codcf = codcf;
|
||||||
|
|
||||||
const int n_contratti = find_contratti_cliente(codcf, mask, tc, contratti_cliente);
|
const int n_contratti = find_contratti_cliente(codcf, mask, tc, contratti_cliente);
|
||||||
|
|
||||||
TString8 key; key.format("C|%ld", codcf);
|
|
||||||
TString msg; msg << TR("Cliente") << ' ' << codcf << ' ' << cache().get(LF_CLIFO, key, CLI_RAGSOC);
|
|
||||||
|
|
||||||
if (n_contratti > 0)
|
if (n_contratti > 0)
|
||||||
{
|
{
|
||||||
|
TString8 key; key.format("C|%ld", codcf);
|
||||||
|
TString msg; msg << TR("Cliente") << ' ' << codcf << ' ' << cache().get(LF_CLIFO, key, CLI_RAGSOC);
|
||||||
log.log(0, msg);
|
log.log(0, msg);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (tc & 0x8) // Elaborazione nolo?
|
|
||||||
{
|
|
||||||
// Nulla di grave se non esistono contratti di nolo
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
log.log(0, msg);
|
|
||||||
msg = TR("Non ha un contratto valido nel periodo selezionato pur avendo fatture.");
|
|
||||||
log.log(1, msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contratti_cliente.items() > 0)
|
if (!contratti_cliente.empty())
|
||||||
{
|
{
|
||||||
const TDate data_fine = mask.get(F_ADATA);
|
const TDate data_fine = mask.get(F_ADATA);
|
||||||
|
|
||||||
@ -1003,9 +1095,8 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
if (!contratti_cliente.empty())
|
if (!contratti_cliente.empty())
|
||||||
genera_nac(mask, contratti_cliente, fat_nolo, log);
|
genera_nac(mask, contratti_cliente, fat_nolo, log);
|
||||||
|
|
||||||
//se elaborazione definitiva -> cambia lo stato ai documenti di vendita elaborati, mettendolo uguale..
|
// se elaborazione definitiva NON di nolo-> cambia lo stato ai documenti di vendita elaborati
|
||||||
//..a quello deciso in configurazione
|
const bool definitivo = mask.get_bool(F_DEFINITIVO) && ((tc & 0x8) == 0);
|
||||||
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
|
||||||
if (definitivo && !documenti_cliente.empty())
|
if (definitivo && !documenti_cliente.empty())
|
||||||
{
|
{
|
||||||
const TString4 stato_finale = ini_get_string(CONFIG_DITTA, "ha", "StatoFinFatt");
|
const TString4 stato_finale = ini_get_string(CONFIG_DITTA, "ha", "StatoFinFatt");
|
||||||
|
@ -67,6 +67,7 @@ BEGIN
|
|||||||
PROMPT 22 4 "A data "
|
PROMPT 22 4 "A data "
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
||||||
|
WARNING "Inserire una data successiva a quella iniziale"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 4
|
GROUPBOX DLG_NULL 76 4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user