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:
rajitgill 2009-03-30 16:18:50 +00:00
parent 0aabdc7bb6
commit da127e575d

View File

@ -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,