Patch level :2.0 partners personalizzazioni
Files correlati :ve7.exe Ricompilazione Demo : [ ] Commento :compilato ve7.exe con le varie personalizzazioni conad,whitesun, teamsystem etc. git-svn-id: svn://10.65.10.50/trunk@11578 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5f557ca6e0
commit
97d26f74be
@ -9,11 +9,15 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
switch (r)
|
switch (r)
|
||||||
{
|
{
|
||||||
|
case 3:
|
||||||
|
ve7400(argc, argv); break; // esportazione bolle CONAD per marpesca
|
||||||
case 2:
|
case 2:
|
||||||
ve7300(argc, argv); break; // stampa riepilogo entrate fornitori
|
ve7300(argc, argv); break; // stampa riepilogo entrate fornitori
|
||||||
|
case 1:
|
||||||
|
ve7200(argc, argv); break; // stampa flussi di cassa per white sun
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
default:
|
||||||
ve7100(argc, argv); break; // contabilizzazione documenti
|
ve7100(argc, argv); break; // trasferimento documenti Team System
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
return 0;
|
return 0;
|
||||||
|
2
ve/ve7.h
2
ve/ve7.h
@ -2,6 +2,8 @@
|
|||||||
#define __VE7_H
|
#define __VE7_H
|
||||||
|
|
||||||
int ve7100 (int, char**);
|
int ve7100 (int, char**);
|
||||||
|
int ve7200 (int, char**);
|
||||||
int ve7300 (int, char**);
|
int ve7300 (int, char**);
|
||||||
|
int ve7400 (int, char**);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,13 +14,15 @@
|
|||||||
|
|
||||||
#include "ve7100a.h"
|
#include "ve7100a.h"
|
||||||
|
|
||||||
|
static char rata_types[] = {'3', '3', '1', '2', '4', '3', '1', '2', '2'};
|
||||||
|
|
||||||
class TContabil_tsys : public TContabilizzazione // velib04b
|
class TContabil_tsys : public TContabilizzazione // velib04b
|
||||||
{
|
{
|
||||||
ofstream * _output_file;
|
ofstream * _output_file;
|
||||||
TConfig * _conf;
|
TConfig * _conf;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual error_type write_all(TDocumento& doc, TMovimentoPN & movimento);
|
virtual error_type write_all(TDocumento& doc, TMovimentoPN_VE & movimento);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void open();
|
void open();
|
||||||
@ -99,6 +101,8 @@ error_type TContabil_tsys::write_all(TDocumento& doc, TMovimentoPN_VE & moviment
|
|||||||
// basta solo ritornare qualcosa di != da no_error, per evitare le operazioni successive
|
// basta solo ritornare qualcosa di != da no_error, per evitare le operazioni successive
|
||||||
// a write_all
|
// a write_all
|
||||||
TString row(4500);
|
TString row(4500);
|
||||||
|
const TString spaces(2500, ' ');
|
||||||
|
const TString zeros(256, '0');
|
||||||
TRectype& head = movimento.lfile().curr();
|
TRectype& head = movimento.lfile().curr();
|
||||||
const int iva_items = movimento.iva_items();
|
const int iva_items = movimento.iva_items();
|
||||||
const int cg_items = movimento.cg_items();
|
const int cg_items = movimento.cg_items();
|
||||||
@ -367,11 +371,11 @@ error_type TContabil_tsys::write_all(TDocumento& doc, TMovimentoPN_VE & moviment
|
|||||||
real imprata = pag.importo_rata(i);
|
real imprata = pag.importo_rata(i);
|
||||||
format_signed(imprata * molt, 12, work);
|
format_signed(imprata * molt, 12, work);
|
||||||
if (work[11] == '-')
|
if (work[11] == '-')
|
||||||
work[11] == '+';
|
work[11] = '+';
|
||||||
row << work;
|
row << work;
|
||||||
format_signed(doc.bolli(imprata, AUTO_DECIMALS, _netto) * molt, 12, work);
|
format_signed(doc.bolli(imprata, AUTO_DECIMALS, _netto) * molt, 12, work);
|
||||||
if (work[11] == '-')
|
if (work[11] == '-')
|
||||||
work[11] == '+';
|
work[11] = '+';
|
||||||
row << work;
|
row << work;
|
||||||
check_len("Riba", row, 24);
|
check_len("Riba", row, 24);
|
||||||
static char tipocf = doc.get_char(DOC_TIPOCF);
|
static char tipocf = doc.get_char(DOC_TIPOCF);
|
||||||
@ -548,7 +552,7 @@ void TContabil_tsys_app::build_num_sheet()
|
|||||||
|
|
||||||
bool found = FALSE;
|
bool found = FALSE;
|
||||||
for (int i = _tipi_doc.last(); !found && i >= 0; i--)
|
for (int i = _tipi_doc.last(); !found && i >= 0; i--)
|
||||||
found |= z.find(((TToken_string &)_tipi_doc[i]).get(0)) >= 0;
|
found |= (z.find(((TToken_string &)_tipi_doc[i]).get(0)) >= 0);
|
||||||
if (found)
|
if (found)
|
||||||
_num_sheet->enable_row(pos);
|
_num_sheet->enable_row(pos);
|
||||||
else
|
else
|
||||||
|
527
ve/ve7200.cpp
527
ve/ve7200.cpp
@ -1,13 +1,8 @@
|
|||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <assoc.h>
|
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <currency.h>
|
|
||||||
#include <msksheet.h>
|
|
||||||
#include <printer.h>
|
#include <printer.h>
|
||||||
#include <recarray.h>
|
#include <progind.h>
|
||||||
#include <relation.h>
|
|
||||||
#include <sort.h>
|
#include <sort.h>
|
||||||
|
|
||||||
#include "velib.h"
|
#include "velib.h"
|
||||||
|
|
||||||
#include "ve7.h"
|
#include "ve7.h"
|
||||||
@ -38,8 +33,8 @@ public:
|
|||||||
|
|
||||||
void TDocumentoOrdine::scadord_recalc()
|
void TDocumentoOrdine::scadord_recalc()
|
||||||
{
|
{
|
||||||
TAssoc_array scadenze;
|
TAssoc_array scadenze;
|
||||||
scadenze.destroy();
|
scadenze.destroy();
|
||||||
_scadenze_array.destroy();
|
_scadenze_array.destroy();
|
||||||
_scadenze_current = -1;
|
_scadenze_current = -1;
|
||||||
TRectype& testadoc = head();
|
TRectype& testadoc = head();
|
||||||
@ -50,59 +45,59 @@ void TDocumentoOrdine::scadord_recalc()
|
|||||||
const TRiga_documento& rigadoc = physical_row(i+1);
|
const TRiga_documento& rigadoc = physical_row(i+1);
|
||||||
bool evasa = rigadoc.get_bool(RDOC_RIGAEVASA);
|
bool evasa = rigadoc.get_bool(RDOC_RIGAEVASA);
|
||||||
if (!evasa)
|
if (!evasa)
|
||||||
evasa = (rigadoc.qtaresidua() <= 0);
|
evasa = (rigadoc.qtaresidua() <= 0);
|
||||||
if (!evasa)
|
if (!evasa)
|
||||||
{
|
{
|
||||||
TDate datacons = rigadoc.get_date(RDOC_DATACONS);
|
TDate datacons = rigadoc.get_date(RDOC_DATACONS);
|
||||||
if (!datacons.ok())
|
if (!datacons.ok())
|
||||||
datacons = testadoc.get_date(DOC_DATACONS);
|
datacons = testadoc.get_date(DOC_DATACONS);
|
||||||
TString16 codval = valuta();
|
TString16 codval = valuta();
|
||||||
real totimponibili = rigadoc.valore(FALSE, AUTO_DECIMALS);
|
real totimponibili = rigadoc.valore(FALSE, AUTO_DECIMALS);
|
||||||
real totimposte = rigadoc.iva().imposta(totimponibili, AUTO_DECIMALS, codval);
|
real totimposte = rigadoc.iva().imposta(totimponibili, AUTO_DECIMALS, codval);
|
||||||
real totspese = ZERO;
|
real totspese = ZERO;
|
||||||
const bool is_in_valuta = in_valuta();
|
const bool is_in_valuta = in_valuta();
|
||||||
if (is_in_valuta)
|
if (is_in_valuta)
|
||||||
{
|
{
|
||||||
const real change(cambio());
|
const real change(cambio());
|
||||||
TCurrency_documento val1(totimponibili, *this); val1.change_to_firm_val();
|
TCurrency_documento val1(totimponibili, *this); val1.change_to_firm_val();
|
||||||
TCurrency_documento val2(totimposte, *this); val2.change_to_firm_val();
|
TCurrency_documento val2(totimposte, *this); val2.change_to_firm_val();
|
||||||
TCurrency_documento val3(totspese, *this); val3.change_to_firm_val();
|
TCurrency_documento val3(totspese, *this); val3.change_to_firm_val();
|
||||||
pag.set_total_valuta(totimponibili, totimposte, totspese, change, val1.get_num(), val2.get_num() ,val3.get_num(), codval);
|
pag.set_total_valuta(totimponibili, totimposte, totspese, change, val1.get_num(), val2.get_num() ,val3.get_num(), codval);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pag.set_total(totimponibili, totimposte, totspese);
|
pag.set_total(totimponibili, totimposte, totspese);
|
||||||
pag.set_inizio(datacons);
|
pag.set_inizio(datacons);
|
||||||
pag.set_rate_auto();
|
pag.set_rate_auto();
|
||||||
const int numrate = pag.n_rate( );
|
const int numrate = pag.n_rate( );
|
||||||
real rata;
|
real rata;
|
||||||
for (int i = 0; i< numrate; i++)
|
for (int i = 0; i< numrate; i++)
|
||||||
{
|
{
|
||||||
rata = pag.importo_rata(i, is_in_valuta);
|
rata = pag.importo_rata(i, is_in_valuta);
|
||||||
const char* datastringa = (const char*) pag.data_rata(i).string();
|
const char* datastringa = (const char*) pag.data_rata(i).string();
|
||||||
if (scadenze.is_key(datastringa))
|
if (scadenze.is_key(datastringa))
|
||||||
{
|
{
|
||||||
real& valore = (real&)scadenze[datastringa];
|
real& valore = (real&)scadenze[datastringa];
|
||||||
valore+=rata;
|
valore+=rata;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
real* oggetto = new real(rata);
|
real* oggetto = new real(rata);
|
||||||
scadenze.add(datastringa,(TObject*)oggetto);
|
scadenze.add(datastringa,(TObject*)oggetto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scadenze.restart();
|
scadenze.restart();
|
||||||
real* c;
|
real* c;
|
||||||
for (c = (real*) scadenze.first_item(); c != NULL; c = (real*) scadenze.succ_item())
|
for (c = (real*) scadenze.first_item(); c != NULL; c = (real*) scadenze.succ_item())
|
||||||
{
|
{
|
||||||
const char* datastringa = scadenze.get_hashobj()->key();
|
const char* datastringa = scadenze.get_hashobj()->key();
|
||||||
TToken_string t;
|
TToken_string t;
|
||||||
t.add(datastringa);
|
t.add(datastringa);
|
||||||
real importo(*c);
|
real importo(*c);
|
||||||
t.add(importo.string());
|
t.add(importo.string());
|
||||||
_scadenze_array.add(t);
|
_scadenze_array.add(t);
|
||||||
}
|
}
|
||||||
if (_scadenze_array.items() > 0)
|
if (_scadenze_array.items() > 0)
|
||||||
_scadenze_current++;
|
_scadenze_current++;
|
||||||
@ -206,25 +201,25 @@ bool TFlussi_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
|
|
||||||
class TStampaFlussiCassa : public TSkeleton_application
|
class TStampaFlussiCassa : public TSkeleton_application
|
||||||
{
|
{
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
struct struct_scadenza
|
struct struct_scadenza
|
||||||
{
|
{
|
||||||
char data[9];
|
char data[9];
|
||||||
real importo;
|
real importo;
|
||||||
char descrizione[80];
|
char descrizione[80];
|
||||||
char estremidoc[45];
|
char estremidoc[45];
|
||||||
char statodoc;
|
char statodoc;
|
||||||
};
|
};
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TCursor* _cur;
|
TCursor* _cur;
|
||||||
TFlussi_mask* _msk;
|
TFlussi_mask* _msk;
|
||||||
TFlussi_form* _form;
|
TFlussi_form* _form;
|
||||||
TSort* _sort;
|
TSort* _sort;
|
||||||
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
|
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
|
||||||
TDate _datascadi, _datascadf;
|
TDate _datascadi, _datascadf;
|
||||||
real _totale; // totale a partire da saldo iniziale
|
real _totale; // totale a partire da saldo iniziale
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool create(void);
|
virtual bool create(void);
|
||||||
@ -246,12 +241,12 @@ public:
|
|||||||
|
|
||||||
bool TStampaFlussiCassa::create()
|
bool TStampaFlussiCassa::create()
|
||||||
{
|
{
|
||||||
open_files(LF_DOC, LF_RIGHEDOC, LF_SCADENZE, LF_CLIFO, LF_CFVEN, 0);
|
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_PARTITE, LF_SCADENZE, LF_PAGSCA, LF_CLIFO, LF_CFVEN, 0);
|
||||||
_rel = new TRelation(LF_SCADENZE);
|
_rel = new TRelation(LF_SCADENZE);
|
||||||
_rel->add(LF_PARTITE,"TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO=ANNO|NUMPART==NUMPART",1,0);
|
_rel->add(LF_PARTITE,"TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO=ANNO|NUMPART==NUMPART",1,0);
|
||||||
_rel->add(LF_PAGSCA, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA|NRATA==NRATA");
|
_rel->add(LF_PAGSCA, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA|NRATA==NRATA");
|
||||||
|
|
||||||
_cur = new TCursor(_rel, "PAGATA != \"X\"", 2);
|
_cur = new TCursor(_rel, "PAGATA!=\"X\"", 2);
|
||||||
_msk = new TFlussi_mask();
|
_msk = new TFlussi_mask();
|
||||||
_form = new TFlussi_form();
|
_form = new TFlussi_form();
|
||||||
_sort = new TSort(sizeof(struct_scadenza));
|
_sort = new TSort(sizeof(struct_scadenza));
|
||||||
@ -261,8 +256,8 @@ bool TStampaFlussiCassa::create()
|
|||||||
|
|
||||||
bool TStampaFlussiCassa::destroy()
|
bool TStampaFlussiCassa::destroy()
|
||||||
{
|
{
|
||||||
delete _sort;
|
delete _sort;
|
||||||
delete _form;
|
delete _form;
|
||||||
delete _msk;
|
delete _msk;
|
||||||
delete _cur;
|
delete _cur;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
@ -276,17 +271,17 @@ void TStampaFlussiCassa::main_loop()
|
|||||||
_datascadi = _msk->get_date(F_DATASCADI);
|
_datascadi = _msk->get_date(F_DATASCADI);
|
||||||
_datascadf = _msk->get_date(F_DATASCADF);
|
_datascadf = _msk->get_date(F_DATASCADF);
|
||||||
_totale = _msk->get_real(F_SALDOINI);
|
_totale = _msk->get_real(F_SALDOINI);
|
||||||
_sort->init(); // inizializza il sort
|
_sort->init(); // inizializza il sort
|
||||||
elabora_scad(); // cominciamo dalle scadenze
|
elabora_scad(); // cominciamo dalle scadenze
|
||||||
elabora_doc(); // continuiamo con i documenti
|
elabora_doc(); // continuiamo con i documenti
|
||||||
_sort->endsort(); // fine sort
|
_sort->endsort(); // fine sort
|
||||||
stampa_flussi(); // stampiamo il tutto
|
stampa_flussi(); // stampiamo il tutto
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampaFlussiCassa::stampa_flussi()
|
void TStampaFlussiCassa::stampa_flussi()
|
||||||
{
|
{
|
||||||
const int reclen = sizeof(struct_scadenza);
|
const int reclen = sizeof(struct_scadenza);
|
||||||
TString256 result;
|
TString256 result;
|
||||||
printer().open();
|
printer().open();
|
||||||
print_header();
|
print_header();
|
||||||
@ -297,22 +292,22 @@ void TStampaFlussiCassa::stampa_flussi()
|
|||||||
|
|
||||||
if (_totale > 0)
|
if (_totale > 0)
|
||||||
{
|
{
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOD).set(_totale.string());
|
_form->find_field('B', odd_page, FF_B_IMPORTOD).set(_totale.string());
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOA).set("");
|
_form->find_field('B', odd_page, FF_B_IMPORTOA).set("");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOA).set(_totale.string());
|
_form->find_field('B', odd_page, FF_B_IMPORTOA).set(_totale.string());
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOD).set("");
|
_form->find_field('B', odd_page, FF_B_IMPORTOD).set("");
|
||||||
}
|
}
|
||||||
_form->find_field('B', odd_page, FF_B_DESCRIZIONE).set("Saldo iniziale");
|
_form->find_field('B', odd_page, FF_B_DESCRIZIONE).set("Saldo iniziale");
|
||||||
_form->find_field('B', odd_page, FF_B_DESCRIZIONE).set("Saldo iniziale");
|
_form->find_field('B', odd_page, FF_B_DESCRIZIONE).set("Saldo iniziale");
|
||||||
|
|
||||||
section.update();
|
section.update();
|
||||||
|
|
||||||
for (word i = 0; i < section.height(); i++)
|
for (word i = 0; i < section.height(); i++)
|
||||||
{
|
{
|
||||||
TPrintrow row = section.row(i);
|
TPrintrow row = section.row(i);
|
||||||
printer().print(section.row(i));
|
printer().print(section.row(i));
|
||||||
}
|
}
|
||||||
struct_scadenza* riga;
|
struct_scadenza* riga;
|
||||||
@ -320,7 +315,7 @@ void TStampaFlussiCassa::stampa_flussi()
|
|||||||
while (riga != NULL)
|
while (riga != NULL)
|
||||||
{
|
{
|
||||||
print_line(riga);
|
print_line(riga);
|
||||||
riga = (struct_scadenza*) _sort->retrieve();
|
riga = (struct_scadenza*) _sort->retrieve();
|
||||||
}
|
}
|
||||||
printer().close();
|
printer().close();
|
||||||
}
|
}
|
||||||
@ -344,197 +339,201 @@ void TStampaFlussiCassa::elabora_scad()
|
|||||||
TRectype& recscad = _cur->curr();
|
TRectype& recscad = _cur->curr();
|
||||||
const TRectype& recpartita = _cur->curr(LF_PARTITE);
|
const TRectype& recpartita = _cur->curr(LF_PARTITE);
|
||||||
|
|
||||||
const long items = _cur->items();
|
const TRecnotype items = _cur->items();
|
||||||
for (*_cur=0; _cur->pos()<items; ++(*_cur))
|
_cur->freeze();
|
||||||
{
|
TProgind pi(items, "Elaboarzione scadenze", FALSE, TRUE);
|
||||||
struct_scadenza riga_scadenza;
|
for (*_cur=0; _cur->pos()<items; ++(*_cur))
|
||||||
TPartita partita(recpartita);
|
{
|
||||||
const int nriga = recscad.get_int(SCAD_NRIGA);
|
pi.addstatus(1);
|
||||||
const int nrata = recscad.get_int(SCAD_NRATA);
|
struct_scadenza riga_scadenza;
|
||||||
TRiga_scadenze rigascadenze = partita.rata(nriga, nrata);
|
TPartita partita(recpartita);
|
||||||
TDate datascad = recscad.get_date(SCAD_DATASCAD);
|
const int nriga = recscad.get_int(SCAD_NRIGA);
|
||||||
long data = datascad.date2ansi();
|
const int nrata = recscad.get_int(SCAD_NRATA);
|
||||||
|
TRiga_scadenze rigascadenze = partita.rata(nriga, nrata);
|
||||||
|
TDate datascad = recscad.get_date(SCAD_DATASCAD);
|
||||||
|
long data = datascad.date2ansi();
|
||||||
|
|
||||||
TImporto importo = rigascadenze.residuo(FALSE);
|
TImporto importo = rigascadenze.residuo(FALSE);
|
||||||
importo.normalize('D');
|
importo.normalize('D');
|
||||||
TString16 codice;
|
TString16 codice;
|
||||||
codice.cut(0);
|
codice.cut(0);
|
||||||
codice << recscad.get(SCAD_TIPOCF);
|
codice << recscad.get(SCAD_TIPOCF);
|
||||||
codice << '|' << recscad.get(SCAD_SOTTOCONTO);
|
codice << '|' << recscad.get(SCAD_SOTTOCONTO);
|
||||||
TString80 descr = cache().get(LF_CLIFO, codice, CLI_RAGSOC);
|
TString80 descr = cache().get(LF_CLIFO, codice, CLI_RAGSOC);
|
||||||
sprintf(riga_scadenza.data, "%8ld", data);
|
sprintf(riga_scadenza.data, "%8ld", data);
|
||||||
riga_scadenza.importo = importo.valore();
|
riga_scadenza.importo = importo.valore();
|
||||||
strcpy(riga_scadenza.descrizione, descr);
|
strcpy(riga_scadenza.descrizione, descr);
|
||||||
TString80 estremi = "Doc. ";
|
TString80 estremi = "Doc. ";
|
||||||
estremi << recpartita.get(PART_NUMDOC);
|
estremi << recpartita.get(PART_NUMDOC);
|
||||||
estremi << " del " << recpartita.get(PART_DATADOC);
|
estremi << " del " << recpartita.get(PART_DATADOC);
|
||||||
estremi << " - Prot. " << recpartita.get(PART_PROTIVA);
|
estremi << " - Prot. " << recpartita.get(PART_PROTIVA);
|
||||||
strcpy(riga_scadenza.estremidoc, estremi);
|
strcpy(riga_scadenza.estremidoc, estremi);
|
||||||
riga_scadenza.statodoc = ' ';
|
riga_scadenza.statodoc = ' ';
|
||||||
const char* record = (const char*) &riga_scadenza;
|
const char* record = (const char*) &riga_scadenza;
|
||||||
_sort->sort(record);
|
_sort->sort(record);
|
||||||
}
|
}
|
||||||
|
_cur->freeze(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampaFlussiCassa::elabora_doc()
|
void TStampaFlussiCassa::elabora_doc()
|
||||||
{
|
{
|
||||||
TSheet_field& sheet = _msk->sfield(F_SHEETDOC);
|
TSheet_field& sheet = _msk->sfield(F_SHEETDOC);
|
||||||
|
const int items = sheet.items();
|
||||||
TRelation doc_rel(LF_DOC);
|
|
||||||
TRectype da(LF_DOC);
|
|
||||||
TRectype a(LF_DOC);
|
|
||||||
const long items = sheet.items();
|
|
||||||
if (items > 0)
|
if (items > 0)
|
||||||
{
|
{
|
||||||
int year_from = _msk->get_int(F_ESERCIZIO);
|
TRelation doc_rel(LF_DOC);
|
||||||
int year_to = _datascadf.year();
|
TRectype da(LF_DOC);
|
||||||
bool ok = TRUE;
|
TRectype a(LF_DOC);
|
||||||
TString16 codnum, tipodoc;
|
|
||||||
bool aresiduo;
|
|
||||||
char dastato, astato;
|
|
||||||
TString filt_expr;
|
|
||||||
TDate dataini(1, 1, year_from);
|
|
||||||
da.put("DATADOC", dataini);
|
|
||||||
da.put("PROVV", "D");
|
|
||||||
da.put("ANNO", year_from);
|
|
||||||
a.put("DATADOC", _datascadf);
|
|
||||||
a.put("PROVV", "D");
|
|
||||||
a.put("ANNO", year_to);
|
|
||||||
filt_expr << "(";
|
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, row)
|
|
||||||
{
|
|
||||||
codnum = row->get(0);
|
|
||||||
tipodoc = row->get(2);
|
|
||||||
dastato = row->get_char(4);
|
|
||||||
astato = row->get_char(5);
|
|
||||||
aresiduo = row->get_char(6);
|
|
||||||
if (codnum.not_empty() && tipodoc.not_empty())
|
|
||||||
{
|
|
||||||
filt_expr << "((CODNUM=\"";
|
|
||||||
filt_expr << codnum << "\")&&";
|
|
||||||
filt_expr << "(TIPODOC=\"";
|
|
||||||
filt_expr << tipodoc << "\")";
|
|
||||||
if (dastato != ' ')
|
|
||||||
filt_expr << " &&(STATO>=\"" << dastato << "\")";
|
|
||||||
if (astato != ' ')
|
|
||||||
filt_expr << "&&(STATO<=\"" << astato << "\")";
|
|
||||||
filt_expr << ")||";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
filt_expr.rtrim(2);
|
|
||||||
filt_expr << ")";
|
|
||||||
|
|
||||||
TCursor doc_cur(&doc_rel,filt_expr,3,&da,&a);
|
int year_from = _msk->get_int(F_ESERCIZIO);
|
||||||
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
int year_to = _datascadf.year();
|
||||||
if (cur_items != 0)
|
bool ok = TRUE;
|
||||||
{
|
TString16 codnum, tipodoc;
|
||||||
doc_cur.freeze();
|
bool aresiduo;
|
||||||
const TRectype& cur_rec = doc_cur.curr();
|
char dastato, astato;
|
||||||
for (doc_cur = 0; doc_cur.pos() < cur_items; ++doc_cur)
|
TString filt_expr;
|
||||||
{
|
TDate dataini(1, 1, year_from);
|
||||||
TDocumento documento(cur_rec);
|
da.put("DATADOC", dataini);
|
||||||
if (documento.is_ordine())
|
da.put("PROVV", "D");
|
||||||
{
|
da.put("ANNO", year_from);
|
||||||
TDocumentoOrdine* doc = new TDocumentoOrdine;
|
a.put("DATADOC", _datascadf);
|
||||||
if (doc->read(doc_cur.curr()) == NOERR) // legge il documento
|
a.put("PROVV", "D");
|
||||||
{
|
a.put("ANNO", year_to);
|
||||||
doc->scadord_recalc();
|
filt_expr << "(";
|
||||||
for (int i=0;i < doc->scadord_items(); i++)
|
FOR_EACH_SHEET_ROW(sheet, r, row)
|
||||||
{
|
{
|
||||||
struct_scadenza riga_scadenza;
|
codnum = row->get(0);
|
||||||
TDate datascad = doc->scadord_get("DATA");
|
tipodoc = row->get(2);
|
||||||
if (datascad >= _datascadi && datascad <= _datascadf)
|
dastato = row->get_char(4);
|
||||||
{
|
astato = row->get_char(5);
|
||||||
long data = datascad.date2ansi();
|
aresiduo = row->get_char(6) > ' ';
|
||||||
real importoscad = doc->scadord_get("IMPORTO");
|
if (codnum.not_empty() && tipodoc.not_empty())
|
||||||
const char sez = doc->tipocf();
|
{
|
||||||
TImporto importo((sez=='C' ? 'D' : 'A'), importoscad);
|
filt_expr << "((CODNUM=\"";
|
||||||
importo.normalize('D');
|
filt_expr << codnum << "\")&&";
|
||||||
TString16 codice;
|
filt_expr << "(TIPODOC=\"";
|
||||||
codice.cut(0);
|
filt_expr << tipodoc << "\")";
|
||||||
codice << doc->tipocf();
|
if (dastato != ' ')
|
||||||
codice << '|' << doc->codcf();
|
filt_expr << " &&(STATO>=\"" << dastato << "\")";
|
||||||
TString80 descr = cache().get(LF_CLIFO, codice, CLI_RAGSOC);
|
if (astato != ' ')
|
||||||
TString80 estremi = doc->tipo().codice();
|
filt_expr << "&&(STATO<=\"" << astato << "\")";
|
||||||
estremi << " n. " << doc->numero();
|
filt_expr << ")||";
|
||||||
estremi << " del " << doc->data().string();
|
}
|
||||||
const char stato = doc->stato();
|
}
|
||||||
sprintf(riga_scadenza.data, "%8ld", data);
|
filt_expr.rtrim(2);
|
||||||
riga_scadenza.importo = importo.valore();
|
filt_expr << ")";
|
||||||
strcpy(riga_scadenza.descrizione, descr);
|
|
||||||
strcpy(riga_scadenza.estremidoc, estremi);
|
TCursor doc_cur(&doc_rel,filt_expr,3,&da,&a);
|
||||||
riga_scadenza.statodoc = stato;
|
const TRecnotype cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
||||||
const char* record = (const char*) &riga_scadenza;
|
if (cur_items != 0)
|
||||||
_sort->sort(record);
|
{
|
||||||
}
|
doc_cur.freeze();
|
||||||
doc->scadord_set_next();
|
const TRectype& cur_rec = doc_cur.curr();
|
||||||
}
|
TProgind pi(cur_items, "Elaborazione documenti", FALSE, TRUE);
|
||||||
}
|
for (doc_cur = 0; doc_cur.pos() < cur_items; ++doc_cur)
|
||||||
else
|
{
|
||||||
delete doc;
|
pi.addstatus(1);
|
||||||
}
|
TDocumento documento(cur_rec);
|
||||||
else
|
if (documento.is_ordine())
|
||||||
{
|
{
|
||||||
TDocumentoEsteso* doc = new TDocumentoEsteso;
|
TDocumentoOrdine* doc = new TDocumentoOrdine;
|
||||||
if (doc->read(doc_cur.curr()) == NOERR) // legge il documento
|
if (doc->read(doc_cur.curr()) == NOERR) // legge il documento
|
||||||
{
|
{
|
||||||
doc->scadenze_recalc();
|
doc->scadord_recalc();
|
||||||
for (int i=0;i < doc->scadenze_items(); i++)
|
for (int i=0;i < doc->scadord_items(); i++)
|
||||||
{
|
{
|
||||||
struct_scadenza riga_scadenza;
|
struct_scadenza riga_scadenza;
|
||||||
TDate datascad = doc->scadenze_get("DATA");
|
TDate datascad = doc->scadord_get("DATA");
|
||||||
if (datascad >= _datascadi && datascad <= _datascadf)
|
if (datascad >= _datascadi && datascad <= _datascadf)
|
||||||
{
|
{
|
||||||
long data = datascad.date2ansi();
|
long data = datascad.date2ansi();
|
||||||
real importoscad = doc->scadenze_get("IMPORTO");
|
real importoscad = doc->scadord_get("IMPORTO");
|
||||||
const char sez = doc->tipocf();
|
const char sez = doc->tipocf();
|
||||||
TImporto importo((sez=='C' ? 'D' : 'A'), importoscad);
|
TImporto importo((sez=='C' ? 'D' : 'A'), importoscad);
|
||||||
importo.normalize('D');
|
importo.normalize('D');
|
||||||
TString16 codice;
|
TString16 codice;
|
||||||
codice.cut(0);
|
codice.cut(0);
|
||||||
codice << doc->tipocf();
|
codice << doc->tipocf();
|
||||||
codice << '|' << doc->codcf();
|
codice << '|' << doc->codcf();
|
||||||
TString80 descr = cache().get(LF_CLIFO, codice, CLI_RAGSOC);
|
TString80 descr = cache().get(LF_CLIFO, codice, CLI_RAGSOC);
|
||||||
TString80 estremi = doc->tipo().codice();
|
TString80 estremi = doc->tipo().codice();
|
||||||
estremi << " n. " << doc->numero();
|
estremi << " n. " << doc->numero();
|
||||||
estremi << " del " << doc->data().string();
|
estremi << " del " << doc->data().string();
|
||||||
const char stato = doc->stato();
|
const char stato = doc->stato();
|
||||||
sprintf(riga_scadenza.data, "%8ld", data);
|
sprintf(riga_scadenza.data, "%8ld", data);
|
||||||
riga_scadenza.importo = importo.valore();
|
riga_scadenza.importo = importo.valore();
|
||||||
strcpy(riga_scadenza.descrizione, descr);
|
strcpy(riga_scadenza.descrizione, descr);
|
||||||
strcpy(riga_scadenza.estremidoc, estremi);
|
strcpy(riga_scadenza.estremidoc, estremi);
|
||||||
riga_scadenza.statodoc = stato;
|
riga_scadenza.statodoc = stato;
|
||||||
const char* record = (const char*) &riga_scadenza;
|
const char* record = (const char*) &riga_scadenza;
|
||||||
_sort->sort(record);
|
_sort->sort(record);
|
||||||
}
|
}
|
||||||
doc->scadenze_set_next();
|
doc->scadord_set_next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
delete doc;
|
||||||
delete doc;
|
}
|
||||||
}
|
else
|
||||||
}
|
{
|
||||||
}
|
TDocumentoEsteso* doc = new TDocumentoEsteso;
|
||||||
}
|
if (doc->read(doc_cur.curr()) == NOERR) // legge il documento
|
||||||
|
{
|
||||||
|
doc->scadenze_recalc();
|
||||||
|
for (int i=0;i < doc->scadenze_items(); i++)
|
||||||
|
{
|
||||||
|
struct_scadenza riga_scadenza;
|
||||||
|
TDate datascad = doc->scadenze_get("DATA");
|
||||||
|
if (datascad >= _datascadi && datascad <= _datascadf)
|
||||||
|
{
|
||||||
|
long data = datascad.date2ansi();
|
||||||
|
real importoscad = doc->scadenze_get("IMPORTO");
|
||||||
|
const char sez = doc->tipocf();
|
||||||
|
TImporto importo((sez=='C' ? 'D' : 'A'), importoscad);
|
||||||
|
importo.normalize('D');
|
||||||
|
TString16 codice;
|
||||||
|
codice.cut(0);
|
||||||
|
codice << doc->tipocf();
|
||||||
|
codice << '|' << doc->codcf();
|
||||||
|
TString80 descr = cache().get(LF_CLIFO, codice, CLI_RAGSOC);
|
||||||
|
TString80 estremi = doc->tipo().codice();
|
||||||
|
estremi << " n. " << doc->numero();
|
||||||
|
estremi << " del " << doc->data().string();
|
||||||
|
const char stato = doc->stato();
|
||||||
|
sprintf(riga_scadenza.data, "%8ld", data);
|
||||||
|
riga_scadenza.importo = importo.valore();
|
||||||
|
strcpy(riga_scadenza.descrizione, descr);
|
||||||
|
strcpy(riga_scadenza.estremidoc, estremi);
|
||||||
|
riga_scadenza.statodoc = stato;
|
||||||
|
const char* record = (const char*) &riga_scadenza;
|
||||||
|
_sort->sort(record);
|
||||||
|
}
|
||||||
|
doc->scadenze_set_next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete doc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampaFlussiCassa::print_line(struct_scadenza* riga)
|
void TStampaFlussiCassa::print_line(struct_scadenza* riga)
|
||||||
{
|
{
|
||||||
const long scadenza = atol(riga->data);
|
const long scadenza = atol(riga->data);
|
||||||
const TDate datascad(scadenza);
|
const TDate datascad(scadenza);
|
||||||
const real importo = riga->importo;
|
const real importo = riga->importo;
|
||||||
TString80 descr = riga->descrizione;
|
TString80 descr = riga->descrizione;
|
||||||
descr.trim();
|
descr.trim();
|
||||||
_form->find_field('B', odd_page, FF_B_DESCRIZIONE).set(descr);
|
_form->find_field('B', odd_page, FF_B_DESCRIZIONE).set(descr);
|
||||||
if (importo.sign() >=0)
|
if (importo.sign() >=0)
|
||||||
{
|
{
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOD).set(importo.string());
|
_form->find_field('B', odd_page, FF_B_IMPORTOD).set(importo.string());
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOA).set("");
|
_form->find_field('B', odd_page, FF_B_IMPORTOA).set("");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOA).set(importo.string());
|
_form->find_field('B', odd_page, FF_B_IMPORTOA).set(importo.string());
|
||||||
_form->find_field('B', odd_page, FF_B_IMPORTOD).set("");
|
_form->find_field('B', odd_page, FF_B_IMPORTOD).set("");
|
||||||
}
|
}
|
||||||
TString80 estremi = riga->estremidoc;
|
TString80 estremi = riga->estremidoc;
|
||||||
_form->find_field('B', odd_page, FF_B_ESTREMIDOC).set(estremi);
|
_form->find_field('B', odd_page, FF_B_ESTREMIDOC).set(estremi);
|
||||||
@ -549,7 +548,7 @@ void TStampaFlussiCassa::print_line(struct_scadenza* riga)
|
|||||||
section.update();
|
section.update();
|
||||||
for (word i = 0; i < section.height(); i++)
|
for (word i = 0; i < section.height(); i++)
|
||||||
{
|
{
|
||||||
TPrintrow row = section.row(i);
|
TPrintrow row = section.row(i);
|
||||||
printer().print(section.row(i));
|
printer().print(section.row(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
54
ve/velib.h
54
ve/velib.h
@ -1211,6 +1211,60 @@ public:
|
|||||||
virtual ~TContabilizzazione();
|
virtual ~TContabilizzazione();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TContabilizzazione
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// TMovimentoPN_VE
|
||||||
|
// Classe derivata da TMovimentoPN per calcolare automaticamente le righe conabili
|
||||||
|
// una volta settate le righe iva e la riga di totale documento
|
||||||
|
// Sostanzialmente di tratta di aggiungere un metodo in piu' :
|
||||||
|
// recalc_cg_rows(), liberamente ispirato alla notify_iva() in cg2102.cpp
|
||||||
|
|
||||||
|
class TMovimentoPN_VE : public TMovimentoPN
|
||||||
|
{
|
||||||
|
TCausale * _caus;
|
||||||
|
bool _valuta;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// simula il K_SPACE di iva_notify
|
||||||
|
void create_row(int i, const TString & descr_cr);
|
||||||
|
// simula il K_ENTER di iva_notify
|
||||||
|
void enter_row(int i, const TString & descr_cr);
|
||||||
|
// verifica se si tratta di iva indetraibile
|
||||||
|
bool detraibile(TRectype& rec) const ;
|
||||||
|
// cerca la prima tra quelle di contabilita' che corrisponde al tipo indicato
|
||||||
|
int type2pos(char tipo);
|
||||||
|
// Trova nelle righe contabili un conto nelle righe di tipo prescelto
|
||||||
|
int bill2pos(const TBill& conto, const TString & codcms, const TString & fascms, char tipo);
|
||||||
|
// trasforma un real in TImporto, in base al tipo riga
|
||||||
|
TImporto real2imp(const real& r, char row_type);
|
||||||
|
// setta il record delle righe di contabilita'
|
||||||
|
int insert_cg_rec(int n, const TImporto& imp, TBill& conto, const char * codcms, const char * fascms, const char* desc, char tipo);
|
||||||
|
// setta il record delle righe di contabilita'
|
||||||
|
int set_cg_rec(int n, const TImporto& imp, TBill& conto, const char * codcms, const char * fascms, const char* desc, char tipo);
|
||||||
|
// aggiunge l'importo indicato alla n-esima riga di contabilita'
|
||||||
|
bool add_cg_rec(int n, const TImporto& imp);
|
||||||
|
// Legge l'importo della riga n e lo ritorna col segno dovuto
|
||||||
|
TImporto get_cg_imp(int n);
|
||||||
|
// Setta l'importo della riga n
|
||||||
|
void set_cg_imp(int n, const TImporto& imp);
|
||||||
|
// verifica se il movimento e' quadrato oppure ha qualche maledetto sbilancio
|
||||||
|
// ritorna TRUE, ovviamente, se everything's alright.
|
||||||
|
public:
|
||||||
|
// ricalcola le righe di contabilita' dalle righe iva presenti
|
||||||
|
// e verifica la quadratura del movimento. Ritorna TRUE se il movimento e' scrivibile
|
||||||
|
void set_caus(TCausale * c) { _caus = c;}
|
||||||
|
bool movement_ok() ;
|
||||||
|
void add_row_re(int i);
|
||||||
|
bool add_row_cp_re(int i);
|
||||||
|
void map_conto_re(TBill & c);
|
||||||
|
void destroy_iva_row(int i = -1);
|
||||||
|
int recalc_cg_rows(const TString & descr_cr, TCausale & caus);
|
||||||
|
TMovimentoPN_VE(bool valuta) : _valuta(valuta), _caus(NULL) {};
|
||||||
|
virtual ~TMovimentoPN_VE() {}
|
||||||
|
};
|
||||||
|
|
||||||
class TCopia_documento : public TElaborazione // velib04
|
class TCopia_documento : public TElaborazione // velib04
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -30,59 +30,7 @@
|
|||||||
#include "../cg/cgsaldac.h"
|
#include "../cg/cgsaldac.h"
|
||||||
#include "../cg/cglib02.h"
|
#include "../cg/cglib02.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// TContabilizzazione
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// TMovimentoPN_VE
|
|
||||||
// Classe derivata da TMovimentoPN per calcolare automaticamente le righe conabili
|
|
||||||
// una volta settate le righe iva e la riga di totale documento
|
|
||||||
// Sostanzialmente di tratta di aggiungere un metodo in piu' :
|
|
||||||
// recalc_cg_rows(), liberamente ispirato alla notify_iva() in cg2102.cpp
|
|
||||||
|
|
||||||
class TMovimentoPN_VE : public TMovimentoPN
|
|
||||||
{
|
|
||||||
TCausale * _caus;
|
|
||||||
bool _valuta;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// simula il K_SPACE di iva_notify
|
|
||||||
void create_row(int i, const TString & descr_cr);
|
|
||||||
// simula il K_ENTER di iva_notify
|
|
||||||
void enter_row(int i, const TString & descr_cr);
|
|
||||||
// verifica se si tratta di iva indetraibile
|
|
||||||
bool detraibile(TRectype& rec) const ;
|
|
||||||
// cerca la prima tra quelle di contabilita' che corrisponde al tipo indicato
|
|
||||||
int type2pos(char tipo);
|
|
||||||
// Trova nelle righe contabili un conto nelle righe di tipo prescelto
|
|
||||||
int bill2pos(const TBill& conto, const TString & codcms, const TString & fascms, char tipo);
|
|
||||||
// trasforma un real in TImporto, in base al tipo riga
|
|
||||||
TImporto real2imp(const real& r, char row_type);
|
|
||||||
// setta il record delle righe di contabilita'
|
|
||||||
int insert_cg_rec(int n, const TImporto& imp, TBill& conto, const char * codcms, const char * fascms, const char* desc, char tipo);
|
|
||||||
// setta il record delle righe di contabilita'
|
|
||||||
int set_cg_rec(int n, const TImporto& imp, TBill& conto, const char * codcms, const char * fascms, const char* desc, char tipo);
|
|
||||||
// aggiunge l'importo indicato alla n-esima riga di contabilita'
|
|
||||||
bool add_cg_rec(int n, const TImporto& imp);
|
|
||||||
// Legge l'importo della riga n e lo ritorna col segno dovuto
|
|
||||||
TImporto get_cg_imp(int n);
|
|
||||||
// Setta l'importo della riga n
|
|
||||||
void set_cg_imp(int n, const TImporto& imp);
|
|
||||||
// verifica se il movimento e' quadrato oppure ha qualche maledetto sbilancio
|
|
||||||
// ritorna TRUE, ovviamente, se everything's alright.
|
|
||||||
public:
|
|
||||||
// ricalcola le righe di contabilita' dalle righe iva presenti
|
|
||||||
// e verifica la quadratura del movimento. Ritorna TRUE se il movimento e' scrivibile
|
|
||||||
void set_caus(TCausale * c) { _caus = c;}
|
|
||||||
bool movement_ok() ;
|
|
||||||
void add_row_re(int i);
|
|
||||||
bool add_row_cp_re(int i);
|
|
||||||
void map_conto_re(TBill & c);
|
|
||||||
void destroy_iva_row(int i = -1);
|
|
||||||
int recalc_cg_rows(const TString & descr_cr, TCausale & caus);
|
|
||||||
TMovimentoPN_VE(bool valuta) : _valuta(valuta), _caus(NULL) {};
|
|
||||||
virtual ~TMovimentoPN_VE() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
void TMovimentoPN_VE::destroy_iva_row(int i)
|
void TMovimentoPN_VE::destroy_iva_row(int i)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user