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 doc_raggruppabile(const TDocumento & doc) const { return true; }
virtual bool gestione_riferimenti() const { return true; } virtual bool gestione_riferimenti() const { return true; }
virtual bool riferimenti_in_testa() 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: public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, 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) 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); const int indsped = rin.doc().get_int(DOC_CODINDSP);
TLaundry_contract contr(clifo, indsped, _data_elab); TLaundry_contract contr(clifo, indsped, _data_elab);
const TString80 codart = rin.get(RDOC_CODART); 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 if (cau.get_bool("B4")) // Causale di rotto
return true; return true; */
return false; 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) 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 TRectype& cau = cache().get("&CAU", causale);
const TCausale_magazzino& rit = cached_causale_magazzino(cau.get("S1")); 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 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); const real qta = con.sgn(s_consmese) * rin.get_real(RDOC_QTA);
rout.add(RDOC_QTA, 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) 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); 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")); 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")); 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, bool TFatturazione_lavanderie::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,