Patch level : 10.0 109

Files correlati     :
Ricompilazione Demo : [ ]
Commento           :

Riportata la versione 3.2 1208


git-svn-id: svn://10.65.10.50/trunk@17110 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-08-27 13:08:36 +00:00
parent 7baf8c5433
commit a8c4b15523
26 changed files with 1425 additions and 246 deletions

15
ps/pd0300.cpp Executable file
View File

@ -0,0 +1,15 @@
#include <xvt.h>
#include "pd0300.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? (argv[1][1]-'0') : 0;
switch(n)
{
case 0 : pd0300100(argc, argv);
default: break;
}
exit(0);
return 0;
}

6
ps/pd0300.h Executable file
View File

@ -0,0 +1,6 @@
#ifndef __DB2_H
#define __DB2_H
int pd0300100(int argc, char* argv[]);
#endif

435
ps/pd0300100.cpp Executable file
View File

@ -0,0 +1,435 @@
#include <applicat.h>
#include <automask.h>
#include <browfile.h>
#include <defmask.h>
#include <execp.h>
#include <mailbox.h>
#include <printer.h>
#include <progind.h>
#include <tabutil.h>
#include <viswin.h>
#include "pd0300.h"
#include "../db/dblib.h"
#include "../mg/mglib.h"
#include "pd0300100a.h"
///////////////////////////////////////////////////////////
// TValorizzazione_mask
///////////////////////////////////////////////////////////
class TValorizzazione_mask : public TAutomask
{
TAssoc_array _valori;
TAssoc_array _risultati;
TDistinta_tree _tree;
TString4 _annoes ;
TString8 _codmag;
TDate _data;
protected:
virtual bool on_field_event(TOperable_field& f, TField_event e, long jolly);
public:
real valore(const TCodice_articolo& dis, const char* liv = NULL);
void elabora();
void salva();
TValorizzazione_mask();
virtual ~TValorizzazione_mask() { }
};
real TValorizzazione_mask::valore(const TCodice_articolo& dis, const char* liv)
{
real total;
if (dis.not_empty())
{
TString80 cod = dis;
bool explode = true;
if (liv && *liv)
cod << ',' << liv;
TString8 codmagdep;
add_magcode(codmagdep, get(F_CODMAG));
add_depcode(codmagdep, get(F_CODDEP));
_tree.set_global("_MAGDEP", codmagdep);
const char tipo = _tree.get_type(dis);
if (explode &&_tree.set_root(dis))
{
TArray boom;
TLocalisamfile rd(LF_RDIST);
real peso;
real val_mat;
real val_lav;
real prz_val;
rd.setkey(2);
// Esplosione ai materiali di base
// raggruppati alla unita' di misura di riferimento
_tree.explode(boom, false, RAGGR_EXP_BASE, 1);
for (int r = boom.last(); r >= 0; r--)
{
const TRiga_esplosione& esp = (const TRiga_esplosione&)boom[r];
const TCodice_articolo & comp = esp.componente();
const TCodice_articolo & dist = esp.distinta();
rd.put("CODCOMP", comp);
rd.put("CODDIST", dist);
if (rd.read() == NOERR)
{
const TRectype & rec = rd.curr();
const TString4 tipo = rec.get("TIPO");
if (tipo == "A")
{
TArticolo compd(comp);
const TString8 um(rec.get("UM"));
real qta = rec.get_real("EXPR");
real calo(compd.get(ANAMAG_USER1));
if (calo == ZERO) calo = UNO;
const real prezzo = compd.get_real(ANAMAG_ULTCOS1) * calo;
val_mat += prezzo * qta;
if (um.starts_with("GR"))
peso += qta;
}
else
if (tipo == "L")
{
TLavorazione lav(comp);
const TString8 um(lav.um());
if (um.starts_with("GR"))
prz_val += lav.prezzo();
else
{
real qta = rec.get_real("EXPR");
val_lav += lav.prezzo() * qta;
}
}
}
}
total = val_mat + (val_lav + prz_val * peso) * (CENTO - get_real(F_SCONTO))/CENTO;
if (!total.is_zero())
_risultati.add(cod, total);
}
}
return total;
}
void TValorizzazione_mask::elabora()
{
TRectype rec_from(LF_DIST), rec_to(LF_DIST);
rec_from.put("CODDIST", get(F_DIST_FROM));
rec_to.put ("CODDIST", get(F_DIST_TO));
_annoes = get(F_ANNOES);
_data = get_date(F_DATA);
TRelation rel(LF_DIST);
TCursor cur(&rel);
cur.setregion(rec_from, rec_to, 0x2);
const long items = cur.items();
TProgind pi(items, TR("Valorizzazione in corso..."), TRUE, TRUE);
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_PREVIEW);
TViswin& vw = bf.vis_win();
vw.destroy_lines();
_valori.destroy();
_risultati.destroy();
TString line, num;
const int dest = get_int(F_VALORIZZA);
// 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
line = FR("@b Valorizzazione al ");
line << TR("Ultimo Costo");
line << TR(" - ricalcola ");
switch (dest)
{
case 1: line << TR("l' Ultimo Costo"); break;
case 2: line << TR("il Prezzo di Listino"); break;
default: line << TR("il Costo Standard"); break;
}
line << " " << get(F_DATA);
bf.add_line(line);
line = FR("@bCodice distinta Descrizione Attuale Precedente");
bf.add_line(line);
TString80 descr;
cur.freeze(TRUE);
for (cur = 0; cur.pos() < items; ++cur)
{
pi.addstatus(1);
if (pi.iscancelled())
break;
const TCodice_articolo art = cur.curr().get("CODDIST");
const char tipo = _tree.get_type(art);
if (tipo != 'A')
continue;
const TPrice value(valore(art));
line.cut(0) << "$[r,w]" << art << "$[n,w]";
line.left_just(33);
TArticolo_giacenza articolo(art);
descr = articolo.get(ANAMAG_DESCR);
descr.left_just(50);
line << descr;
if (dest == 2)
{
const real perc = articolo.get_real(ANAMAG_PERCRIC);
const TPrice pric(value.get_num() * (100.0 + perc) / 100.0);
num = pric.string(TRUE);
}
else
num = value.string(TRUE);
num.right_just(16);
line << num;
TPrice total;
switch (dest)
{
case 1: total = articolo.ultimo_costo(_annoes); break;
case 2: total = articolo.prezzo_listino(_annoes, "", ""); break;
default: total = articolo.costo_standard(_annoes); break;
}
num = total.string(TRUE);
num.right_just(16);
line << num;
bf.add_line(line);
}
enable(DLG_SAVEREC);
vw.goto_top();
}
void TValorizzazione_mask::salva()
{
const TDate oggi = get_date(F_DATA);
const int dest = get_int(F_VALORIZZA);
TProgind pi(_risultati.items(), TR("Registrazione in corso..."), TRUE, TRUE);
TLocalisamfile dis(LF_DIST);
TTable lav("LAV");
FOR_EACH_ASSOC_OBJECT(_risultati, obj, key, item)
{
pi.addstatus(1);
if (pi.iscancelled())
break;
const real& val = (const real&)*item;
if (!val.is_zero())
{
const TPrice prezzo(val);
const real& price = prezzo.get_num(); // val arrotondato ai decimali dei prezzi
switch(_tree.get_type(key))
{
case 'A':
{
TArticolo_giacenza art(key);
switch (dest)
{
case 1:
art.put_ultimo_costo(price, oggi);
break;
case 2:
{
const real perc = art.get_real(ANAMAG_PERCRIC);
const TPrice pric(price * (100.0 + perc) / 100.0);
art.set_prezzo_vendita(pric.get_num());
}
break;
default:
art.put_costo_standard(price);
break;
}
art.rewrite();
}
break;
case 'L':
lav.put("CODTAB", key);
if (lav.read(_isequal, _lock) == NOERR)
{
lav.put("R10", price); // Was R0
lav.rewrite();
}
break;
case 'G':
case 'V':
dis.put("CODDIST", key);
if (dis.read(_isequal, _lock) == NOERR)
{
dis.put("PREZZO", price);
dis.rewrite();
}
break;
default :break;
}
}
}
_valori.destroy();
_risultati.destroy();
disable(DLG_SAVEREC);
}
bool TValorizzazione_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
case DLG_ELABORA:
if (e == fe_button)
{
elabora();
enable(-4);
}
break;
case DLG_SAVEREC:
if (e == fe_button)
salva();
break;
case DLG_PRINT:
if (e == fe_button)
{
TBrowsefile_field& b = (TBrowsefile_field&)field(F_PREVIEW);
TViswin& w = b.vis_win();
TTextfile& f = w.text();
const long rows = f.lines();
if (rows > 2)
{
TPrinter& p = printer();
TPrintrow row;
TString line = f.line_formatted(0); // Legge la prima riga dal line
row.put(line);
p.setheaderline(0, row); // La imposta come testata
line = f.line_formatted(1); // Legge la prima riga dal line
row.reset();
row.put(line);
p.setheaderline(1, row); // La imposta come testata
p.headerlen(3); // Imposta altezza testata
const TPrtype old_prtype = p.printtype();
p.set_printtype(winprinter); // Forza la stampa su carta
p.open();
for (long l = 2; l < rows; l++)
{
line = f.line_formatted(l);
row.reset();
row.put(line, 0);
p.print(row);
}
p.close();
p.set_printtype(old_prtype);
}
}
break;
case DLG_QUIT:
if (e == fe_button)
{
if (_risultati.items() > 0)
return yesno_box(TR("I risultati dell'ultima elaborazione\n"
"non sono stati registrati:\n"
"Si desidera uscire ugualmente?"));
}
break;
default:
break;
}
return TRUE;
}
static const char* link_handler(TMask&, int id, const char* str, bool)
{
const char* app = NULL;
switch(id)
{
case 0: app = "ve2 -3"; break;
case 1: app = "ba3 -0 LAV"; break;
case 2: app = "db0 -4"; break;
default: break;
}
if (app)
{
TString ss = "1|"; ss << str;
TMessage fs(app, MSG_LN, ss);
fs.send();
TExternal_app prg(app);
prg.run();
}
return "";
}
TValorizzazione_mask::TValorizzazione_mask()
: TAutomask("pd0300100a")
{
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_PREVIEW);
bf.enable_link("Articolo ", 'r');
bf.enable_link("Lavorazione ", 'v');
bf.enable_link("Distinta ", 'b');
bf.set_link_handler(link_handler);
disable(DLG_SAVEREC);
}
///////////////////////////////////////////////////////////
// TValorizzazione
///////////////////////////////////////////////////////////
class TValorizzazione : public TSkeleton_application
{
protected:
virtual bool create();
virtual const char * extra_modules() const {return "ba";}
public:
virtual void main_loop();
};
bool TValorizzazione::create()
{
open_files(LF_MAG,LF_STOMAG,0);
return TSkeleton_application::create();
}
void TValorizzazione::main_loop()
{
TValorizzazione_mask m;
m.run();
}
int pd0300100(int argc, char* argv[])
{
TValorizzazione app;
app.run(argc, argv, TR("Valorizzazione Dassi"));
return 0;
}

