campo-sirio/ps/ps0713300.cpp
alex 5dd36107ae Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@20862 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-09-15 08:40:19 +00:00

186 lines
4.6 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <execp.h>
#include <progind.h>
#include <tabutil.h>
#include "../ve/velib.h"
#include <clifo.h>
#include <doc.h>
#include <rdoc.h>
#include "ps0713lib.h"
#include "ps0713300a.h"
///////////////////////////////////
//// TIMPORTA_FATACQ_MSK ////
///////////////////////////////////
//Classe TImporta_fatacq_msk
class TImporta_fatacq_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImporta_fatacq_msk();
};
TImporta_fatacq_msk::TImporta_fatacq_msk() :TAutomask ("ps0713300a")
{
}
//ON_FIELD_EVENT: metodo che gestisce i comportamenti dei vari campi della maschera
//(per adesso segnaposto)
bool TImporta_fatacq_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
return true;
}
///////////////////////////////////
//// TIMPORTA_FATACQ_APP ////
///////////////////////////////////
//Classe TImporta_fatacq_app
class TImporta_fatacq_app : public TSkeleton_application
{
TImporta_fatacq_msk* _msk;
protected:
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ve";}
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
bool get_doc(const TFilename& file, const TMask & m);
void add_spesa(TDocumento & doc, const TString & cod, const real & perc);
TImporta_fatacq_app() {};
};
void TImporta_fatacq_app::add_spesa(TDocumento & doc, const TString & cod, const real & perc)
{
if (cod.full() && perc != ZERO)
{
TSpesa_prest p(cod);
TString tiporiga = p.get("S8").left(4);
TRiga_documento & row = doc.new_row(tiporiga);
row.put(RDOC_CODART, cod);
row.put(RDOC_CHECKED, "X");
row.put(RDOC_QTA, perc);
const TString & ivacli = doc.clifor().vendite().get(CFV_ASSFIS);
row.put(RDOC_CODIVA, ivacli.full() ? ivacli : p.cod_iva());
}
}
bool TImporta_fatacq_app::get_doc(const TFilename& file, const TMask & m)
{
const TDate datadoc(m.get_date(F_DATAREG));
TDocumento doc('D', datadoc.year(), m.get(F_CODNUM), 0L);
TVB_recset s(file, ',');
TProgind pi(s.items(),"Importazione fatture in corso ...",true,true);
doc.put(DOC_TIPODOC, m.get(F_TIPODOC));
doc.put(DOC_TIPOCF, "F");
doc.put(DOC_CODCF, m.get(F_CODCF));
doc.put(DOC_DATADOC, datadoc);
doc.cli2doc();
int nriga = 1;
TSpesa_prest p("GENPR", 'P');
for (bool ok = s.move_first(); ok; ok = s.move_next())
{
if (!pi.addstatus(1))
break;
TString16 tmp = s.get(1).as_string();
tmp.strip(".");
tmp.replace(',', '.');
real imp(tmp); imp.round(doc.decimals());
if (imp != ZERO)
{
TRiga_documento & row = doc.new_row("A6");
row.put(RDOC_CODART, p.codice());
row.put(RDOC_CHECKED, "X");
row.put(RDOC_QTA, 1);
row.put(RDOC_UMQTA, p.um());
row.put(RDOC_PREZZO, imp);
const TString & ivacli = doc.clifor().vendite().get(CFV_ASSFIS);
row.put(RDOC_CODIVA, ivacli.full() ? ivacli : p.cod_iva());
const TString16 codcom = s.get(0).as_string();
TCommessa cms(codcom);
TCommessa_string ankey = cms.cmsstr();
TString descr;
descr << " Id. Lavoro " << codcom;
row.put(RDOC_DESCR, descr);
row.put(RDOC_CODCMS, codcom);
row.put(RDOC_QTAGG1, ankey.gruppo());
row.put(RDOC_QTAGG2, ankey.conto());
row.put(RDOC_QTAGG3, ankey.sotco());
}
}
TString16 codsp = m.get(F_CODSP1);
real perc = m.get(F_PERCSP1);
add_spesa(doc, codsp, perc);
codsp = m.get(F_CODSP2);
perc = m.get_real(F_PERCSP2);
add_spesa(doc, codsp, perc);
codsp = m.get(F_CODSP3);
perc = m.get_real(F_PERCSP3);
add_spesa(doc, codsp, perc);
return doc.write() == NOERR;
}
const char* nomeini = "ps0713300fatt.ini";
bool TImporta_fatacq_app::create()
{
xvt_fsys_remove_file(nomeini);
_msk = new TImporta_fatacq_msk();
return TSkeleton_application::create();
}
bool TImporta_fatacq_app::destroy()
{
delete _msk;
return TApplication::destroy();
}
void TImporta_fatacq_app::main_loop()
{
if (_msk->run() == K_ENTER)
{
//genero il nome del file da caricare
TFilename name = _msk->get(F_PATH);
TFilename tmp = _msk->get(F_NAME);
name.add(tmp.name());
if (get_doc(name, *_msk))
message_box(TR("Importazione fatture completata"));
}
}
TImporta_fatacq_app& app() { return (TImporta_fatacq_app&) main_app(); }
int ps0713300 (int argc, char* argv[])
{
TImporta_fatacq_app main_app;
main_app.run(argc, argv, TR("Importazione Fatture"));
return true;
}