Correzione gestione contratti di nolo
git-svn-id: svn://10.65.10.50/branches/R_10_00@22904 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
735f648bbb
commit
530c414206
@ -68,43 +68,10 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
case F_ADATA:
|
case F_ADATA:
|
||||||
if ((e == fe_close || e == fe_modify) && !o.empty())
|
if ((e == fe_close || e == fe_modify) && !o.empty())
|
||||||
{
|
{
|
||||||
TDate d = o.get();
|
const TDate al = o.get();
|
||||||
if (d.ok())
|
const TDate dal = get(F_DADATA);
|
||||||
{
|
if (dal.ok() && dal.year() != al.year())
|
||||||
bool changed = false;
|
return error_box(TR("Le date devono appartenere allo stesso anno!"));
|
||||||
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;
|
||||||
//in caso di elaborazione definitiva è obbligatorio..
|
//in caso di elaborazione definitiva è obbligatorio..
|
||||||
@ -464,6 +431,7 @@ int THardy_elab_docs::month_diff(const TDate& inizio, const TDate& fine) const
|
|||||||
bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log)
|
bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log)
|
||||||
{
|
{
|
||||||
bool elaborato = false;
|
bool elaborato = false;
|
||||||
|
const bool definitivo = rdoc.get_char(RDOC_PROVV) == 'D';
|
||||||
const char tipo_contratto = contratto.tipo_contratto();
|
const char tipo_contratto = contratto.tipo_contratto();
|
||||||
//parametri della riga fattura
|
//parametri della riga fattura
|
||||||
TString80 rdoc_codart = rdoc.get(RDOC_CODART); rdoc_codart.trim();
|
TString80 rdoc_codart = rdoc.get(RDOC_CODART); rdoc_codart.trim();
|
||||||
@ -493,10 +461,13 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt
|
|||||||
//cerca una riga anticipo da evadere sul contratto per aggiornare la somma restituita sull'anticipo
|
//cerca una riga anticipo da evadere sul contratto per aggiornare la somma restituita sull'anticipo
|
||||||
if (rigacontratto->is_spese())
|
if (rigacontratto->is_spese())
|
||||||
{
|
{
|
||||||
//la somma restituita deve essere incrementata per la qta di merce (caffè) che c'è sulla riga della fattura in esame...
|
if (definitivo) // Non scrivo aaggiornamenti provvisori
|
||||||
//..moltiplicata per il premio che c'è nella riga di tipo merce del contratto in esame
|
{
|
||||||
const real reso = normalized_rdoc_qta * rigamerce_premio;
|
//la somma restituita deve essere incrementata per la qta di merce (caffè) che c'è sulla riga della fattura in esame...
|
||||||
rigacontratto->add(RCA_2_RESO_CORRENTE, reso);
|
//..moltiplicata per il premio che c'è nella riga di tipo merce del contratto in esame
|
||||||
|
const real reso = normalized_rdoc_qta * rigamerce_premio;
|
||||||
|
rigacontratto->add(RCA_2_RESO_CORRENTE, reso);
|
||||||
|
}
|
||||||
elaborato = true;
|
elaborato = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -508,8 +479,11 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt
|
|||||||
if (rigamerce->is_merce())
|
if (rigamerce->is_merce())
|
||||||
{
|
{
|
||||||
const real bonus = normalized_rdoc_qta * rigamerce_premio;
|
const real bonus = normalized_rdoc_qta * rigamerce_premio;
|
||||||
rigamerce->add(RC_1_BONUS, bonus);
|
if (definitivo) // Non scrivo aaggiornamenti provvisori
|
||||||
rigamerce->add(RDOC_QTA, normalized_rdoc_qta); //riscrive sul campo di appoggio del contratto
|
{
|
||||||
|
rigamerce->add(RC_1_BONUS, bonus);
|
||||||
|
rigamerce->add(RDOC_QTA, normalized_rdoc_qta); //riscrive sul campo di appoggio del contratto
|
||||||
|
}
|
||||||
elaborato = true;
|
elaborato = true;
|
||||||
|
|
||||||
TString msg;
|
TString msg;
|
||||||
@ -541,8 +515,7 @@ bool THardy_elab_docs::deve_generare_nac(const TContratto_premi& contratto, cons
|
|||||||
return yes;
|
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
|
|
||||||
word THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log)
|
word THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log)
|
||||||
{
|
{
|
||||||
const TDate datadoc = curr_doc.get(DOC_DATADOC);
|
const TDate datadoc = curr_doc.get(DOC_DATADOC);
|
||||||
|
@ -406,6 +406,7 @@ TFatture_recordset::TFatture_recordset(bool nuovo)
|
|||||||
class THardy_esselunga_fat : public TSkeleton_application
|
class THardy_esselunga_fat : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TCodArtEsselunga_cache _cache_ca;
|
TCodArtEsselunga_cache _cache_ca;
|
||||||
|
TCodArtEsselungaUM_cache _cache_um;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
long genera_recordset(const TMask& mask, TISAM_recordset& recset);
|
long genera_recordset(const TMask& mask, TISAM_recordset& recset);
|
||||||
@ -575,6 +576,14 @@ void THardy_esselunga_fat::add_recs_dettaglio(TFatture_recordset& fat, TDocument
|
|||||||
fat.set("DET.PRZUN2", rigadoc->prezzo(true, false));
|
fat.set("DET.PRZUN2", rigadoc->prezzo(true, false));
|
||||||
fat.set("DET.IMPORTO", rigadoc->importo(true, false));
|
fat.set("DET.IMPORTO", rigadoc->importo(true, false));
|
||||||
|
|
||||||
|
const TString& tu = _cache_um.decode(codart);
|
||||||
|
const TString& cu = rigadoc->get(RDOC_UMQTA);
|
||||||
|
if (tu.full() && tu != cu)
|
||||||
|
{
|
||||||
|
fat.set("DET.UDMQCONS", "TU");
|
||||||
|
fat.set("DET.UDMQFATT", "TU");
|
||||||
|
}
|
||||||
|
|
||||||
fat.new_rec("DES");
|
fat.new_rec("DES");
|
||||||
fat.set("DES.DESCR", rigadoc->get(RDOC_DESCR));
|
fat.set("DES.DESCR", rigadoc->get(RDOC_DESCR));
|
||||||
|
|
||||||
|
18
ha/halib.cpp
18
ha/halib.cpp
@ -99,6 +99,24 @@ const TString& TCodArtEsselunga_cache::decode(const TString& codart)
|
|||||||
return *(const TString*)objptr(codart);
|
return *(const TString*)objptr(codart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TObject* TCodArtEsselungaUM_cache::key2obj(const char* key)
|
||||||
|
{
|
||||||
|
TToken_string code(key);
|
||||||
|
TString80 codart; code.get(0, codart);
|
||||||
|
const TString& codcf = ini_get_string(CONFIG_DITTA, "ha", "Esselunga_CodEsselunga");
|
||||||
|
TISAM_recordset codcorr("USE CODCORR\nSELECT CODCF=#CODCF\nFROM CODART=#COD\nTO CODART=#COD");
|
||||||
|
codcorr.set_var("#COD", TVariant(codart));
|
||||||
|
codcorr.set_var("#CODCF", TVariant(codcf));
|
||||||
|
if (codcorr.move_first())
|
||||||
|
return new TString4(codcorr.get(CODCORR_UM).as_string());
|
||||||
|
return new TString4;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString& TCodArtEsselungaUM_cache::decode(const TString& codart)
|
||||||
|
{
|
||||||
|
return *(const TString*)objptr(codart);
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
// Metodi di utility
|
// Metodi di utility
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
11
ha/halib.h
11
ha/halib.h
@ -51,12 +51,19 @@ class TCodArtEsselunga_cache : public TCache
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual TObject* key2obj(const char* key);
|
virtual TObject* key2obj(const char* key);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const TString& decode(const TString& codart);
|
const TString& decode(const TString& codart);
|
||||||
TCodArtEsselunga_cache() {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TCodArtEsselungaUM_cache : public TCache
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual TObject* key2obj(const char* key);
|
||||||
|
public:
|
||||||
|
const TString& decode(const TString& codart);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
//metodi di utility
|
//metodi di utility
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user