12
ps/pd0300100a.h Executable file
View File

@ -0,0 +1,12 @@
#define F_DIST_FROM 101
#define F_DIST_TO 102
#define F_ANNOES 104
#define F_VALORIZZA 105
#define F_DATA 106
#define F_CODMAG 107
#define F_CODDEP 108
#define F_SCONTO 109
#define F_PREVIEW 111
#define F_DETTAGLIATA 112

145
ps/pd0300100a.uml Executable file
View File

@ -0,0 +1,145 @@
#include "pd0300100a.h"
TOOLBAR "" 0 -2 0 2
BUTTON DLG_ELABORA 10 2
BEGIN
PROMPT -14 -11 "~Elabora"
PICTURE BMP_ELABORA
END
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -24 -11 "~Registra"
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
END
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -34 -11 ""
FLAGS "D"
GROUP 4
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -44 -11 "~Fine"
MESSAGE EXIT,K_ENTER
PICTURE BMP_QUIT
PICTURE BMP_QUITDN
END
ENDPAGE
PAGE "Valorizzazione" 0 0 80 19
GROUPBOX DLG_NULL 74 4
BEGIN
PROMPT 1 1 "@bSelezione"
END
STRING F_DIST_FROM 20
BEGIN
PROMPT 2 2 "Da codice "
FLAGS "U"
USE LF_DIST
JOIN LF_ANAMAG INTO CODART==CODDIST
INPUT CODDIST F_DIST_FROM
DISPLAY "Codice@20" CODDIST
DISPLAY "Descrizione@50" LF_ANAMAG->DESCR
OUTPUT F_DIST_FROM CODDIST
CHECKTYPE SEARCH
ADD RUN DB0 -4
END
STRING F_DIST_TO 20
BEGIN
PROMPT 2 3 "A codice "
FLAGS "U"
USE LF_DIST
JOIN LF_ANAMAG INTO CODART==CODDIST
INPUT CODDIST F_DIST_TO
DISPLAY "Codice@20" CODDIST
DISPLAY "Descrizione@50" LF_ANAMAG->DESCR
OUTPUT F_DIST_TO CODDIST
CHECKTYPE SEARCH
ADD RUN DB0 -4
END
STRING F_CODMAG 3
BEGIN
FLAGS "U"
PROMPT 38 2 "Magazzino "
USE MAG SELECT CODTAB[4,5]=""
INPUT CODTAB F_CODMAG
DISPLAY "Magazzino" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODMAG CODTAB
CHECKTYPE NORMAL
END
STRING F_CODDEP 2
BEGIN
FLAGS "U"
PROMPT 38 3 "Deposito "
USE MAG
INPUT CODTAB[1,3] F_CODMAG
INPUT CODTAB[4,5] F_CODDEP
DISPLAY "Magazzino" CODTAB[1,3]
DISPLAY "Deposito" CODTAB[4,5]
DISPLAY "Descrizione@50" S0
OUTPUT F_CODMAG CODTAB[1,3]
OUTPUT F_CODDEP CODTAB[4,5]
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 34 4
BEGIN
PROMPT 1 5 "@bParametri in ingresso"
END
NUMBER F_ANNOES 4
BEGIN
PROMPT 2 6 "Anno esercizio "
FLAGS "ZA"
USE ESC
INPUT CODTAB F_ANNOES
DISPLAY "Codice esercizio" CODTAB
DISPLAY "Inizio esercizio" D0
DISPLAY "Fine esercizio" D1
OUTPUT F_ANNOES CODTAB
CHECKTYPE NORMAL
END
NUMBER F_SCONTO 6 3
BEGIN
PROMPT 2 7 "Sconto "
WARNING "Indicare lo sconto "
END
GROUPBOX DLG_NULL 34 4
BEGIN
PROMPT 41 5 "@bParametri in uscita"
END
LIST F_VALORIZZA 1 16
BEGIN
PROMPT 42 6 "Valorizza "
ITEM "0|Costo standard"
ITEM "1|Ultimo costo"
ITEM "2|Prezzo vendita"
END
DATE F_DATA
BEGIN
PROMPT 42 7 "Data elaborazione "
FLAGS "A"
END
BROWSEFILE F_PREVIEW 0 -1
BEGIN
PROMPT 0 8 ""
END
ENDMASK

View File

@ -470,17 +470,17 @@ TIVA_recset::TIVA_recset(TMov_recset & mov)
add_field(RMI_NUMREG, 1, n, 7);
add_field(RMI_NUMRIG, 8, n, 3);
add_field(RMI_CODIVA, 11, n, 3);
add_field(RMI_IMPONIBILE, 14, n, 15); // 18
add_field(RMI_IMPOSTA, 29, n, 15); // 18
add_field(RMI_TIPODET, 44, n, 1);
add_field(RMI_TIPOCR, 45, n, 1);
add_field(RMI_INTRA, 46, a, 1);
add_field(RMI_TIPOATT, 47, n, 1);
add_field(RMI_TIPOC, 48, a, 1);
add_field(RMI_GRUPPO, 49, n, 3);
add_field(RMI_CONTO, 52, n, 3); // 18
add_field(RMI_SOTTOCONTO, 55, n, 6);
add_field(RMI_CODIVA, 11, n, 4);
add_field(RMI_IMPONIBILE, 15, n, 15); // 18
add_field(RMI_IMPOSTA, 30, n, 15); // 18
add_field(RMI_TIPODET, 45, n, 1);
add_field(RMI_TIPOCR, 46, n, 1);
add_field(RMI_INTRA, 47, a, 1);
add_field(RMI_TIPOATT, 48, n, 1);
add_field(RMI_TIPOC, 49, a, 1);
add_field(RMI_GRUPPO, 50, n, 3);
add_field(RMI_CONTO, 53, n, 3); // 18
add_field(RMI_SOTTOCONTO, 56, n, 6);
TString4 fgr, fco, fso;
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
@ -493,6 +493,7 @@ TIVA_recset::TIVA_recset(TMov_recset & mov)
int ccaus = mov.get(MOV_CODCAUS).as_int();
const bool indetraibile = mov.indetraibile();
civa += ccaus * 100;
if (civa == 0)
civa = 310;
else

