Correzioni invio a Proforma
git-svn-id: svn://10.65.10.50/branches/R_10_00@23010 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
868a300efd
commit
c3564c70ed
@ -19,7 +19,6 @@
|
||||
#include <rmoviva.h>
|
||||
#include <multirel.h>
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../cg/cg2103.h"
|
||||
|
||||
bool TTS_mask::apply_filter(const TRecordset& righe) const
|
||||
@ -107,30 +106,38 @@ TRecordset & TTS_campo_sender::movrecset()
|
||||
|
||||
TRecordset & TTS_campo_sender::rmovrecset(const TRecordset & mov)
|
||||
{
|
||||
TRecordset * rmov = get_recset(LF_RMOV);
|
||||
TRecordset* rmov = get_recset(LF_RMOV);
|
||||
|
||||
if (rmov == NULL)
|
||||
rmov = set_recset(LF_RMOV, ::create_recordset("USE RMOV\nFROM NUMREG=#NUMREG\nTO NUMREG=#NUMREG"));
|
||||
|
||||
const TVariant & numreg = mov.get(MOV_NUMREG);
|
||||
|
||||
const TVariant& numreg = mov.get(MOV_NUMREG);
|
||||
if (numreg != rmov->get("#NUMREG"))
|
||||
rmov->set_var("#NUMREG", numreg);
|
||||
return *rmov;
|
||||
|
||||
const int numrig = rmov->items();
|
||||
if (numrig > 80)
|
||||
{
|
||||
TString msg;
|
||||
msg.format(FR("Registrazione con %d righe contabili. (Max. 80)"), numrig);
|
||||
log(2, msg);
|
||||
}
|
||||
|
||||
return *rmov;
|
||||
}
|
||||
|
||||
TRecordset & TTS_campo_sender::rivarecset(const TRecordset & mov)
|
||||
TRecordset& TTS_campo_sender::rivarecset(const TRecordset & mov)
|
||||
{
|
||||
TRecordset * rmoviva = get_recset(LF_RMOVIVA);
|
||||
TRecordset* rmoviva = get_recset(LF_RMOVIVA);
|
||||
|
||||
if (rmoviva == NULL)
|
||||
rmoviva = set_recset(LF_RMOVIVA, ::create_recordset("USE RMOVIVA\nFROM NUMREG=#NUMREG\nTO NUMREG=#NUMREG"));
|
||||
|
||||
const TVariant & numreg = mov.get(MOV_NUMREG);
|
||||
|
||||
const TVariant& numreg = mov.get(MOV_NUMREG);
|
||||
if (numreg != rmoviva->get("#NUMREG"))
|
||||
rmoviva->set_var("#NUMREG", numreg);
|
||||
return *rmoviva;
|
||||
|
||||
return *rmoviva;
|
||||
}
|
||||
|
||||
const TRecordset& TTS_campo_sender::clirecset(const char tipocf, const long codcf)
|
||||
@ -185,8 +192,7 @@ bool TTS_campo_sender::swap_ritsoc(const TRecordset& mov)
|
||||
bool TTS_campo_sender::mov_regolarizzazione(const TRecordset& mov)
|
||||
{
|
||||
const TString& codcaus = mov.get(MOV_CODCAUS).as_string();
|
||||
|
||||
return _caus_regolarizzazione.objptr(codcaus) != NULL;
|
||||
return _caus_regolarizzazione.is_key(codcaus);
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::mov_intra(const TRecordset& mov)
|
||||
@ -243,59 +249,71 @@ TMask & TTS_campo_sender::get_mask()
|
||||
return * _mask;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::find_regolarizzazione(TRecordset& mov)
|
||||
bool TTS_campo_sender::find_regolarizzazione(TRecordset& movset)
|
||||
{
|
||||
bool found = false;
|
||||
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
const TString4 causreg = caus.get(CAU_CODCAUREG);
|
||||
real totdoc = mov.get(MOV_TOTDOC).as_real();
|
||||
const real ritfis = mov.get(MOV_RITFIS).as_real();
|
||||
const real ritsoc = mov.get(MOV_RITSOC).as_real();
|
||||
const TRecnotype pos = movset.current_row(); // Salva la posizione
|
||||
|
||||
if (ritfis != ZERO)
|
||||
const TRectype& mov = ((TISAM_recordset&)movset).cursor()->curr();
|
||||
|
||||
const TString4 causreg = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS), CAU_CODCAUREG);
|
||||
real totdoc = mov.get_real(MOV_TOTDOC);
|
||||
const real ritfis = mov.get_real(MOV_RITFIS);
|
||||
const real ritsoc = mov.get_real(MOV_RITSOC);
|
||||
|
||||
if (!ritfis.is_zero())
|
||||
totdoc += ritfis;
|
||||
if (ritsoc != ZERO)
|
||||
if (!ritsoc.is_zero())
|
||||
{
|
||||
if (swap_ritsoc(mov)) // Somma ritenute sociali con segno
|
||||
if (swap_ritsoc(movset)) // Somma ritenute sociali con segno
|
||||
totdoc -= ritsoc;
|
||||
else
|
||||
totdoc += ritsoc;
|
||||
}
|
||||
if (test_swap(mov))
|
||||
if (test_swap(movset))
|
||||
totdoc = -totdoc;
|
||||
|
||||
TToken_string key(mov.get(MOV_TIPO).as_string());
|
||||
key.add(mov.get(MOV_CODCF).as_int());
|
||||
TToken_string key(mov.get(MOV_TIPO));
|
||||
key.add(mov.get(MOV_CODCF));
|
||||
const TRectype & cli = cache().get(LF_CLIFO, key);
|
||||
const TString16 paiv = cli.get(CLI_PAIV);
|
||||
const TString16 cf = cli.get(CLI_COFI);
|
||||
TEsercizi_contabili esc;
|
||||
const TEsercizio & e = esc.esercizio(esc.date2esc(mov.get(MOV_DATAREG).as_date()));
|
||||
const TDate to(e.fine());
|
||||
const TEsercizio& e = esc.esercizio(esc.date2esc(mov.get_date(MOV_DATAREG)));
|
||||
const TDate dfin = e.fine();
|
||||
|
||||
for (bool ok = mov.move_next(); ok && ! found; ok = mov.move_next())
|
||||
for (bool ok = movset.move_next(); ok && !found; ok = movset.move_next())
|
||||
{
|
||||
const TDate dreg = mov.get(MOV_DATAREG).as_date();
|
||||
if (dreg >to)
|
||||
const TDate dreg = mov.get(MOV_DATAREG);
|
||||
if (dreg > dfin)
|
||||
break;
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
const TString4 cod = caus.get(CAU_CODCAUS);
|
||||
|
||||
found = (causreg.full() && cod == causreg) || (causreg.blank() && (_caus_regolarizzazione.objptr(cod) || caus.get_bool(CAU_SOLOIVA)));
|
||||
found &= (totdoc == mov.get(MOV_TOTDOC).as_real());
|
||||
const TString4 cod = mov.get(MOV_CODCAUS);
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, cod);
|
||||
found = (causreg.full() && cod == causreg) ||
|
||||
(causreg.blank() && (_caus_regolarizzazione.objptr(cod) || caus.get_bool(CAU_SOLOIVA)));
|
||||
if (!found)
|
||||
continue; // causale incoerente
|
||||
|
||||
key = mov.get(MOV_TIPO).as_string();
|
||||
key.add(mov.get(MOV_CODCF).as_int());
|
||||
const real td = mov.get_real(MOV_TOTDOC);
|
||||
found = abs(totdoc - td) < 0.01;
|
||||
if (!found)
|
||||
continue; // Importo incoerente
|
||||
|
||||
key = mov.get(MOV_TIPO);
|
||||
key.add(mov.get(MOV_CODCF));
|
||||
const TRectype & clireg = cache().get(LF_CLIFO, key);
|
||||
const TString16 paivreg = clireg.get(CLI_PAIV);
|
||||
const TString16 cfreg = clireg.get(CLI_COFI);
|
||||
|
||||
found &= ((paiv.full() && paiv == paivreg) || (paiv.blank() && cf == cfreg));
|
||||
if (found)
|
||||
break;
|
||||
found = paiv.full() ? paiv == paivreg : cf == cfreg;
|
||||
if (found) // partita IVA coerente
|
||||
break;
|
||||
}
|
||||
|
||||
movset.move_to(pos);
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
|
18
tc/tc0700.h
18
tc/tc0700.h
@ -28,16 +28,16 @@ public:
|
||||
|
||||
class TTS_campo_sender : public TTS_sender
|
||||
{
|
||||
TTS_mask * _mask;
|
||||
TTS_mask* _mask;
|
||||
TAssoc_array _caus_regolarizzazione;
|
||||
|
||||
protected:
|
||||
virtual TRecordset & movrecset();
|
||||
virtual TRecordset & rmovrecset(const TRecordset & mov);
|
||||
virtual TRecordset & rivarecset(const TRecordset & mov);
|
||||
virtual const TRecordset & clirecset(const char tipocf, const long codcf);
|
||||
virtual TMask & get_mask();
|
||||
virtual const char * mask_name() const {return "tc0700a"; }
|
||||
virtual TRecordset& movrecset();
|
||||
virtual TRecordset& rmovrecset(const TRecordset& mov);
|
||||
virtual TRecordset& rivarecset(const TRecordset& mov);
|
||||
virtual const TRecordset& clirecset(const char tipocf, const long codcf);
|
||||
virtual TMask& get_mask();
|
||||
virtual const char* mask_name() const { return "tc0700a"; }
|
||||
|
||||
protected:
|
||||
virtual bool find_regolarizzazione(TRecordset& mov);
|
||||
@ -50,14 +50,12 @@ protected:
|
||||
virtual long iva11_reverse(const TRecordset & mov);
|
||||
virtual bool regime_agricolo(const TRecordset& mov) const;
|
||||
|
||||
|
||||
public:
|
||||
virtual void postprocess_movs(TRecordset & mov);
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
TTS_campo_sender() : TTS_sender(), _mask(NULL) {}
|
||||
~TTS_campo_sender() {}
|
||||
TTS_campo_sender() : _mask(NULL) {}
|
||||
};
|
||||
|
||||
|
||||
|
@ -563,7 +563,10 @@ void TTS_sender::log(int sev, const char* msg)
|
||||
if (sev > 0 && _tsfile != NULL)
|
||||
{
|
||||
TString m;
|
||||
m << TR("Record") << ' ' << _tsfile->rec_type() << ": " << msg;
|
||||
if (_numreg > 0)
|
||||
m.format("Movimento %6ld ", _numreg);
|
||||
m << TR("Tipo record ") << _tsfile->rec_type();
|
||||
m << " : " << msg;
|
||||
_log->log(sev, m);
|
||||
_errors_logged = true;
|
||||
}
|
||||
@ -603,7 +606,7 @@ bool TTS_sender::add_regol(TRecordset& mov, bool rec_to_add)
|
||||
{
|
||||
rec_to_add = add_optional_rec(mov, rec_to_add);
|
||||
|
||||
TString16 codval = mov.get(MOV_CODVALI).as_string();
|
||||
TString4 codval = mov.get(MOV_CODVALI).as_string();
|
||||
real corrvaluta = mov.get(MOV_CORRVALUTA).as_real();
|
||||
|
||||
if (codval.blank())
|
||||
@ -621,26 +624,24 @@ bool TTS_sender::add_regol(TRecordset& mov, bool rec_to_add)
|
||||
set("TRF-TOTVAL", corrvaluta);
|
||||
}
|
||||
|
||||
const TRecnotype pos = mov.current_row(); // Salva la posizione
|
||||
|
||||
if (find_regolarizzazione(mov))
|
||||
{
|
||||
set("TRF-NUM-AUTOFATT", mov.get(MOV_PROTIVA).as_int());
|
||||
|
||||
const TString16 codice = scod2ricl("TSREG", mov.get(MOV_REG));
|
||||
const TString& codice = scod2ricl("TSREG", mov.get(MOV_REG));
|
||||
const long codreg = atol(codice.mid(1));
|
||||
set("TRF-SERIE-AUTOFATT", codreg);
|
||||
}
|
||||
else
|
||||
{
|
||||
TString msg;
|
||||
if (is_intra)
|
||||
log(2, TR("Manca la regolarizzazione del movimento intra"));
|
||||
msg << TR("Manca la regolarizzazione del movimento intra");
|
||||
else
|
||||
log(2, TR("Manca la regolarizzazione del movimento reverse charge"));
|
||||
msg << TR("Manca la regolarizzazione del movimento reverse charge");
|
||||
log(2, msg);
|
||||
}
|
||||
|
||||
mov.move_to(pos); // Ripristina posizione
|
||||
|
||||
return rec_to_add;
|
||||
}
|
||||
|
||||
@ -754,13 +755,13 @@ void TTS_sender::add_diversi(const TRecordset& mov, const bool moviva)
|
||||
{
|
||||
const real importo = rmov.get(RMV_IMPORTO).as_real();
|
||||
const char sez = rmov.get(RMV_SEZIONE).as_string()[0];
|
||||
TImporto i(sez, importo);
|
||||
TImporto imp(sez, importo);
|
||||
|
||||
i.normalize(seznor);
|
||||
imp.normalize(seznor);
|
||||
field.format("TRF-CONTORIC_%d", k);
|
||||
set(field, contoricl);
|
||||
field.format("TRF-IMP-RIC_%d", k);
|
||||
set(field, i.valore());
|
||||
set(field, imp.valore());
|
||||
k++;
|
||||
}
|
||||
else
|
||||
@ -776,8 +777,8 @@ void TTS_sender::add_diversi(const TRecordset& mov, const bool moviva)
|
||||
switch (tiporiga)
|
||||
{
|
||||
case 'T':
|
||||
first_cli = false;
|
||||
contoclifor = contoricl;
|
||||
first_cli = false;
|
||||
contoclifor = contoricl;
|
||||
case 'I':
|
||||
case 'D':
|
||||
case 'N':
|
||||
@ -1032,12 +1033,16 @@ void TTS_sender::add_datiiva(const TRecordset& mov)
|
||||
item->imposta() += imposta;
|
||||
}
|
||||
|
||||
|
||||
const int numrig = _iva.items();
|
||||
if (numrig > 8)
|
||||
{
|
||||
TString msg;
|
||||
msg.format(FR("Registrazione con %d righe IVA (Max.8)"), numrig);
|
||||
log(2, msg);
|
||||
}
|
||||
|
||||
TString80 field;
|
||||
|
||||
if (_iva.items() > 8)
|
||||
log(2, TR("Registrazione con piu di 8 righe IVA"));
|
||||
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(_iva, o, k, it)
|
||||
{
|
||||
TIVA_item & item = (TIVA_item &) *it;
|
||||
@ -1259,8 +1264,7 @@ void TTS_sender::add_clifor(char tipocf, long codcf)
|
||||
|
||||
void TTS_sender::add_mov(TRecordset& mov)
|
||||
{
|
||||
TString msg; msg << TR("Registrazione n.") << ' ' << mov.get(MOV_NUMREG);
|
||||
log(0, msg);
|
||||
set_log_numreg(mov.get(MOV_NUMREG).as_int());
|
||||
if (new_rec("0"))
|
||||
{
|
||||
char tipocf = mov.get(MOV_TIPO).as_string()[0];
|
||||
@ -1481,36 +1485,37 @@ bool TTS_sender::destroy()
|
||||
|
||||
void TTS_sender::main_loop()
|
||||
{
|
||||
TMask & m = get_mask();
|
||||
TMask& m = get_mask();
|
||||
while (m.run() != K_QUIT)
|
||||
{
|
||||
const char* const title = TR("Invio a TeamSystem");
|
||||
_tsfile = new TTS_textset;
|
||||
_log = new TLog_report(title);
|
||||
_log = new TLog_report(title());
|
||||
_errors_logged = false;
|
||||
|
||||
TRecordset & mov = movrecset();
|
||||
TProgind pi(mov.items(), TR("Scansione movimenti"), true, true);
|
||||
TProgress_monitor pi(mov.items(), TR("Scansione movimenti prima nota"));
|
||||
|
||||
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
if (!mov_regolarizzazione(mov))
|
||||
add_mov(mov);
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
}
|
||||
set_log_numreg(0);
|
||||
|
||||
TReport_book book;
|
||||
book.add(*_log);
|
||||
#ifdef DBG
|
||||
TAS400_report rep(*_tsfile);
|
||||
book.add(rep);
|
||||
#endif
|
||||
//#ifdef DBG
|
||||
// TAS400_report rep(*_tsfile);
|
||||
// book.add(rep);
|
||||
//#endif
|
||||
book.preview();
|
||||
|
||||
bool save = true;
|
||||
if (_errors_logged)
|
||||
{
|
||||
save = yesno_box(TR("Sono stati riscontrati uno o piu' errori:\n"
|
||||
save = noyes_box(TR("Sono stati riscontrati uno o più errori:\n"
|
||||
"Si desidera salvare il file ugualmente?"));
|
||||
}
|
||||
if (save)
|
||||
|
@ -35,6 +35,7 @@ class TTS_sender : public TSkeleton_application
|
||||
TAssoc_array _riclassifica;
|
||||
TTS_textset* _tsfile;
|
||||
TLog_report* _log;
|
||||
long _numreg;
|
||||
bool _errors_logged;
|
||||
TString8 _dittamulti;
|
||||
TAssoc_array _dittemulti;
|
||||
@ -91,7 +92,7 @@ protected:
|
||||
bool add_iva_to_mov(const TRecordset& mov) { return mov_intra(mov) || mov_reverse_charge(mov);}
|
||||
|
||||
protected:
|
||||
virtual bool find_regolarizzazione(TRecordset& mov) {return false;}
|
||||
virtual bool find_regolarizzazione(TRecordset& mov) { return false; }
|
||||
virtual TRecordset & movrecset() pure;
|
||||
virtual TRecordset & rmovrecset(const TRecordset & mov) pure;
|
||||
virtual TRecordset & rivarecset(const TRecordset & mov) pure;
|
||||
@ -100,6 +101,7 @@ protected:
|
||||
virtual TMask & get_mask() pure ;
|
||||
|
||||
public:
|
||||
void set_log_numreg(long n) { _numreg = n; }
|
||||
void log(int sev, const char* msg);
|
||||
virtual bool multi_activity() const { return true; }
|
||||
virtual const TString & dittamulti(const TRecordset& mov) const ;
|
||||
|
149
tc/tc9100.cpp
149
tc/tc9100.cpp
@ -1,29 +1,21 @@
|
||||
#include <applicat.h>
|
||||
#include <defmask.h>
|
||||
#include <filetext.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
|
||||
#include "tc9.h"
|
||||
#include "tc9100a.h"
|
||||
|
||||
#include <pagsca.h>
|
||||
#include <partite.h>
|
||||
|
||||
#include "../cg/cg2101.h"
|
||||
#include "../cg/cg2103.h"
|
||||
#include "../cg/cgsaldac.h"
|
||||
#include <pconti.h>
|
||||
|
||||
#include "../ca/calib01.h"
|
||||
#include "../ca/movana.h"
|
||||
#include "../ca/rmovana.h"
|
||||
|
||||
#include "../ve/velib.h"
|
||||
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
|
||||
|
||||
class TInvioP_file: public TFile_text
|
||||
{
|
||||
protected:
|
||||
@ -34,9 +26,8 @@ public:
|
||||
};
|
||||
|
||||
TInvioP_file::TInvioP_file(const TString& file_name)
|
||||
: TFile_text(file_name, "tc9100a.ini")
|
||||
{
|
||||
}
|
||||
: TFile_text(file_name, "tc9100a.ini")
|
||||
{}
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// MASCHERA
|
||||
@ -560,20 +551,30 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
||||
const TString& zio = conti_importi.conto(k);
|
||||
stringa_grcosot(recrighe, zio);
|
||||
|
||||
const TString tipocf = pn.curr().get(MOV_TIPO);
|
||||
recrighe.add(tipocf, 6); //tipocf
|
||||
char tipocf = pn.curr().get_char(MOV_TIPO);
|
||||
long codcf = pn.curr().get_long(MOV_CODCF);
|
||||
|
||||
if (tipocf < 'C') // Nei pagamenti la prima nota non scrive TIPO e CODCF in testata, per cui...
|
||||
{
|
||||
workstring = recrighe.get(3);
|
||||
workstring << '|' << recrighe.get(4);
|
||||
tipocf = cache().get(LF_PCON, workstring, PCN_TMCF)[0];
|
||||
if (tipocf >= 'C')
|
||||
codcf = atol(recrighe.get(5));
|
||||
}
|
||||
|
||||
//procedura per stringare il codice clifo
|
||||
if (tipocf > ' ')
|
||||
if (tipocf >= 'C' && codcf > 0L)
|
||||
{
|
||||
const long codcf = pn.curr().get_long(MOV_CODCF);
|
||||
TString cf;
|
||||
cf.format("%ld", codcf);
|
||||
recrighe.add(cf, 7); //codcf
|
||||
workstring.cut(0) << tipocf;
|
||||
recrighe.add(workstring, 6); // tipocf
|
||||
workstring.format("%ld", codcf);
|
||||
recrighe.add(workstring, 7); // codcf
|
||||
}
|
||||
else
|
||||
{
|
||||
recrighe.add("", 7); //codcf
|
||||
recrighe.add(EMPTY_STRING, 6); // tipocf
|
||||
recrighe.add(EMPTY_STRING, 7); // codcf
|
||||
}
|
||||
|
||||
recrighe.add(pn.curr().get(RMV_DESCR), 8); //descrizione
|
||||
@ -915,18 +916,12 @@ bool TInvioP::cerca_conto(const TBill& bill, const TAssoc_array& assoc, const ch
|
||||
|
||||
int TInvioP::cerca_costo(const TBill& bill) const
|
||||
{
|
||||
if (cerca_conto(bill, _costi, 'C'))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
return cerca_conto(bill, _costi, 'C') ? 1 : 0;
|
||||
}
|
||||
|
||||
int TInvioP::cerca_pagamento(const TBill& bill) const
|
||||
{
|
||||
if (cerca_conto(bill, _pagamenti, 'P'))
|
||||
return 2;
|
||||
else
|
||||
return 0;
|
||||
return cerca_conto(bill, _pagamenti, 'P') ? 2 : 0;
|
||||
}
|
||||
|
||||
bool TInvioP::cerca_fiscali(const TBill& bill) const
|
||||
@ -978,10 +973,21 @@ void TInvioP::calcola_imposte(const real& importo, const real& imposta,
|
||||
if (rec.get_int("I0") > 0)
|
||||
perc = rec.get_real("R0");
|
||||
}
|
||||
//valori delle varie ive
|
||||
iva_ind = imposta * perc / CENTO;
|
||||
iva_ind.round(2);
|
||||
iva_det = imposta - iva_ind;
|
||||
if (perc > ZERO) // C'è indetraibilità?
|
||||
{
|
||||
//valori delle varie ive
|
||||
if (perc < CENTO)
|
||||
{
|
||||
iva_ind = imposta * perc / CENTO;
|
||||
iva_ind.round(2);
|
||||
iva_det = imposta - iva_ind;
|
||||
}
|
||||
else
|
||||
{
|
||||
iva_ind = imposta;
|
||||
iva_det = ZERO;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1026,9 +1032,9 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec
|
||||
{
|
||||
const TRectype& mov = pn.curr();
|
||||
TCausale caus(mov.get(MOV_CODCAUS));
|
||||
const bool swapt = test_swap(caus, false); // Totale invertito ?
|
||||
const bool swaps = test_swap(caus, true); // Ritenute sociali invertite ?
|
||||
if (swapt ^ swaps) // Somma ritenute sociali con segno
|
||||
const bool swapt = test_swap(caus, false); // Totale invertito ?
|
||||
const bool swaps = test_swap(caus, true); // Ritenute sociali invertite ?
|
||||
if (swapt ^ swaps) // Somma ritenute sociali con segno
|
||||
totpagato -= ritsoc;
|
||||
else
|
||||
totpagato += ritsoc;
|
||||
@ -1051,7 +1057,7 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec
|
||||
//calcola i valori dell'iva detraibile e delle ive indetraibili in diverse percentuali
|
||||
calcola_imposte(importo, iva, codind, iva_det, iva_ind);
|
||||
//se esiste un'iva indetraibile..
|
||||
if (iva_ind != ZERO)
|
||||
if (!iva_ind.is_zero())
|
||||
{
|
||||
iva_indetraibile += iva_ind;
|
||||
imponibile += iva_ind;
|
||||
@ -1223,13 +1229,13 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
lettura_conti(_costi, 'C');
|
||||
lettura_conti(_pagamenti, 'P');
|
||||
|
||||
TProgind pi(cur_items, "Trasferimento pagamenti...", true, true);
|
||||
TProgress_monitor pi(cur_items, TR("Trasferimento pagamenti..."));
|
||||
|
||||
cur.freeze();
|
||||
TRectype& cur_rec = cur.curr();
|
||||
for (cur = 0; cur.pos() < cur_items; ++(cur))
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
if (!pi.set_status(cur.pos()))
|
||||
break;
|
||||
|
||||
//pagamenti saldacontati! vedi l'else per quelli non saldacontati
|
||||
@ -1239,11 +1245,16 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
//attraverso le partite,noto il MOV_NUMREG,riesce a collegarsi al pagamento in LF_PAGSCA
|
||||
TRelation relpart(LF_PARTITE);
|
||||
TRectype da(LF_PARTITE);
|
||||
da.put(PART_NREG, cur_rec.get(MOV_NUMREG));
|
||||
const long numreg = cur_rec.get_long(MOV_NUMREG);
|
||||
da.put(PART_NREG, numreg);
|
||||
#ifdef DBG
|
||||
if (numreg == 91653)
|
||||
int cazzone = 1;
|
||||
#endif
|
||||
TCursor curpart(&relpart, "", 2, &da, &da);
|
||||
const long curpart_items = curpart.items();
|
||||
const TRecnotype curpart_items = curpart.items();
|
||||
//se trova la partita relativa al numreg...
|
||||
if (curpart_items != 0)
|
||||
if (curpart_items > 0)
|
||||
{
|
||||
curpart.freeze();
|
||||
TRectype& curpart_rec = curpart.curr();
|
||||
@ -1262,12 +1273,12 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
TString80 filtro;
|
||||
filtro.format("NRIGP == %d", nrigapart);
|
||||
TCursor curpag(&relpag, filtro, 1, &da, &da);
|
||||
const long curpag_items = curpag.items();
|
||||
const TRecnotype curpag_items = curpag.items();
|
||||
|
||||
real iva_indet = ZERO; //valore dell'eventuale iva indetraibile
|
||||
|
||||
//se trova i pagamenti,che sono alla fin fine cio' che cerca...
|
||||
if (curpag_items != 0)
|
||||
if (curpag_items > 0)
|
||||
{
|
||||
TAssoc_array pagame;
|
||||
pagame.destroy();
|
||||
@ -1307,6 +1318,10 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
_nregpag = cur_rec.get_long(MOV_NUMREG); //registrazione del movimento di pagamento
|
||||
//deve cercare la prima registrazione da cui deriva il pagamento..
|
||||
const long nregfatt = fattura.get_long(PART_NREG);
|
||||
#ifdef DBG
|
||||
if (nregfatt == 91296)
|
||||
int cazzone = 1;
|
||||
#endif
|
||||
_nregcosto = calcola_fattura_originale(nregfatt);
|
||||
_importo = pi->_somma;
|
||||
//acconto/saldo in modo standard
|
||||
@ -1452,7 +1467,7 @@ bool TInvioP::i_proforma_pagamenti()
|
||||
if (items > 0)
|
||||
{
|
||||
if (items > 1)
|
||||
error_box(TR("Esiste piu' di un movimento analitico collegato al movimento contabile %ld"),numregcg);
|
||||
error_box(FR("Esiste più d'un movimento analitico collegato al movimento contabile %ld"), numregcg);
|
||||
|
||||
movana.move_last(); //si posiziona sul record corretto
|
||||
|
||||
@ -1513,21 +1528,20 @@ bool TInvioP::i_proforma_clifor(char tipocf)
|
||||
{
|
||||
TInvioP_file* trasfile = NULL;
|
||||
|
||||
TString progind_string = "Trasferimento ";
|
||||
TString progind_string = TR("Trasferimento ");
|
||||
|
||||
if (tipocf == 'C')
|
||||
{
|
||||
trasfile = apri_file("clienti");
|
||||
progind_string << "clienti";
|
||||
progind_string << TR("clienti");
|
||||
}
|
||||
else
|
||||
{
|
||||
trasfile = apri_file("fornit");
|
||||
progind_string << "fornitori";
|
||||
progind_string << TR("fornitori");
|
||||
}
|
||||
|
||||
TString80 filtro = "";
|
||||
filtro.format("TIPOCF == \"%c\"", tipocf);
|
||||
TString16 filtro; filtro.format("TIPOCF==\"%c\"", tipocf);
|
||||
TRelation rel(LF_CLIFO);
|
||||
rel.add(LF_COMUNI, "STATO==STATOCF|COM==COMCF", 1);
|
||||
TCursor cur(&rel, filtro);
|
||||
@ -1535,21 +1549,20 @@ bool TInvioP::i_proforma_clifor(char tipocf)
|
||||
|
||||
if (cur_items != 0)
|
||||
{
|
||||
progind_string << "...";
|
||||
TProgind pi(cur_items, progind_string, true, true);
|
||||
|
||||
cur.freeze();
|
||||
TRectype& cur_rec = cur.curr();
|
||||
for (cur = 0; cur.pos() < cur_items; ++(cur))
|
||||
{
|
||||
pi.addstatus(1);
|
||||
if (pi.iscancelled())
|
||||
break;
|
||||
|
||||
progind_string << "...";
|
||||
TProgress_monitor pi(cur_items, progind_string);
|
||||
for (cur = 0; cur.pos() < cur_items; ++cur)
|
||||
{
|
||||
TRecord_text rec;
|
||||
rec.set_type("C");
|
||||
trasfile->autoload(rec, cur);
|
||||
trasfile->write(rec);
|
||||
|
||||
if (!pi.add_status())
|
||||
break;
|
||||
}
|
||||
}
|
||||
chiudi_file(trasfile);
|
||||
@ -1573,6 +1586,12 @@ void TInvioP::invio_proforma()
|
||||
|
||||
bool TInvioP::create()
|
||||
{
|
||||
//il programma si puo' usare SOLO se in contabilita' analitica si usa il piano dei conti contabile
|
||||
TConfig& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
if (!use_pdcc)
|
||||
return error_box(TR("Il programma funziona SOLO se in contabilità analitica si usa il piano dei conti contabile"));
|
||||
|
||||
_msk = new TInvioP_mask();
|
||||
_configfile = new TConfig("tc9100a.ini");
|
||||
return TSkeleton_application::create();
|
||||
@ -1582,22 +1601,14 @@ bool TInvioP::destroy()
|
||||
{
|
||||
if (_configfile != NULL)
|
||||
delete _configfile;
|
||||
delete _msk;
|
||||
if (_msk != NULL)
|
||||
delete _msk;
|
||||
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
void TInvioP::main_loop()
|
||||
{
|
||||
//il programma si puo' usare SOLO se in contabilita' analitica si usa il piano dei conti contabile
|
||||
TConfig& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
if (!use_pdcc)
|
||||
{
|
||||
error_box(TR("Programma funzionante SOLO se in contabilita' analitica si usa il piano dei conti contabile"));
|
||||
return;
|
||||
}
|
||||
|
||||
TFilename configname = "tc9100conf.ini"; //file configurazione della maschera
|
||||
configname.custom_path();
|
||||
TConfig configfile(configname);
|
||||
@ -1619,7 +1630,7 @@ void TInvioP::main_loop()
|
||||
int tc9100(int argc, char **argv)
|
||||
{
|
||||
TInvioP a;
|
||||
a.run(argc, argv, "Invio dati contabilità a Proforma");
|
||||
a.run(argc, argv, TR("Invio dati contabilità a Proforma"));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user