Patch level :10.0
Files correlati :lv2.exe Ricompilazione Demo : [ ] Commento : Completata la gestione delle quantità della fatturazione lavanderie git-svn-id: svn://10.65.10.50/trunk@18637 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0aabdc7bb6
commit
da127e575d
@ -28,6 +28,7 @@ protected:
|
||||
virtual bool doc_raggruppabile(const TDocumento & doc) const { return true; }
|
||||
virtual bool gestione_riferimenti() const { return true; }
|
||||
virtual bool riferimenti_in_testa() const { return true; }
|
||||
virtual TRiga_documento& find_or_create_row(TDocumento& doc_out, const TString& codart,const char lavtype);
|
||||
|
||||
public:
|
||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||
@ -45,7 +46,7 @@ TFatturazione_lavanderie::TFatturazione_lavanderie(const char* cod)
|
||||
|
||||
bool TFatturazione_lavanderie::da_raggruppare(const TRiga_documento & rin)
|
||||
{
|
||||
const long clifo = rin.doc().get_long(DOC_CODCF);
|
||||
/* const long clifo = rin.doc().get_long(DOC_CODCF);
|
||||
const int indsped = rin.doc().get_int(DOC_CODINDSP);
|
||||
TLaundry_contract contr(clifo, indsped, _data_elab);
|
||||
const TString80 codart = rin.get(RDOC_CODART);
|
||||
@ -71,7 +72,7 @@ bool TFatturazione_lavanderie::da_raggruppare(const TRiga_documento & rin)
|
||||
}
|
||||
|
||||
if (cau.get_bool("B4")) // Causale di rotto
|
||||
return true;
|
||||
return true; */
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -170,9 +171,11 @@ void TFatturazione_lavanderie::post_process_output(TLista_documenti& doc_out)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void TFatturazione_lavanderie::add_rows(TRiga_documento & rout, TRiga_documento & rin)
|
||||
{
|
||||
const TString8 causale = rin.get(RDOC_CODAGG1);
|
||||
/*const TString8 causale = rin.get(RDOC_CODAGG1);
|
||||
const TRectype& cau = cache().get("&CAU", causale);
|
||||
const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1"));
|
||||
const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2")); //movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale
|
||||
@ -200,31 +203,76 @@ void TFatturazione_lavanderie::add_rows(TRiga_documento & rout, TRiga_documento
|
||||
const real qta = con.sgn(s_consmese) * rin.get_real(RDOC_QTA);
|
||||
rout.add(RDOC_QTA, qta);
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
TRiga_documento& TFatturazione_lavanderie::find_or_create_row(TDocumento& doc_out, const TString& codart,const char lavtype)
|
||||
{
|
||||
int r;
|
||||
for (r=doc_out.physical_rows();r>0;r--)
|
||||
{
|
||||
const char tipo=doc_out[r].get_char("LVTYPE");
|
||||
const TString& cod=doc_out[r].get(RDOC_CODARTMAG);
|
||||
if (cod==codart && tipo==lavtype)
|
||||
break;
|
||||
}
|
||||
if (r<=0)
|
||||
{
|
||||
TRiga_documento& row=doc_out.new_row("01");
|
||||
row.put(RDOC_CODART,codart);
|
||||
row.put(RDOC_CODARTMAG,codart);
|
||||
row.put(RDOC_CHECKED,"X");
|
||||
row.put("LVTYPE",lavtype);
|
||||
r=row.get_int(RDOC_NRIGA);
|
||||
}
|
||||
|
||||
|
||||
return doc_out[r];
|
||||
|
||||
}
|
||||
|
||||
void TFatturazione_lavanderie::create_row(TDocumento& doc_out, const TRiga_documento & rin)
|
||||
{
|
||||
real qta;
|
||||
const TString8 causale = rin.get(RDOC_CODAGG1);
|
||||
const TString8 causale = rin.get(RDOC_CODAGG1);
|
||||
const TRectype& cau = cache().get("&CAU", causale);
|
||||
//movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale
|
||||
|
||||
const long clifo = rin.doc().get_long(DOC_CODCF);
|
||||
const int indsped = rin.doc().get_int(DOC_CODINDSP);
|
||||
TLaundry_contract contr(clifo, indsped, _data_elab);
|
||||
|
||||
if (cau.get_bool("B0"))
|
||||
const TString80 codart=rin.get(RDOC_CODARTMAG);
|
||||
const real qta=rin.get_real(RDOC_QTA);
|
||||
const real qta1=rin.get_real(RDOC_QTAGG1);
|
||||
|
||||
// Guardo se è una causale di rotto e se è abilitato nella testata del contratto la fatturazione dei rotti
|
||||
if (cau.get_bool("B4") && contr.get_int(LVCONDV_ADDCAPROT) && !qta1.is_zero())
|
||||
{
|
||||
TRiga_documento& rd=find_or_create_row(doc_out,codart,'D');
|
||||
rd.add(RDOC_QTA, qta1);
|
||||
rd.put(RDOC_PREZZO,contr.row(codart).get_real(LVRCONDV_PREZDAN));
|
||||
}
|
||||
if (cau.get_bool("B0")) // movimenta ritirato
|
||||
{
|
||||
const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1"));
|
||||
qta += rit.sgn(s_consmese) * rin.get_real(RDOC_QTA);
|
||||
TRiga_documento& rr=find_or_create_row(doc_out,codart,'R');
|
||||
rr.add(RDOC_QTA,rit.sgn(s_consmese) * qta1);
|
||||
}
|
||||
if (cau.get_bool("B1"))
|
||||
if (cau.get_bool("B1") && !qta.is_zero()) // movimenta consegnato
|
||||
{
|
||||
const TCausale_magazzino& con = cached_causale_magazzino(cau.get("S2"));
|
||||
qta += con.sgn(s_consmese) * rin.get_real(RDOC_QTA);
|
||||
const real sgntmp=con.sgn(s_dottm);
|
||||
if (!sgntmp.is_zero() && contr.get_bool(LVCONDV_DOTTMPPRZD))
|
||||
{
|
||||
TRiga_documento& rt=find_or_create_row(doc_out,codart,'T');
|
||||
rt.add(RDOC_QTA,sgntmp * qta);
|
||||
rt.put(RDOC_PREZZO,contr.row(codart).get_real(LVRCONDV_PRZDTTMP));
|
||||
}
|
||||
else
|
||||
{
|
||||
TRiga_documento& rc=find_or_create_row(doc_out,codart,'C');
|
||||
rc.add(RDOC_QTA,con.sgn(s_consmese) * qta);
|
||||
}
|
||||
}
|
||||
if (qta != ZERO)
|
||||
TFatturazione_bolle::create_row(doc_out, rin);
|
||||
|
||||
}
|
||||
|
||||
bool TFatturazione_lavanderie::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||
|
Loading…
x
Reference in New Issue
Block a user