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:
|
||||
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!"));
|
||||
}
|
||||
}
|
||||
const TDate al = o.get();
|
||||
const TDate dal = get(F_DADATA);
|
||||
if (dal.ok() && dal.year() != al.year())
|
||||
return error_box(TR("Le date devono appartenere allo stesso anno!"));
|
||||
}
|
||||
break;
|
||||
//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 elaborato = false;
|
||||
const bool definitivo = rdoc.get_char(RDOC_PROVV) == 'D';
|
||||
const char tipo_contratto = contratto.tipo_contratto();
|
||||
//parametri della riga fattura
|
||||
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
|
||||
if (rigacontratto->is_spese())
|
||||
{
|
||||
//la somma restituita deve essere incrementata per la qta di merce (caffè) che c'è sulla riga della fattura in esame...
|
||||
//..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);
|
||||
if (definitivo) // Non scrivo aaggiornamenti provvisori
|
||||
{
|
||||
//la somma restituita deve essere incrementata per la qta di merce (caffè) che c'è sulla riga della fattura in esame...
|
||||
//..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;
|
||||
break;
|
||||
}
|
||||
@ -508,8 +479,11 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt
|
||||
if (rigamerce->is_merce())
|
||||
{
|
||||
const real bonus = normalized_rdoc_qta * rigamerce_premio;
|
||||
rigamerce->add(RC_1_BONUS, bonus);
|
||||
rigamerce->add(RDOC_QTA, normalized_rdoc_qta); //riscrive sul campo di appoggio del contratto
|
||||
if (definitivo) // Non scrivo aaggiornamenti provvisori
|
||||
{
|
||||
rigamerce->add(RC_1_BONUS, bonus);
|
||||
rigamerce->add(RDOC_QTA, normalized_rdoc_qta); //riscrive sul campo di appoggio del contratto
|
||||
}
|
||||
elaborato = true;
|
||||
|
||||
TString msg;
|
||||
@ -541,8 +515,7 @@ bool THardy_elab_docs::deve_generare_nac(const TContratto_premi& contratto, cons
|
||||
return yes;
|
||||
}
|
||||
|
||||
//aggiorna, in base al documento in esame curr_doc, le somme restituite nelle righe di tipo verigh02 nei contratti validi..
|
||||
//..del cliente
|
||||
//aggiorna, in base al documento in esame curr_doc, le somme restituite nelle righe di tipo verigh02 nei contratti validi
|
||||
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);
|
||||
|
@ -406,6 +406,7 @@ TFatture_recordset::TFatture_recordset(bool nuovo)
|
||||
class THardy_esselunga_fat : public TSkeleton_application
|
||||
{
|
||||
TCodArtEsselunga_cache _cache_ca;
|
||||
TCodArtEsselungaUM_cache _cache_um;
|
||||
|
||||
protected:
|
||||
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.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.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);
|
||||
}
|
||||
|
||||
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
|
||||
/////////////////////////////////////////////////////////////
|
||||
|
11
ha/halib.h
11
ha/halib.h
@ -51,12 +51,19 @@ class TCodArtEsselunga_cache : public TCache
|
||||
{
|
||||
protected:
|
||||
virtual TObject* key2obj(const char* key);
|
||||
|
||||
public:
|
||||
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
|
||||
//----------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user