2008-06-11 14:16:07 +00:00
|
|
|
#include <progind.h>
|
|
|
|
|
|
|
|
#include "../ve/ve6200.h"
|
|
|
|
#include "../ve/ve6200a.h"
|
|
|
|
|
|
|
|
#include <doc.h>
|
2008-07-29 13:36:43 +00:00
|
|
|
class TFatturazione_cooperative : public TFatturazione_bolle
|
2008-06-11 14:16:07 +00:00
|
|
|
{
|
2008-07-29 13:36:43 +00:00
|
|
|
virtual void campi_raggruppamento_righe(TToken_string& campi_riga) const;
|
|
|
|
virtual void campi_raggruppamento(TToken_string& campi) const;
|
|
|
|
virtual bool doc_raggruppabile(const TDocumento & doc) const { return true; }
|
|
|
|
virtual bool doc_raggruppabile(const TDocumento & doc_in, const TDocumento & doc_out, TToken_string & campi) const;
|
|
|
|
virtual void add_rows(TRiga_documento & rout, TRiga_documento & rin);
|
|
|
|
virtual void create_row(TDocumento& doc_out, const TRiga_documento & rin);
|
|
|
|
virtual const TString & get_tipo_out(const TDocumento & doc_out);
|
|
|
|
|
2008-06-11 14:16:07 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
TFatturazione_cooperative(const char* cod) : TFatturazione_bolle(cod) {}
|
|
|
|
virtual ~TFatturazione_cooperative() { }
|
|
|
|
};
|
|
|
|
|
|
|
|
void TFatturazione_cooperative::campi_raggruppamento_righe(TToken_string& campi_riga) const
|
|
|
|
{
|
2008-11-14 00:40:30 +00:00
|
|
|
campi_riga = "CODART|UMQTA"; // Uguali sempre
|
2008-06-11 14:16:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TFatturazione_cooperative::campi_raggruppamento(TToken_string& campi) const
|
|
|
|
{
|
|
|
|
campi = "TIPOCF|CODCF|CODVAL|CODLIN";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TFatturazione_cooperative::add_rows(TRiga_documento & rout, TRiga_documento & rin)
|
|
|
|
{
|
2008-07-29 13:36:43 +00:00
|
|
|
real valore = rout.get_real(RDOC_PREZZO);
|
2008-11-14 00:40:30 +00:00
|
|
|
real qta = rout.get_real(RDOC_QTA);
|
2008-07-29 13:36:43 +00:00
|
|
|
|
2008-11-14 00:40:30 +00:00
|
|
|
valore += rin.doc().get_real("TOTMER")+rin.doc().get_real("SPESMER");
|
|
|
|
valore.round(2);
|
2008-07-29 13:36:43 +00:00
|
|
|
rout.put(RDOC_PREZZO, valore);
|
2008-11-14 00:40:30 +00:00
|
|
|
qta += rin.get_real(RDOC_QTA);
|
|
|
|
rout.put(RDOC_QTA, qta);
|
2008-07-29 13:36:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TFatturazione_cooperative::doc_raggruppabile(const TDocumento & doc_in, const TDocumento & doc_out, TToken_string & campi) const
|
|
|
|
{
|
|
|
|
if (doc_in.physical_rows() > 0 && doc_out.physical_rows() > 0)
|
2008-06-11 14:16:07 +00:00
|
|
|
{
|
2008-07-29 13:36:43 +00:00
|
|
|
const TRiga_documento & rout = doc_out[1];
|
|
|
|
const TRiga_documento & rin = doc_in[1];
|
|
|
|
const TString art_in = rin.get(RDOC_CODART);
|
|
|
|
const TString art_out = rout.get(RDOC_CODART);
|
|
|
|
bool raggruppa = art_in == art_out;
|
2008-06-11 14:16:07 +00:00
|
|
|
|
2008-07-29 13:36:43 +00:00
|
|
|
if (raggruppa)
|
|
|
|
{
|
2008-11-14 00:40:30 +00:00
|
|
|
const TString & art = rin.get(RDOC_CODARTMAG);
|
|
|
|
const TString & iva_in = cache().get(LF_ANAMAG, art, ANAMAG_USER4);
|
2008-07-29 13:36:43 +00:00
|
|
|
const TString iva_out = rout.get(RDOC_CODIVA);
|
2008-11-14 00:40:30 +00:00
|
|
|
|
2008-07-29 13:36:43 +00:00
|
|
|
raggruppa = iva_in == iva_out;
|
|
|
|
}
|
|
|
|
return raggruppa;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TFatturazione_cooperative::create_row(TDocumento& doc_out, const TRiga_documento & rin)
|
|
|
|
{
|
|
|
|
if (rin.get_int(RDOC_NRIGA) == 1)
|
|
|
|
{
|
|
|
|
TFatturazione_bolle::create_row(doc_out, rin);
|
|
|
|
TRiga_documento & rout = doc_out[1];
|
2008-11-14 00:40:30 +00:00
|
|
|
real valore = rin.doc().get_real("TOTMER")+rin.doc().get_real("SPESMER");
|
2008-07-29 13:36:43 +00:00
|
|
|
|
2008-11-14 00:40:30 +00:00
|
|
|
valore.round(2);
|
2008-06-11 14:16:07 +00:00
|
|
|
rout.put(RDOC_PREZZO, valore);
|
2008-07-29 13:36:43 +00:00
|
|
|
rout.zero(RDOC_SCONTO);
|
2008-11-14 00:40:30 +00:00
|
|
|
rout.put(RDOC_CODAGG1, "X");
|
|
|
|
|
|
|
|
const TString & art = rout.get(RDOC_CODARTMAG);
|
|
|
|
const TString & codiva= cache().get(LF_ANAMAG, art, ANAMAG_USER4);
|
|
|
|
|
|
|
|
if (codiva.full())
|
|
|
|
rout.put(RDOC_CODIVA, codiva);
|
2008-06-11 14:16:07 +00:00
|
|
|
}
|
2008-07-23 11:25:38 +00:00
|
|
|
}
|
2008-06-11 14:16:07 +00:00
|
|
|
|
2008-07-29 13:36:43 +00:00
|
|
|
const TString & TFatturazione_cooperative::get_tipo_out(const TDocumento & doc_out)
|
|
|
|
{
|
|
|
|
const TString & art = doc_out[1].get(RDOC_CODARTMAG);
|
|
|
|
const TString & tipodoc = cache().get(LF_ANAMAG, art, ANAMAG_USER2);
|
|
|
|
|
|
|
|
if (tipodoc.full() && !cache().get("%TIP", tipodoc).empty())
|
|
|
|
return tipodoc;
|
|
|
|
else
|
|
|
|
return get("S8");
|
|
|
|
};
|
|
|
|
|
2008-06-11 14:16:07 +00:00
|
|
|
class TFatturazione_cooperative_app : public TFatturazione_bolle_app
|
|
|
|
{
|
|
|
|
protected:
|
2008-07-29 13:36:43 +00:00
|
|
|
virtual TFatturazione_bolle * elab(const TString & cod) const { return new TFatturazione_cooperative(cod);}
|
2008-06-11 14:16:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
int co1400(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
TFatturazione_cooperative_app a;
|
|
|
|
a.run (argc, argv, "Fatturazione Conferimenti");
|
|
|
|
return TRUE;
|
|
|
|
}
|