View File

@ -14,4 +14,4 @@ int main(int argc, char** argv)
}
exit(0);
return 0;
}
}

View File

@ -2,10 +2,8 @@
#include <applicat.h>
#include <automask.h>
#include <modaut.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <reprint.h>
#include <reputils.h>
#include <textset.h>
@ -67,15 +65,42 @@ public:
class TCertificazioni_csv_recordset : public TCSV_recordset
{
protected:
virtual const TVariant& get(const char* name) const;
public:
TCertificazioni_csv_recordset();
};
TCertificazioni_csv_recordset::TCertificazioni_csv_recordset()
: TCSV_recordset("CSV(,)\n")
const TVariant& TCertificazioni_csv_recordset::get(const char* name) const
{
if (*name != '#')
{
const TFixed_string fname(name);
const int dot = fname.find('.');
if (dot > 0)
{
const int logicnum = table2logic(fname.left(dot));
TString8 c;
switch (logicnum)
{
case LF_CLIFO : c << "F|" << TCSV_recordset::get(0L).as_int(); break;
case LF_COMUNI: c << " |" << get("CLIFO.COMCF"); break;
default: break;
}
if (c.full())
{
const TString& fld = fname.mid(dot+1);
return get_tmp_var() = cache().get(logicnum, c, fld);
}
}
}
return TRecordset::get(name);
}
TCertificazioni_csv_recordset::TCertificazioni_csv_recordset()
: TCSV_recordset("CSV(,)\n")
{ }
///////////////////////////////////////////////////////////
// APPLICAZIONE
@ -89,7 +114,8 @@ class TCertificazioni : public TSkeleton_application
protected:
void elabora(const TMask& mask) const;
void scrivi_csv(const TRectype& prima_riga, TCertificazioni_csv_recordset& csv, const int gruppo, const int conto, const long sottoconto) const;
void scrivi_csv(const TRectype& prima_riga,
TCertificazioni_csv_recordset& csv) const;
public:
virtual bool create();
@ -98,9 +124,12 @@ public:
};
// scorre le righe di movimento e fa i calcoli per stampare la riga di report
void TCertificazioni::scrivi_csv(const TRectype& prima_riga, TCertificazioni_csv_recordset& csv, const int gruppo, const int conto, const long sottoconto) const
// scorre le righe di movimento e fa i calcoli per stampare la riga di report
void TCertificazioni::scrivi_csv(const TRectype& prima_riga,
TCertificazioni_csv_recordset& csv) const
{
long numreg = prima_riga.get_long(RMV_NUMREG);
const long numreg = prima_riga.get_long(RMV_NUMREG);
const TBill rit_gcs(prima_riga);
TMovimentoPN movpn;
movpn.lfile().setkey(1);
@ -108,31 +137,47 @@ void TCertificazioni::scrivi_csv(const TRectype& prima_riga, TCertificazioni_csv
mov.put(MOV_NUMREG, numreg);
if (movpn.read() == NOERR)
{
csv.new_rec("");
real importo = ZERO;
for (int i=0; i<movpn.cg_items(); i++)
long fornitore = 0;
real lordo, imponibile, ritenute, netto;
for (int i=0; i < movpn.cg_items(); i++)
{
TRectype& rmov = movpn.cg(i);
const int gr = rmov.get_int(RMV_GRUPPO);
const int co = rmov.get_int(RMV_CONTO);
const long so = rmov.get_long(RMV_SOTTOCONTO);
const char sez = rmov.get(RMV_SEZIONE)[0];
const TRectype& rmov = movpn.cg(i);
const TBill gcs(rmov);
const char sez = rmov.get_char(RMV_SEZIONE);
const real imp = rmov.get_real(RMV_IMPORTO);
if (sez =='A')
{
if ((gr==gruppo) && (co==conto) && (so==sottoconto)) // ritenuta
csv.set(5, (TVariant)rmov.get_real(RMV_IMPORTO)); // ritenuta
if (gcs == rit_gcs) // ritenuta
ritenute += imp;
else
csv.set(3, (TVariant)rmov.get_real(RMV_IMPORTO)); // imponibile
{
netto += imp; // imponibile
if (gcs.tipo() == 'F')
fornitore = gcs.codclifo();
}
}
else
importo += rmov.get_real(RMV_IMPORTO);
lordo += imp;
}
if (fornitore > 0)
{
csv.new_rec("");
csv.set(0, TVariant(fornitore));
const TString& causale = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS), CAU_DESCR);
csv.set(1, TVariant(causale));
csv.set(2, TVariant(lordo)); // compenso lordo
csv.set(3, TVariant(ZERO)); // somme non soggette
csv.set(4, TVariant(ZERO)); // imponibile
csv.set(5, TVariant(ritenute)); // ritenute
csv.set(6, TVariant(netto)); // netto
}
if (importo != ZERO)
csv.set(0, (TVariant)importo); // compenso lordo
}
}
//metodo di base per la ricerca delle righe movimento che soddisfano le condizioni
void TCertificazioni::elabora(const TMask& mask) const
{
@ -150,6 +195,8 @@ void TCertificazioni::elabora(const TMask& mask) const
query << "USE RMOV KEY 2\n";
query << "SELECT (NUM(ANSI(23.DATACOMP))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(23.DATACOMP))<=NUM(ANSI(#ADATA)))\n";
query << "JOIN MOV INTO NUMREG==NUMREG\n";
query << "JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF\n";
query << "JOIN COMUNI TO CLIFO INTO STATO==STATOCF COM==COMCF\n";
query << "FROM GRUPPO=#GRUPPO CONTO=#CONTO SOTTOCONTO=#SOTTOCONTO\n";
query << "TO GRUPPO=#GRUPPO CONTO=#CONTO SOTTOCONTO=#SOTTOCONTO\n";
query << "BY MOV.CODCF\n";
@ -163,9 +210,6 @@ void TCertificazioni::elabora(const TMask& mask) const
//creazione del csv recordset che verra' riempito dalla elaborazione
TCertificazioni_csv_recordset* csv = new TCertificazioni_csv_recordset;
//quante righe dello sheet processa?
const long tot_items = sf.items();
//Visto che e' possibile avere una secchiata di conti, gli tocca fare un giro per ogni conto
// in realta' secondo me si potrebbe avere un conto solo (quello delle ritenute)
FOR_EACH_SHEET_ROW(sf, r, row)
@ -179,7 +223,7 @@ void TCertificazioni::elabora(const TMask& mask) const
const long items = rmov.items();
//E crea pure la progind..
TProgind pi(tot_items, TR("Generazione righe..."), true, true);
TProgind pi(items, TR("Generazione righe ritenute..."), true, true);
long last_nmov = 0;
@ -204,12 +248,16 @@ void TCertificazioni::elabora(const TMask& mask) const
} //FOR_EACH...
#ifdef DBG
csv->save_as_text("c:/tmp/admin/bonomo.txt");
#endif
//creazione del report di stampa
TCertificazioni_report rep;
bool ok = rep.load("pg0214100a");
//setta il recordset...
//deve settare almeno un campo manualmente perche' funzioni la mask2report
csv->set_var("#EMAIL", TVariant("Manca la email"), true);
csv->set_var("#EMAIL", TVariant(TR("Manca la e-mail")), true);
rep.set_recordset(csv);
//..e poi carica i valori sulla maschera nel report!!!!
rep.mask2report(mask);
@ -228,9 +276,7 @@ void TCertificazioni::main_loop()
TCertificazioni_mask mask;
mask.field(F_CODDITTA).check(RUNNING_CHECK);
while (mask.run() == K_ENTER)
{
elabora(mask);
}
}
bool TCertificazioni::create()

View File

@ -1,67 +1,87 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="pg0214100a" lpi="6">
<description>Stampa certificazioni</description>
<description>Stampa certificazioni professionisti</description>
<font face="Courier New" size="10" />
<section type="Head">
<section type="Head" />
<section type="Head" level="1" />
<section type="Head" level="2" page_break="1">
<groupby>A</groupby>
<field border="2" type="Testo" align="center" width="92" height="3.5" pattern="1" text="DICHIARAZIONE">
<field border="2" x="1" y="1" type="Testo" align="center" width="79" height="3.5" pattern="1" text="DICHIARAZIONE">
<font face="Courier New" bold="1" size="14" />
</field>
<field x="1" y="3" type="Testo" align="center" width="79" pattern="1" text="Ai sensi dell'art. 4, comma 6-ter, D.P.R. n. 322&#2F;98">
<field y="2" type="Testo" align="center" width="79" pattern="1" text="Ai sensi dell'art. 4, comma 6-ter, D.P.R. n. 322&#2F;98">
<font face="Courier New" bold="1" size="12" />
</field>
<field x="2" y="6" type="Testo" width="10" pattern="1" text="La ditta" />
<field x="11" y="6" type="Stringa" width="50" pattern="1">
<source>#SYSTEM.RAGSOC</source>
<field x="1" y="5" type="Testo" width="52" pattern="1" text="La ditta Libreria Bonomo di Alberta Zama e C. S.a.s." />
<field x="61" y="5" type="Testo" width="31" pattern="1" text="Codice fiscale: 01995681200" />
<field x="1" y="7" type="Testo" width="50" pattern="1" text="Domicilio fiscale: Via Zamboni, 26&#2F;A" />
<field x="61" y="7" type="Testo" width="20" pattern="1" text="40126 Bologna (BO)" />
<field x="35" y="9" type="Testo" width="10" pattern="1" text="DICHIARA">
<font face="Courier New" bold="1" size="12" />
</field>
<field x="62" y="6" type="Testo" width="15" pattern="1" text="Codice fiscale" />
<field x="62" y="7" type="Testo" width="18" pattern="1" text="Comune" />
<field x="2" y="8" type="Testo" width="18" pattern="1" text="Domicilio fiscale" />
<field x="36" y="10" type="Testo" width="10" pattern="1" text="DICHIARA">
<font face="Courier New" bold="1" size="12" />
<field x="1" y="11" type="Testo" width="30" pattern="1" text="di aver corrisposto dal" />
<field x="30" y="11" type="Data" width="10" pattern="1">
<source>#DADATA</source>
</field>
<field x="2" y="12" type="Testo" width="38" pattern="1" text="di aver corrisposto nel periodo " />
<field x="2" y="13" type="Testo" width="38" pattern="1" text="i seguenti compensi al sig.&#2F;ditta" />
<field x="2" y="14" type="Testo" width="38" pattern="1" text="codice fiscale" />
<field x="2" y="15" type="Testo" width="38" pattern="1" text="indirizzo" />
<field x="2" y="17" type="Testo" width="100" pattern="1" text="e di aver operato la ritenuta ex art.25-25&#2F;bis DPR n. 600&#2F;73 come risulta dal seguente prospetto">
<field x="41" y="11" type="Testo" width="2" pattern="1" text="al" />
<field x="44" y="11" type="Data" width="10" pattern="1">
<source>#ADATA</source>
</field>
<field x="1" y="12" type="Testo" width="24" pattern="1" text="i seguenti compensi a" />
<field x="30" y="12" type="Stringa" width="50" pattern="1">
<source>CLIFO.RAGSOC</source>
</field>
<field x="1" y="13" type="Testo" width="38" pattern="1" text="codice fiscale" />
<field x="30" y="13" type="Stringa" width="16" pattern="1">
<source>CLIFO.COFI</source>
</field>
<field x="1" y="14" type="Testo" width="38" pattern="1" text="indirizzo" />
<field x="30" y="14" type="Stringa" width="50" pattern="1">
<source>CLIFO.INDCF + ", " + CLIFO.CIVCF + " " + CLIFO.LOCALITACF</source>
</field>
<field x="30" y="15" type="Stringa" width="50" pattern="1">
<source>COMUNI.DENCOM + " (" + COMUNI.PROVCOM + ")"</source>
</field>
<field x="1" y="16" type="Testo" valign="bottom" width="100" pattern="1" text="e di aver operato la ritenuta ex art.25-25&#2F;bis DPR n. 600&#2F;73 come risulta dal seguente prospetto">
<font face="Courier New" size="8" />
</field>
<field x="2" y="19" type="Testo" width="10" pattern="1" text="CAUSALE" />
<field x="33" y="19" type="Testo" width="10" pattern="1" text="COMPENSO" />
<field x="44" y="19" type="Testo" width="10" pattern="1" text="SOMME NON" />
<field x="55" y="19" type="Testo" width="10" pattern="1" text="IMPONIBILE" />
<field x="66" y="19" type="Testo" width="5" pattern="1" text="AL." />
<field x="72" y="19" type="Testo" width="10" pattern="1" text="RITENUTA" />
<field x="83" y="19" type="Testo" width="10" pattern="1" text="NETTO" />
<field x="33" y="20" type="Testo" width="10" pattern="1" text="LORDO" />
<field x="44" y="20" type="Testo" width="10" pattern="1" text="SOGGETTE" />
<field x="83" y="20" type="Testo" width="10" pattern="1" text="PAGATO" />
<field x="1" y="18" type="Testo" width="10" pattern="1" text="CAUSALE" />
<field x="27" y="18" type="Testo" align="right" width="10" pattern="1" text="COMPENSO" />
<field x="39" y="18" type="Testo" align="right" width="10" pattern="1" text="SOMME NON" />
<field x="51" y="18" type="Testo" align="right" width="10" pattern="1" text="IMPONIBILE" />
<field x="63" y="18" type="Testo" align="right" width="5" pattern="1" text="AL" />
<field x="70" y="18" type="Testo" align="right" width="10" pattern="1" text="RITENUTA" />
<field x="82" y="18" type="Testo" align="right" width="10" pattern="1" text="NETTO" />
<field x="27" y="19" type="Testo" align="right" width="10" pattern="1" text="LORDO" />
<field x="39" y="19" type="Testo" align="right" width="10" pattern="1" text="SOGGETTE" />
<field x="82" y="19" type="Testo" align="right" width="10" pattern="1" text="PAGATO" />
</section>
<section type="Head" level="1" />
<section type="Body" />
<section type="Body" />
<section type="Body" level="1">
<field x="1" y="1" type="Stringa" width="30" pattern="1">
<source>A</source>
</field>
<field x="32" y="1" type="Prezzo" align="right" width="10" pattern="1" text="#########,@@">
<field x="1" type="Stringa" width="25" pattern="1">
<source>B</source>
</field>
<field x="43" y="1" type="Prezzo" align="right" width="10" pattern="1" text="#########,@@">
<field x="27" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
<source>C</source>
</field>
<field x="54" y="1" type="Prezzo" align="right" width="10" pattern="1" text="#########,@@">
<field x="39" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
<source>D</source>
</field>
<field x="65" y="1" type="Numero" align="right" width="5" pattern="1" text="@@,##">
<field x="51" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
<source>E</source>
</field>
<field x="71" y="1" type="Prezzo" align="right" width="10" pattern="1" text="#########,@@">
<field x="63" type="Numero" align="right" width="5" pattern="1" text="@#,@@">
<source>F*100 &#2F; IF(E,E,1)</source>
</field>
<field x="70" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
<source>F</source>
</field>
<field x="82" y="1" type="Prezzo" align="right" width="10" pattern="1" text="#########,@@">
<source>H</source>
<field x="82" type="Valuta" align="right" width="10" pattern="1" text="#########,@@">
<source>G</source>
</field>
</section>
<section type="Foot" />
<section type="Foot" level="1" />
<section type="Foot" level="2" />
</report>

View File

@ -1,8 +1,8 @@
#include "pg0214100a.h"
TOOLBAR "" 0 -5 0 4
TOOLBAR "" 0 -3 0 3
BUTTON DLG_OK 10 2
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -12 -11 ""
END
@ -12,6 +12,13 @@ BEGIN
PROMPT -22 -11 ""
END
STRING DLG_PROFILE 50
BEGIN
PROMPT 9 0 "Profilo "
PSELECT
FLAGS "H"
END
ENDPAGE
PAGE "Stampa certificazioni" -1 -1 78 10

View File

@ -19,4 +19,6 @@
#define F_PREZZO 117
#define F_CDCT 118
#define F_FSCT 119
#define F_DASTATO 120
#define F_ASTATO 121

View File

@ -220,6 +220,29 @@ BEGIN
CHECKTYPE SEARCH
END
STRING F_DASTATO 1
BEGIN
PROMPT 2 18 "Dallo stato "
USE %STD
INPUT CODTAB F_DASTATO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DASTATO CODTAB
CHECKTYPE NORMAL
FIELD OR14_DASTATO
END
STRING F_ASTATO 1
BEGIN
PROMPT 29 18 "Allo stato "
COPY USE F_DASTATO
INPUT CODTAB F_ASTATO
COPY DISPLAY F_DASTATO
OUTPUT F_ASTATO CODTAB
CHECKTYPE NORMAL
FIELD OR14_ASTATO
END
ENDPAGE
ENDMASK

View File

@ -80,8 +80,9 @@ public:
void TPianifica_impianti::delete_old_docs()
{
const TDate dadata = _mask->get_date(F_DADATA);
const TDate adata = _mask->get_date(F_ADATA);
TDate dadata = _mask->get_date(F_DADATA);
TDate adata = _mask->get_date(F_ADATA);
const int lastday = adata - dadata;
const int anno = dadata.year();
const TString& codnum = _mask->get(F_ANUM); //accoppa i documenti con numerazione di destinazione..
const TString& impianto = _mask->get(F_DAIMP); //..e con l'impianto sorgente! (rompe la supersimmetria)
@ -89,15 +90,15 @@ void TPianifica_impianti::delete_old_docs()
TRelation rel_doc(LF_DOC);
TRectype darec(LF_DOC), arec(LF_DOC);
TDate from(1, 1, anno - 1);
TDate to(31, 12, anno);
TDate dadata_doc = dadata; //solitamente la datadoc precede la datacons di 2 settimane
dadata_doc -= 60;
darec.put(DOC_DATADOC, dadata_doc);
darec.put(DOC_DATADOC, from);
darec.put(DOC_PROVV, "D");
darec.put(DOC_ANNO, anno);
darec.put(DOC_CODNUM, codnum);
arec.put(DOC_DATADOC, adata);
arec.put(DOC_DATADOC, to);
arec.put(DOC_PROVV, "D");
arec.put(DOC_ANNO, anno);
arec.put(DOC_CODNUM, codnum);
@ -110,20 +111,27 @@ void TPianifica_impianti::delete_old_docs()
cur_doc.freeze();
TProgind progind(items, "Eliminazione vecchi documenti in corso...", false, true);
for (cur_doc = 0; cur_doc.pos() < items; ++cur_doc)
dadata += _delays[0];
adata += _delays[lastday ];
for (cur_doc = 0; cur_doc.pos() < items; ++cur_doc)
{
progind.addstatus(1);
TDocumento doc(cur_doc.curr());
//trovato un documento che soddisfa il darec/arec deve eliminarlo se la prima riga ha impianto..
//..uguale a quello nel campo F_AIMP sulla maschera
bool imp_ok =false, datacons_ok = false;
const TDate h_datacons = doc.get_date(DOC_DATACONS);
bool imp_ok =false, datacons_ok = false;
for (int i = 1; i <= doc.physical_rows(); i++)
{
const TRiga_documento& rigadoc = doc[i];
if (rigadoc.get(RDOC_IMPIANTO) == impianto)
imp_ok = true;
if (rigadoc.get_date(RDOC_DATACONS) >= dadata)
datacons_ok = true;
const TDate datacons = rigadoc.get_date(RDOC_DATACONS);
if (datacons.ok())
datacons_ok = (datacons >= dadata) && (datacons <= adata);
else
datacons_ok = (h_datacons >= dadata) && (h_datacons <= adata);
if (imp_ok && datacons_ok)
{
doc.remove();
@ -185,15 +193,18 @@ void TPianifica_impianti::create_new_docs(TLog_report& log)
TRelation rel_doc(LF_DOC);
TRectype darec(LF_DOC), arec(LF_DOC);
TDate dadata_doc = dadata; //solitamente la datadoc precede la datacons di 2 settimane
dadata_doc -= 60;
darec.put(DOC_DATADOC, dadata_doc);
TLocalisamfile db(LF_RDIST);
TDate from(1, 1, anno - 1);
TDate to(31, 12, anno);
db.setkey(2);
darec.put(DOC_DATADOC, from);
darec.put(DOC_PROVV, "D");
darec.put(DOC_ANNO, anno);
darec.put(DOC_CODNUM, da_codnum);
arec.put(DOC_DATADOC, adata);
arec.put(DOC_DATADOC, to);
arec.put(DOC_PROVV, "D");
arec.put(DOC_ANNO, anno);
arec.put(DOC_CODNUM, da_codnum);
@ -221,25 +232,38 @@ void TPianifica_impianti::create_new_docs(TLog_report& log)
TDate datadoc = nuovo_doc.get(DOC_DATADOC);
TDate h_datacons = nuovo_doc.get(DOC_DATACONS);
if (h_datacons < dadata || h_datacons > adata)
continue;
TDate datacons = h_datacons;
if (datacons - dadata > 366)
continue;
const int ndays = datacons - dadata;
if (ndays > 365)
continue;
datacons += _delays[ndays];
nuovo_doc.put(DOC_DATACONS, datacons);
for (int i = 1; i <= doc.rows(); i++)
{
const TRiga_documento& source_row = doc[i]; //riga del documento sorgente
//il casino va fatto solo se la riga non e' gia' evasa, l'impianto e' quello selezionato e la riga e' riga articolo
if (!source_row.is_evasa() && source_row.get(RDOC_IMPIANTO) == da_impianto && source_row.is_articolo())
const TString80 codice(source_row.get(RDOC_CODARTMAG));
if (codice == "008BTN008033MP01")
int i = 1;
//il casino va fatto solo se la riga non e' gia' evasa, l'impianto e' quello selezionato e la riga e' riga articolo
if (source_row.get(RDOC_IMPIANTO) == da_impianto && source_row.is_articolo())
{
const TCodice_articolo father_codartmag = source_row.get(RDOC_CODARTMAG);
albero.set_root(father_codartmag);
if (albero.goto_firstson())
db.zero();
db.put("CODCOMP", codice);
const int err = db.read(_isgteq);
if (err == NOERR && codice == db.get("CODCOMP"))
{
TCodice_articolo son_codartmag;
albero.curr_code(son_codartmag); //e' risalito al codice dell'articolo figlio
@ -273,9 +297,36 @@ void TPianifica_impianti::create_new_docs(TLog_report& log)
errore.format("Errore %d nella scrittura del documento %ld", err, nuovo_doc.get_long(DOC_NDOC));
log.log(2, errore);
}
if (!datacons.ok())
datacons = h_datacons;
const int ndays = datacons - dadata;
datacons += _delays[ndays];
if (datacons < dadata || datacons > adata)
continue;
//..e la sua riga vuota
TRiga_documento& nuova_rigadoc = nuovo_doc.new_row(source_row.get(RDOC_TIPORIGA));
//riempie la nuova riga
} //if (find_my_sister
} //if(albero.goto...
nuovo_doc.copy_data(nuova_rigadoc, source_row);
nuova_rigadoc.put(RDOC_CODART, dest_codart);
nuova_rigadoc.put(RDOC_CODARTMAG, dest_codart);
nuova_rigadoc.put(RDOC_PRIORITY, priority);
nuova_rigadoc.zero(nuova_rigadoc.field_qtaevasa());
nuova_rigadoc.zero(RDOC_RIGAEVASA);
datacons = source_row.get_date(RDOC_DATACONS);
if (datacons.ok())
{
datacons += _delays[ndays];
nuova_rigadoc.put(RDOC_DATACONS, datacons);
}
nuova_rigadoc.put(RDOC_IMPIANTO, a_impianto);
const TString &linea = lav->cod_linea(0);
nuova_rigadoc.put(RDOC_LINEA, linea);
found = true;
}
}
}
} //if(source_row.get...
} //for(int i...
} //for(cur_doc...
@ -285,8 +336,30 @@ void TPianifica_impianti::main_loop()
{
while (_mask->run() == K_ENTER)
{
//intanto accoppa i vecchi documenti di tipo destinazione
delete_old_docs();
TDate dadata = _mask->get_date(F_DADATA);
TDate adata = _mask->get_date(F_ADATA);
TDate data;
int ndays = adata - dadata + 1;
const int ritardo = _mask->get_int(F_RITARDO);
_delays[0] = ritardo;
for (int i = 1; i < 366; i++)
{
data = dadata;
data += i;
const TDate workdate = data;
if (!data.is_holiday() && data.wday() != 6)
{
TDate end_date = data;
end_date += _delays[i - 1];
while (end_date.is_holiday() || end_date.wday() == 6)
++end_date;
_delays[i] = end_date - workdate;
}
else
_delays[i] = _delays [i - 1];
}
delete_old_docs(); //intanto accoppa i vecchi documenti di tipo destinazione
//poi crea i nuovi documenti di produzione
TLog_report log("Errori generazione documenti pianificazione");
@ -296,7 +369,6 @@ void TPianifica_impianti::main_loop()
buc.add(log);
buc.preview();
}
}
bool TPianifica_impianti::create()
{

16
ps/pt0003.cpp Executable file
View File

@ -0,0 +1,16 @@
#include <xvt.h>
#include "pt0003.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0003100(argc, argv); break; // Incasso fatture
}
exit(0);
return 0;
}

1
ps/pt0003.h Executable file
View File

@ -0,0 +1 @@
int pt0003100(int argc, char* argv[]);

266
ps/pt0003100.cpp Executable file
View File

@ -0,0 +1,266 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <progind.h>
#include <relation.h>
#include <reprint.h>
#include "../ve/velib.h"
#include <doc.h>
#include "pt0003.h"
#include "pt0003100a.h"
#include <rdoc.h>
class TMaskPt00031 : public TAutomask
{
TCursor * _cur;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
void update_sheet();
void update_pagato(real & totale);
void update_total();
public:
TCursor & cursor() const { return *_cur;}
TMaskPt00031();
virtual ~TMaskPt00031();
};
TMaskPt00031::TMaskPt00031()
: TAutomask("pt0003100a")
{
TRelation * r = new TRelation(LF_DOC);
r->file().set_curr(new TDocumento);
_cur = new TCursor(r, "", 2);
((TButton_field&) field(DLG_SAVEREC)).set_exit_key(K_ENTER);
}
TMaskPt00031::~TMaskPt00031()
{
delete _cur;
}
bool TMaskPt00031::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
const int id = o.dlg();
switch (id)
{
case F_TOTPAGATO:
if (e == fe_modify )
{
real totpagato = o.mask().get_real(F_TOTPAGATO);
update_pagato(totpagato);
}
break;
case F_NUM:
if (e == fe_modify || e == fe_init)
update_sheet();
break;
case F_ANNO:
case F_CODCLI:
if (e == fe_modify)
update_sheet();
break;
case F_SHEET:
return on_sheet_event(o, e, jolly);
break;
default:
if (jolly > 0)
return on_sheet_event(o, e, jolly);
break;
}
return true;
}
void TMaskPt00031::update_total()
{
real tot;
TSheet_field& s = sfield(F_SHEET);
const int postot = s.cid2index(F_PAGATO);
FOR_EACH_SHEET_ROW_BACK(s, r, row)
tot += real(row->get(postot));
set(F_TOTPAGATO, tot);
}
bool TMaskPt00031::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
{
TMask& m = o.mask();
switch (o.dlg())
{
case F_PAGATO:
if (e == fe_modify)
update_total();
break;
case F_PAGA:
if (e == fe_button)
{
TMask& m = o.mask();
if (m.get_real(F_PAGATO).is_zero())
m.set(F_PAGATO, m.get(F_DAPAGARE));
else
m.reset(F_PAGATO);
TSheet_field & s = *m.get_sheet();
const int r = s.selected();
s.row(r).add(m.get(F_PAGATO), 0);
s.force_update(r);
update_total();
}
break;
case F_SHEET:
switch(e)
{
case se_query_add:
return false;
case se_notify_modify:
update_total();
break;
default:
break;
}
default:
break;
}
return true;
}
void TMaskPt00031::update_sheet()
{
TSheet_field& sheet = sfield(F_SHEET);
const int olditems = sheet.items();
sheet.destroy();
reset(F_TOTPAGATO);
TRectype from(_cur->relation()->curr());
const long codcli = get_long(F_CODCLI);
from.put(DOC_TIPOCF, "C");
from.put(DOC_CODCF, codcli);
from.put(DOC_ANNO, get(F_ANNO));
from.put(DOC_PROVV, "D");
TRectype to(from);
TString filter;
filter << "(CODNUM==\"" << get(F_NUM) << "\")&&(G1:TOTDOC>IMPPAGATO)";
_cur->setfilter(filter);
_cur->setregion(from, to);
TDocumento & doc = (TDocumento &)_cur->curr();
const long items = _cur->items();
TProgind pi(items, "Caricamento fatture", true, true);
for ((*_cur) = 0L; _cur->pos() < items; ++(*_cur))
{
if (pi.iscancelled())
break;
if (sheet.items() > 900) // Anche troppe righe
break;
TToken_string & row = sheet.row(-1);
const real totdoc = doc.totale_doc();
const real acconto = doc.get_real(DOC_IMPPAGATO);
const real da_pagare = totdoc - acconto;
row.cut(0);
row.add("");
row.add(da_pagare.string());
row.add(totdoc.string());
row.add(doc.get(DOC_NDOC));
row.add(doc.get(DOC_DATADOC));
pi.addstatus(1);
}
if (olditems == 0 && sheet.items == 0)
return;
sheet.force_update();
}
void TMaskPt00031::update_pagato(real & totpagato)
{
TSheet_field& sheet = sfield(F_SHEET);
const long items = sheet.items();
int pospagato = sheet.cid2index(F_PAGATO);
int posda_pagare = sheet.cid2index(F_DAPAGARE);
for (int r = 0; r < items; r++)
{
TToken_string & row = sheet.row(r);
const real da_pagare(row.get(posda_pagare));
real pagato;
if (totpagato > ZERO)
{
if (totpagato > da_pagare)
pagato = da_pagare;
else
pagato = totpagato;
totpagato -= pagato;
}
const TString s(pagato.string());
row.add(s, pospagato);
}
sheet.force_update();
}
class TIncassoFatture0003 : public TSkeleton_application
{
virtual bool check_autorization() const { return false; }
virtual const char * extra_modules() const {return "ve";}
protected:
virtual void main_loop();
public:
virtual ~TIncassoFatture0003() {}
};
void TIncassoFatture0003::main_loop()
{
TMaskPt00031 m;
while (m.run() == K_ENTER)
{
TSheet_field & s = m.sfield(F_SHEET);
TCursor & c = m.cursor();
const long items = c.items();
int pospagato = s.cid2index(F_PAGATO);
for (long pos = 0L; pos < items; pos++)
{
TToken_string row = s.row(pos);
real val(row.get(pospagato));
if (val != ZERO)
{
c = pos;
TDocumento doc((TDocumento &)c.curr());
real pagato = doc.get(DOC_IMPPAGATO);
real val(row.get(pospagato));
pagato += val;
doc.put(DOC_IMPPAGATO, pagato);
doc.rewrite();
}
}
}
}
TIncassoFatture0003 & app() { return (TIncassoFatture0003&) main_app();}
int pt0003100(int argc, char* argv[])
{
TIncassoFatture0003 a;
a.run(argc, argv, "Stampa ordini di produzione");
return 0;
}

14
ps/pt0003100a.h Executable file
View File

@ -0,0 +1,14 @@
#define F_ANNO 201
#define F_NUM 202
#define F_CODCLI 203
#define F_RAGSOC 204
#define F_TOTPAGATO 205
#define F_SHEET 206
#define F_PAGA 100
#define F_PAGATO 101
#define F_DAPAGARE 102
#define F_TOTDOC 103
#define F_NDOC 104
#define F_DATADOC 105

162
ps/pt0003100a.uml Executable file
View File

@ -0,0 +1,162 @@
#include "pt0003100a.h"
TOOLBAR "Toolbar" 0 -3 0 3
STRING DLG_PROFILE 70 50
BEGIN
PROMPT 8 0 "Profilo "
PSELECT
END
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -12 -1 "~Registra"
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Incasso fatture" 0 0 0 -3
GROUPBOX -1 78 5
BEGIN
PROMPT 2 1 "Selezione Documenti"
FLAGS ""
END
NUMBER F_ANNO 4
BEGIN
PROMPT 4 2 "Anno "
FIELD S_ANNO
KEY 1
USE ESC
CHECKTYPE NORMAL
INPUT CODTAB F_ANNO
DISPLAY "Codice" CODTAB
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio" D1
OUTPUT F_ANNO CODTAB
FLAGS "RZ"
END
STRING F_NUM 4
BEGIN
PROMPT 21 2 "Num. "
FIELDS S_NUM
HELP "Codice numerazione"
USE %NUM
INPUT CODTAB F_NUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUM CODTAB
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_CODCLI 6
BEGIN
PROMPT 4 3 "Cliente "
WARNING "Cliente assente"
FLAGS "R"
FIELD CODCLI
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_CODCLI
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODCLI CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
WARNING "Cliente assente"
PROMPT 26 3 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice" CODCF
OUTPUT F_CODCLI CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
CURRENCY F_TOTPAGATO
BEGIN
PROMPT 4 4 "Pagato "
END
SPREADSHEET F_SHEET
BEGIN
PROMPT 0 6 ""
ITEM "Pagato@18"
ITEM "Da pagare@18"
ITEM "Totale doc.@18"
ITEM "N.ro Fattura"
ITEM "Data@10"
END
ENDPAGE
ENDMASK
PAGE "Rate" -1 -1 60 14
CURRENCY F_PAGATO
BEGIN
PROMPT 4 1 "Pagato "
END
CURRENCY F_DAPAGARE
BEGIN
PROMPT 4 3 "Da Pagare "
FLAGS "D"
END
CURRENCY F_TOTDOC
BEGIN
PROMPT 4 5 "Totale fattura "
FLAGS "D"
END
NUMBER F_NDOC 6
BEGIN
PROMPT 4 7 "Numero fattura "
FLAGS "D"
END
DATE F_DATADOC
BEGIN
PROMPT 4 9 "Data fattura "
FLAGS "D"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON F_PAGA 10 2
BEGIN
PROMPT -33 -1 "~Paga"
END
ENDPAGE
ENDMASK

View File

@ -283,8 +283,7 @@ TTS_textset::TTS_textset(const char* query)
TString80 field;
// dati iva
int i;
for (i=0; i<8; i++)
for (int i=0; i<8; i++)
{
field.format("TRF-IMPONIB_%d", i);
add_field("0", field, 12, n, 475+(31*i)); // imponibile
@ -302,7 +301,7 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-TOT-FATT", 12, n, 723); // totale fattura
// conti di ricavo/costo
for (i = 0; i < 8; i++)
for (i=0; i<8; i++)
{
field.format("TRF-CONTORIC_%d", i);
add_field("0", field, 7, n, 735+(19*i)); // codice conto di ricavo/costo
@ -317,7 +316,7 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-CAU-AGG-2-PAGAM", 34, an, 939); // ulteriore descrizione aggiuntiva
// altri movimenti
for (i = 0; i < 80; i++)
for (i=0; i<80; i++)
{
field.format("TRF-CONTO_%d", i);
add_field("0", field, 7, n, 973+(64*i)); // codice conto
@ -336,7 +335,7 @@ TTS_textset::TTS_textset(const char* query)
}
// ratei e risconti
for (i = 0; i < 10; i++)
for (i=0; i<10; i++)
{
field.format("TRF-RIFER-TAB_%d", i);
add_field("0", field, 1, an, 6093+(19*i)); // tabella di riferimento
@ -356,7 +355,7 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-AN-TIPO-SOGG", 1, n, 6290); // tipo soggetto ritenuta di acconto
// ulteriori dati ev. pagamento o movimenti diversi
for (i = 0; i < 80; i++)
for (i=0; i<80; i++)
{
field.format("TRF-EC-PARTITA-SEZ-PAG_%d", i);
add_field("0", field, 2, n, 6291+(2*i)); // numero sezionale partita estratto conto
@ -372,13 +371,13 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-RIT-4", 12, n, 6526); // 4
// ulteriori dati per unita' produttive ricavi
for (i = 0; i < 8; i++)
for (i=0; i<8; i++)
{
field.format("TRF-UNITA-RICAVI_%d", i);
add_field("0", field, 2, n, 6538+(2*i)); //
}
// ulteriori dati per unita' produttive pagamenti
for (i = 0; i < 80; i++)
for (i=0; i<80; i++)
{
field.format("TRF-UNITA-PAGAM_%d", i);
add_field("0", field, 2, n, 6554+(2*i)); //

View File

@ -389,6 +389,8 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione
}
}
if (anno == 2008 && codnum == "NAC" && (numdoc == 74 || numdoc == 75))
int cazzone = 1;
if (n_riga_generata > 0)
scrivi_csv_doc_con_riga_generata(doc, n_riga_generata, csv, conai_specie);
else

View File

@ -349,74 +349,64 @@
<field x="82" y="7.37" type="Valuta" hidden="1" align="right" width="10" id="380" pattern="1" hide_zero="1" text="#########,@@" />
<field x="82" y="8.37" type="Valuta" hidden="1" align="right" width="10" id="390" pattern="1" hide_zero="1" text="#########,@@" />
<field x="82" y="9.37" type="Valuta" hidden="1" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="0.25" type="Numero" align="right" width="5" id="410" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="1.25" type="Numero" align="right" width="5" id="420" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="2.25" type="Numero" align="right" width="5" id="430" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="3.25" type="Numero" align="right" width="5" id="440" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="4.25" type="Numero" align="right" width="5" id="450" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="460" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="5.25" type="Numero" align="right" width="5" id="460" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.460 PRESCRIPT">#360 @
#260 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="6.25" type="Valuta" align="right" width="5" id="470" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="6.25" type="Numero" align="right" width="5" id="470" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.470 PRESCRIPT">#370 @
#270 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="7.25" type="Valuta" align="right" width="5" id="480" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="7.25" type="Numero" align="right" width="5" id="480" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.480 PRESCRIPT">#380 @
#280 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="8.25" type="Valuta" align="right" width="5" id="490" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="8.25" type="Numero" align="right" width="5" id="490" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.490 PRESCRIPT">#390 @
#290 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="9.25" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="9.25" type="Numero" align="right" width="5" id="499" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="0.25" type="Numero" align="right" width="10" id="510" pattern="1" hide_zero="1" text="#####@,@@@">
@ -559,12 +549,11 @@ ROUND 2
<font face="Courier New" bold="1" size="8" />
<source>#310+#320+#330+#340+#350+#360+#370+#380+#390+#399</source>
</field>
<field x="53" y="10.25" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="10.25" type="Numero" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="##,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.4000 PRESCRIPT">#3000 @
#2000 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="10.25" type="Numero" align="right" width="10" id="5000" pattern="1" hide_zero="1" text="#####@,@@@">

View File

@ -349,74 +349,64 @@
<field x="82.37" y="7.37" type="Valuta" hidden="1" align="right" width="10" id="380" pattern="1" hide_zero="1" text="#########,@@" />
<field x="82.37" y="8.37" type="Valuta" hidden="1" align="right" width="10" id="390" pattern="1" hide_zero="1" text="#########,@@" />
<field x="82.37" y="9.37" type="Valuta" hidden="1" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="0.25" type="Numero" align="right" width="5" id="410" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="1.25" type="Numero" align="right" width="5" id="420" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="2.25" type="Numero" align="right" width="5" id="430" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="3.25" type="Numero" align="right" width="5" id="440" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="4.25" type="Numero" align="right" width="5" id="450" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="460" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="5.25" type="Numero" align="right" width="5" id="460" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.460 PRESCRIPT">#360 @
#260 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="6.25" type="Valuta" align="right" width="5" id="470" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="6.25" type="Numero" align="right" width="5" id="470" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.470 PRESCRIPT">#370 @
#270 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="7.25" type="Valuta" align="right" width="5" id="480" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="7.25" type="Numero" align="right" width="5" id="480" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.480 PRESCRIPT">#380 @
#280 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="8.25" type="Valuta" align="right" width="5" id="490" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="8.25" type="Numero" align="right" width="5" id="490" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.490 PRESCRIPT">#390 @
#290 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="9.25" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="9.25" type="Numero" align="right" width="5" id="499" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="0.25" type="Numero" align="right" width="10" id="510" pattern="1" hide_zero="1" text="#####@,@@@">
@ -559,12 +549,11 @@ ROUND 2
<font face="Courier New" bold="1" size="8" />
<source>#310+#320+#330+#340+#350+#360+#370+#380+#390+#399</source>
</field>
<field x="53" y="10.25" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="10.25" type="Numero" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="##,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.4000 PRESCRIPT">#3000 @
#2000 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="10.25" type="Numero" align="right" width="10" id="5000" pattern="1" hide_zero="1" text="#####@,@@@">

View File

@ -349,74 +349,64 @@
<field x="82.12" y="7.37" type="Valuta" hidden="1" align="right" width="10" id="380" pattern="1" hide_zero="1" text="#########,@@" />
<field x="82.12" y="8.37" type="Valuta" hidden="1" align="right" width="10" id="390" pattern="1" hide_zero="1" text="#########,@@" />
<field x="82.12" y="9.37" type="Valuta" hidden="1" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="0.25" type="Numero" align="right" width="5" id="410" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="1.25" type="Numero" align="right" width="5" id="420" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="2.25" type="Numero" align="right" width="5" id="430" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="3.25" type="Numero" align="right" width="5" id="440" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="4.25" type="Numero" align="right" width="5" id="450" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="460" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="5.25" type="Numero" align="right" width="5" id="460" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.460 PRESCRIPT">#360 @
#260 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="6.25" type="Valuta" align="right" width="5" id="470" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="6.25" type="Numero" align="right" width="5" id="470" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.470 PRESCRIPT">#370 @
#270 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="7.25" type="Valuta" align="right" width="5" id="480" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="7.25" type="Numero" align="right" width="5" id="480" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.480 PRESCRIPT">#380 @
#280 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="8.25" type="Valuta" align="right" width="5" id="490" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="8.25" type="Numero" align="right" width="5" id="490" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.490 PRESCRIPT">#390 @
#290 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="53" y="9.25" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="9.25" type="Numero" align="right" width="5" id="499" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="0.25" type="Numero" align="right" width="10" id="510" pattern="1" hide_zero="1" text="#####@,@@@">
@ -559,12 +549,11 @@
<font face="Courier New" bold="1" size="8" />
<source>#310+#320+#330+#340+#350+#360+#370+#380+#390+#399</source>
</field>
<field x="53" y="10.25" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="10.25" type="Numero" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="##,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.4000 PRESCRIPT">#3000 @
#2000 @
&#2F;
2 ROUND
#THIS !</prescript>
</field>
<field x="70.75" y="10.25" type="Numero" align="right" width="10" id="5000" pattern="1" hide_zero="1" text="#####@,@@@">

View File

@ -323,60 +323,52 @@
<field x="83.37" y="5.37" type="Valuta" hidden="1" align="right" width="10" height="1.5" id="360" pattern="1" hide_zero="1" text="#########,@@" />
<field x="83.37" y="6.87" type="Valuta" hidden="1" align="right" width="10" height="1.75" id="370" pattern="1" hide_zero="1" text="#########,@@" />
<field x="83.37" y="8.62" type="Valuta" hidden="1" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="0.25" type="Numero" align="right" width="5" id="410" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="1.25" type="Numero" align="right" width="5" id="420" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="2.25" type="Numero" align="right" width="5" id="430" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="3.25" type="Numero" align="right" width="5" id="440" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="4.25" type="Numero" align="right" width="5" id="450" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Valuta" align="right" width="5" height="1.5" id="460" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="5.25" type="Numero" align="right" width="5" height="1.5" id="460" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.460 PRESCRIPT">#360 @
#260 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="6.75" type="Valuta" align="right" width="5" height="1.75" id="470" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="6.75" type="Numero" align="right" width="5" height="1.75" id="470" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.470 PRESCRIPT">#370 @
#270 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="8.5" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="8.5" type="Numero" align="right" width="5" id="499" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="0.25" type="Numero" align="right" width="10" id="510" pattern="1" hide_zero="1" text="#####@,@@@">
@ -495,12 +487,11 @@ ROUND 2
<font face="Courier New" bold="1" size="8" />
<source>#310+#320+#330+#340+#350+#360+#370+#399</source>
</field>
<field x="53" y="9.5" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="9.5" type="Numero" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="##,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.4000 PRESCRIPT">#3000 @
#2000 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="9.5" type="Numero" align="right" width="10" id="5000" pattern="1" hide_zero="1" text="#####@,@@@">

View File

@ -401,102 +401,88 @@
<field x="83.37" y="10.81" type="Valuta" hidden="1" align="right" width="10" id="340" pattern="1" hide_zero="1" text="#########,@@" />
<field x="83.37" y="5.31" type="Valuta" hidden="1" align="right" width="10" id="350" pattern="1" hide_zero="1" text="#########,@@" />
<field x="83.37" y="14.56" type="Valuta" hidden="1" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="7.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="7.25" type="Numero" align="right" width="5" id="410" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="412" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="1.25" type="Numero" align="right" width="5" id="412" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.412 PRESCRIPT">#312 @
#212 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="413" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="2.25" type="Numero" align="right" width="5" id="413" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.413 PRESCRIPT">#313 @
#213 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="414" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="3.25" type="Numero" align="right" width="5" id="414" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.414 PRESCRIPT">#314 @
#214 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="415" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="4.25" type="Numero" align="right" width="5" id="415" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.415 PRESCRIPT">#315 @
#215 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="6.25" type="Valuta" align="right" width="5" id="416" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="6.25" type="Numero" align="right" width="5" id="416" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.416 PRESCRIPT">#316 @
#216 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="9.75" type="Valuta" align="right" width="5" id="417" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="9.75" type="Numero" align="right" width="5" id="417" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.417 PRESCRIPT">#317 @
#217 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="0.25" type="Numero" align="right" width="5" id="420" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="11.75" type="Valuta" valign="center" align="right" width="5" height="1.75" id="422" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="11.75" type="Numero" valign="center" align="right" width="5" height="1.75" id="422" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.422 PRESCRIPT">#322 @
#222 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="13.5" type="Valuta" align="right" width="5" id="423" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="13.5" type="Numero" align="right" width="5" id="423" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.423 PRESCRIPT">#323 @
#223 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="8.25" type="Valuta" valign="center" align="right" width="5" height="1.5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="8.25" type="Valuta" valign="center" align="right" width="5" height="1.5" id="430" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="10.75" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="10.75" type="Numero" align="right" width="5" id="440" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="14.5" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="14.5" type="Numero" align="right" width="5" id="499" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="7.25" type="Numero" align="right" width="10" id="510" pattern="1" hide_zero="1" text="#####@,@@@">
@ -687,12 +673,11 @@ ROUND 2
<font face="Courier New" bold="1" size="8" />
<source>#320+#312+#313+#314+#315+#330+#316+#310+#350+#317+#340+#322+#323+#399</source>
</field>
<field x="53" y="15.5" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="15.5" type="Numero" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="##,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.4000 PRESCRIPT">#3000 @
#2000 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="15.5" type="Numero" align="right" width="10" id="5000" pattern="1" hide_zero="1" text="#####@,@@@">

View File

@ -310,53 +310,46 @@
<field x="83.12" y="4.43" type="Valuta" hidden="1" align="right" width="10" id="350" pattern="1" hide_zero="1" text="#########,@@" />
<field x="83.12" y="5.43" type="Valuta" hidden="1" align="right" width="10" id="360" pattern="1" hide_zero="1" text="#########,@@" />
<field x="83.12" y="6.43" type="Valuta" hidden="1" align="right" width="10" id="399" pattern="1" hide_zero="1" text="#########,@@" />
<field x="53" y="0.25" type="Valuta" align="right" width="5" id="410" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="0.25" type="Numero" align="right" width="5" id="410" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.410 PRESCRIPT">#310 @
#210 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="1.25" type="Valuta" align="right" width="5" id="420" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="1.25" type="Numero" align="right" width="5" id="420" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.420 PRESCRIPT">#320 @
#220 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="2.25" type="Valuta" align="right" width="5" id="430" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="2.25" type="Numero" align="right" width="5" id="430" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.430 PRESCRIPT">#330 @
#230 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="3.25" type="Valuta" align="right" width="5" id="440" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="3.25" type="Numero" align="right" width="5" id="440" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.440 PRESCRIPT">#340 @
#240 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="4.25" type="Valuta" align="right" width="5" id="450" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="4.25" type="Numero" align="right" width="5" id="450" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.450 PRESCRIPT">#350 @
#250 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="5.25" type="Valuta" align="right" width="5" id="460" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="5.25" type="Numero" align="right" width="5" id="460" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.460 PRESCRIPT">#360 @
#260 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="53" y="6.25" type="Valuta" align="right" width="5" id="499" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="6.25" type="Numero" align="right" width="5" id="499" pattern="1" hide_zero="1" text="##,@@">
<prescript description="F0.499 PRESCRIPT">#399 @
#299 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="0.25" type="Numero" align="right" width="10" id="510" pattern="1" hide_zero="1" text="#####@,@@@">
@ -463,12 +456,11 @@ ROUND 2
<font face="Courier New" bold="1" size="8" />
<source>#310+#320+#330+#340+#350+#360+#399</source>
</field>
<field x="53" y="7.25" type="Valuta" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="#########,@@">
<field x="53" y="7.25" type="Numero" align="right" width="5" id="4000" pattern="1" hide_zero="1" text="##,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F0.4000 PRESCRIPT">#3000 @
#2000 @
&#2F;
ROUND 2
#THIS !</prescript>
</field>
<field x="70.75" y="7.25" type="Numero" align="right" width="10" id="5000" pattern="1" hide_zero="1" text="#####@,@@@">