Patch level : 10.0 173

Files correlati     :  ve0.exe
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.2 patch 1272


git-svn-id: svn://10.65.10.50/trunk@17725 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-11-26 10:47:53 +00:00
parent 9223718b8c
commit a644845c22
41 changed files with 1661 additions and 173 deletions

@ -24,17 +24,19 @@ END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 2 "Codice "
FLAGS "FD"
FLAGS "FDG"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
MESSAGE COPY,1@
END
STRING F_RAGSOC 50
BEGIN
PROMPT 22 2 ""
FLAGS "D"
FLAGS "DG"
MESSAGE COPY,2@
END
NUMBER F_RITQTA 5 2
@ -158,5 +160,173 @@ END
ENDPAGE
PAGE "Configurazione chiusure mensili" -1 -1 0 0
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 1 "@bDitta corrente"
END
NUMBER DLG_NULL 5
BEGIN
PROMPT 2 2 "Codice "
GROUP 1
FLAGS "D"
END
STRING DLG_NULL 50
BEGIN
PROMPT 22 2 ""
FLAGS "D"
GROUP 2
END
STRING F_NUMCHI 4
BEGIN
PROMPT 2 4 "Numeraz. chiusura mensile "
FIELD NumChi
HELP "Codice numerazione"
USE %NUM SELECT I1>5
INPUT CODTAB F_NUMCHI
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUMCHI CODTAB
OUTPUT F_DNUMCHI S0
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_DNUMCHI 50
BEGIN
PROMPT 40 4 ""
FLAGS "D"
END
STRING F_TIPORIT 4
BEGIN
PROMPT 2 5 "Tipo doc.ritenuta mensile "
FIELD TipoRit
HELP "Codice tipo documento"
USE %TIP SELECT I1>5
INPUT CODTAB F_TIPORIT
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPORIT CODTAB
OUTPUT F_DTIPORIT S0
CHECKTYPE REQUIRED
FLAG "UP"
END
STRING F_DTIPORIT 50
BEGIN
PROMPT 40 5 ""
FLAGS "D"
END
STRING F_SPRITCHI 8
BEGIN
PROMPT 2 6 "Cod.spesa ritenuta mensile "
USE SPP SELECT (S6="V")
FLAGS "U"
INPUT CODTAB F_SPRITCHI
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
OUTPUT F_SPRITCHI CODTAB
OUTPUT F_DSPRITCHI S0
FIELD SpRitChi
CHECKTYPE REQUIRED
END
STRING F_DSPRITCHI 50
BEGIN
PROMPT 40 6 ""
FLAGS "D"
END
STRING F_TIPOCHI 4
BEGIN
PROMPT 2 7 "Tipo doc.chiusura mensile "
FIELD TipoChi
HELP "Codice tipo documento"
USE %TIP SELECT I1>5
INPUT CODTAB F_TIPOCHI
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPOCHI CODTAB
OUTPUT F_DTIPOCHI S0
CHECKTYPE REQUIRED
FLAG "UP"
END
STRING F_DTIPOCHI 50
BEGIN
PROMPT 40 7 ""
FLAGS "D"
END
STRING F_SPCHI 8
BEGIN
PROMPT 2 8 "Cod.spesa chiusura mensile "
USE SPP SELECT (S6="V")
FLAGS "U"
INPUT CODTAB F_SPCHI
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
OUTPUT F_SPCHI CODTAB
OUTPUT F_DSPCHI S0
FIELD SpChi
CHECKTYPE REQUIRED
END
STRING F_DSPCHI 50
BEGIN
PROMPT 40 8 ""
FLAGS "D"
END
STRING F_TIPOASS 4
BEGIN
PROMPT 2 9 "Tipo doc.assegno "
FIELD TipoAss
HELP "Codice tipo documento"
USE %TIP SELECT I1>5
INPUT CODTAB F_TIPOASS
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPOASS CODTAB
OUTPUT F_DTIPOASS S0
CHECKTYPE REQUIRED
FLAG "UP"
END
STRING F_DTIPOASS 50
BEGIN
PROMPT 40 9 ""
FLAGS "D"
END
STRING F_SPASS 8
BEGIN
PROMPT 2 10 "Cod.spesa assegni "
USE SPP SELECT (S6="V")
FLAGS "U"
INPUT CODTAB F_SPASS
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
OUTPUT F_SPASS CODTAB
OUTPUT F_DSPASS S0
FIELD SpAss
CHECKTYPE REQUIRED
END
STRING F_DSPASS 50
BEGIN
PROMPT 40 10 ""
FLAGS "D"
END
ENDPAGE
ENDMASK

@ -9,6 +9,7 @@
#include <defmask.h>
#include <execp.h>
#include <agasys.h>
#include <recset.h>
#include <tabutil.h>
#include <utility.h>
@ -21,6 +22,7 @@
#include <clifo.h>
#include "socicoop.h"
#include "co0700b.h"
#include <user.h>
@ -79,9 +81,55 @@ public:
virtual ~TConferimenti_mask() {}
};
bool genera_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
TConferimenti_mask& m = (TConferimenti_mask&) f.mask();
TMask select_mask("co0700b");
TDocumento campione(m.doc());
const TDate datadoc = campione.get_date(DOC_DATADOC);
long codsocio = campione.get_long(DOC_CODCF);
campione.zero(DOC_NDOC);
if (select_mask.run() == K_ENTER)
{
TISAM_recordset recset("USE SOCICOOP\nFROM CODCF=#DASOCIO\nTO CODCF=#ASOCIO");
recset.set_var("#DASOCIO", select_mask.get_long(F_DASOCIO));
recset.set_var("#ASOCIO", select_mask.get_long(F_ASOCIO));
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
const long socio = recset.get(SC_CODCF).as_int();
if (socio != codsocio)
{
const TDate dataass = recset.get(SC_DATAASS).as_date();
const TDate datarec = recset.get(SC_DATAREC).as_date();
const bool ok = (!dataass.ok() || dataass <= datadoc) && (!datarec.ok() || datarec >= datadoc);
if (ok)
{
TDocumento d(campione);
d.put(DOC_CODCF, socio);
d.write();
}
}
}
}
}
return true;
}
TConferimenti_mask::TConferimenti_mask(const char* tipodoc):
TDocumento_mask(tipodoc)
{
const int pos = id2pos(499);
if (pos >= 0)
set_handler(499, genera_handler);
}
int TConferimenti_application::rewrite( const TMask& m )
@ -103,6 +151,21 @@ int TConferimenti_application::rewrite( const TMask& m )
int TConferimenti_application::write( const TMask& m )
{
int err = NOERR;
TDocumento & doc = ((TConferimenti_mask & )m).doc();
const int nrows = doc.physical_rows();
bool zero_doc = true;
int r;
for (r = nrows; zero_doc && r >= 1; r--)
{
const TRiga_documento & row = doc[r];
if (row.imponibile() != ZERO)
zero_doc = false;
}
if (zero_doc)
return false;
const TTipo_documento tipodoc(m.get(172));
if (tipodoc.tipo() == 5)
{
@ -230,6 +293,15 @@ bool TConferimenti_query_mask::on_field_event(TOperable_field& o, TField_event e
}
}
break;
case F_NUMDOCRIF:
if (e == fe_button)
TDocumento_mask::numdocrif_search_handler(o, K_F9);
break;
case F_RAGSOCSEARCH:
if (e == fe_button)
TDocumento_mask::ragsoc_search_handler(o, K_F9);
break;
default:
break;
}

@ -113,6 +113,7 @@ BEGIN
FIELD NDOC
USE LF_DOC
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN LF_RIGHEDOC TO LF_DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC NRIGA==1
INPUT PROVV F_PROVV SELECT
INPUT ANNO F_ANNO SELECT
INPUT CODNUM F_CODNUM SELECT
@ -127,6 +128,7 @@ BEGIN
DISPLAY "C/F" TIPOCF
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
DISPLAY "Tipo Movimento" LF_RIGHEDOC->CODART
OUTPUT F_NDOC NDOC
OUTPUT F_STATO STATO
OUTPUT F_TIPODOC TIPODOC
@ -178,6 +180,18 @@ BEGIN
KEY 2
END
STRING F_NUMDOCRIF 7
BEGIN
PROMPT 46 8 "Riferimento "
FLAGS "B"
END
STRING F_RAGSOCSEARCH 50
BEGIN
PROMPT 2 9 "Ragione Sociale "
FLAGS "B"
END
ENDPAGE
ENDMASK

4
co/co0700b.h Executable file

@ -0,0 +1,4 @@
#define F_DASOCIO 101
#define F_ASOCIO 102
#define F_DARAGSOC 103
#define F_ARAGSOC 104

65
co/co0700b.uml Executable file

@ -0,0 +1,65 @@
#include "co0700b.h"
PAGE "Generazione prestazioni" -1 -1 78 10
NUMBER F_DASOCIO 6
BEGIN
PROMPT 5 1 "Da socio "
FIELD #DASOCIO
USE LF_CLIFO SELECT LF_SOCICOOP->CODCF!=""
JOIN LF_SOCICOOP INTO CODCF==CODCF
INPUT TIPOCF "F"
INPUT CODCF F_DASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
OUTPUT F_DASOCIO CODCF
OUTPUT F_DARAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_DARAGSOC 45
BEGIN
PROMPT 30 1 ""
FLAGS "D"
END
NUMBER F_ASOCIO 6
BEGIN
PROMPT 5 3 "A socio "
FIELD #ASOCIO
USE LF_CLIFO SELECT LF_SOCICOOP->CODCF!=""
JOIN LF_SOCICOOP INTO CODCF==CODCF
INPUT TIPOCF "F"
INPUT CODCF F_ASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_ASOCIO CODCF
OUTPUT F_ARAGSOC RAGSOC
STR_EXPR #F_ASOCIO>=#F_DASOCIO
WARNING "Range codice socio non corretto"
CHECKTYPE REQUIRED
END
STRING F_ARAGSOC 45
BEGIN
PROMPT 30 3 ""
FLAGS "D"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 "~Genera"
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

@ -172,8 +172,8 @@ void TImportazioneConf::main_loop()
const TString16 cf = trec.get(fcf);
const TDate datadoc(trec.get(fdata));
if ((cf != last_cf) || (datadoc != last_data))
{
// if ((cf != last_cf) || (datadoc != last_data)) non si raggruppa piu'
// {
if (d != NULL && d->rows() > 0)
{
m.doc() = *d;
@ -241,7 +241,7 @@ void TImportazioneConf::main_loop()
else
row.put(name, val);
}
}
// }
TString80 codice = row.get(RDOC_CODART);
TString80 key;
key.format("%06ld%s", codmercato, (const char*) codice);

@ -70,7 +70,7 @@ JOIN ANAMAG INTO CODART==CODARTMAG
FROM PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
TO PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
</sql>
<field x="2" y="1" type="Data" width="12" pattern="1">
<field x="2" y="1" type="Data" width="14" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.DATADOC</source>
</field>
@ -98,6 +98,30 @@ TO PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
<font face="Courier New" bold="1" size="10" />
<source>RDOC.NDOC</source>
</field>
<field x="2" y="2" type="Testo" valign="bottom" width="12" pattern="1" text="Cooperativa:">
<source>#PARENT.101@.CODCF</source>
</field>
<field x="12" y="2" type="Numero" valign="bottom" align="right" width="10" pattern="1" hide_zero="1" text="#######,@@">
<source>RDOC.QTAGG1</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.101</prescript>
</field>
<field x="25" y="2" type="Prezzo" valign="bottom" align="right" width="8" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B11.0 PRESCRIPT">"RDOC.PREZZONN" @
"ANAMAG.USER1" @
"X"
=
IF
"QTA" @
DUP
0
&#3C;&#3E;
IF
&#2F;
THEN
THEN
#THIS !
</prescript>
</field>
<field x="37" y="2" type="Valuta" valign="bottom" align="right" width="10" pattern="1" text="###.###.###,@@">
<source>RDOC.IMPCNN</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.103</prescript>
@ -117,15 +141,15 @@ TO PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
<source>RDOC.NCOLLI</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.108</prescript>
</field>
<field x="2" y="3" type="Testo" valign="bottom" width="12" pattern="1" text="Cooperativa:">
<field x="2" y="3" type="Testo" valign="bottom" width="10" pattern="1" text="Pescatore:">
<source>#PARENT.101@.CODCF</source>
</field>
<field x="12" y="3" type="Numero" valign="bottom" align="right" width="10" pattern="1" hide_zero="1" text="#######,@@">
<source>RDOC.QTAGG1</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.101</prescript>
<source>RDOC.QTA</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.102</prescript>
</field>
<field x="25" y="3" type="Prezzo" valign="bottom" align="right" width="8" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B11.0 PRESCRIPT">"RDOC.PREZZONN" @
<prescript description="B11.0 PRESCRIPT">"RDOC.PREZZONS" @
"ANAMAG.USER1" @
"X"
=
@ -172,30 +196,6 @@ THEN
<source>RDOC.SCONTOR</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.107</prescript>
</field>
<field x="2" y="4" type="Testo" valign="bottom" width="10" pattern="1" text="Pescatore:">
<source>#PARENT.101@.CODCF</source>
</field>
<field x="12" y="4" type="Numero" valign="bottom" align="right" width="10" pattern="1" hide_zero="1" text="#######,@@">
<source>RDOC.QTA</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.102</prescript>
</field>
<field x="25" y="4" type="Prezzo" valign="bottom" align="right" width="8" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B11.0 PRESCRIPT">"RDOC.PREZZONS" @
"ANAMAG.USER1" @
"X"
=
IF
"QTA" @
DUP
0
&#3C;&#3E;
IF
&#2F;
THEN
THEN
#THIS !
</prescript>
</field>
<field x="18" y="1" type="Stringa" width="4" id="100" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>#PARENT.CODCF</source>
@ -233,4 +233,4 @@ FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM
TO PROVV=D ANNO=#ANNO CODNUM=#CODNUM
</sql>
</report>
</report>

@ -32,7 +32,29 @@ TEstrattoConto_mask::TEstrattoConto_mask() :TAutomask ("co1300a")
bool TEstrattoConto_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
return TRUE;
switch (f.dlg())
{
case F_DATAINI:
case F_DATAFIN:
if (e == fe_init || e == fe_modify)
{
const TDate ini = get_date(F_DATAINI);
const TDate fin = get_date(F_DATAFIN);
if (ini.year() == fin.year() && ini.month() == fin.month() &&
ini.day() == 1 && fin.is_end_month())
enable(F_CHIUSURA);
else
{
disable(F_CHIUSURA);
reset(F_CHIUSURA);
}
}
break;
default:
break;
}
return true;
}
////////////////////////////////////////////////////////
@ -41,15 +63,30 @@ bool TEstrattoConto_mask::on_field_event(TOperable_field& f, TField_event e, lon
class TEstrattoConto_rep : public TDocument_report
{
int _riga;
int _riga;
long _socio;
real _saldocred;
real _saldodeb;
real _ritenuta;
TString _numchi;
TString _tiporit;
TString _sprit;
TString _tipochi;
TString _tipoass;
TString _spchi;
TString _spass;
bool _chiusura;
protected:
virtual bool use_mask() {return false;}
virtual bool set_usr_val(const TString& name, const TVariant& var);
bool incr_field(int idx, const TVariant& var);
void chiudi_mese() ;
public:
TEstrattoConto_rep();
TEstrattoConto_rep(bool chiusura);
};
bool TEstrattoConto_rep::incr_field(int idx, const TVariant& var)
@ -133,10 +170,67 @@ bool TEstrattoConto_rep::set_usr_val(const TString& name, const TVariant& var)
incr_field(9, var);
return true;
}
if (name == "#EC_SOCIO")
{
_socio = var.as_int();
return true;
}
if (name == "#EC_CRED")
{
const real val = var.as_real();
_saldocred += val;
TVariant cod;
get_record_field(RDOC_CODART, cod);
if (_sprit == cod.as_string() && val != ZERO)
{
_chiusura = false;
TVariant totrit;
get_usr_val("#F1.98", totrit);
real v = totrit.as_real() + val;
totrit = v;
set_usr_val("#F1.98", totrit);
}
return true;
}
if (name == "#EC_DEB")
{
const real val = var.as_real();
_saldodeb += val;
TVariant cod;
get_record_field(RDOC_CODART, cod);
if (_sprit == cod.as_string() && val != ZERO)
{
_chiusura = false;
TVariant totrit;
get_usr_val("#F1.98", totrit);
real v = totrit.as_real() - val;
totrit = v;
set_usr_val("#F1.98", totrit);
}
return true;
}
if (name == "#EC_RIT")
{
_ritenuta += var.as_real();
return true;
}
if (name == "#EC_CHIUDI")
{
chiudi_mese();
return true;
}
return TDocument_report::set_usr_val(name,var);
}
TEstrattoConto_rep::TEstrattoConto_rep()
TEstrattoConto_rep::TEstrattoConto_rep(bool chiusura) : _chiusura(chiusura), _saldocred(), _saldodeb(ZERO), _ritenuta(ZERO)
{
load("co1300a");
TReport_section& b11 = section('B',11);
@ -162,8 +256,18 @@ TEstrattoConto_rep::TEstrattoConto_rep()
}
y += 100;
}
}
TConfig c(CONFIG_DITTA);
_numchi = c.get("NumChi");
_tiporit = c.get("TipoRit");
_sprit = c.get("SpRitChi");
_tipochi = c.get("TipoChi");
_spchi = c.get("SpChi");
_tipoass = c.get("TipoAss");
_spass = c.get("SpAss");
}
////////////////////////////////////////////////////////
// APPLICAZIONE
@ -181,7 +285,7 @@ void TEstrattoConto::main_loop()
while (m.run() == K_ENTER)
{
TReport_book book;
TEstrattoConto_rep rep;
TEstrattoConto_rep rep(m.get_bool(F_CHIUSURA));
const TDate dataini = m.get_date(F_DATAINI);
const TDate datafin = m.get_date(F_DATAFIN);

@ -7,3 +7,4 @@
#define F_DATAFIN 105
#define F_DESDASOCIO 106
#define F_DESASOCIO 107
#define F_CHIUSURA 108

@ -25,6 +25,10 @@
<field x="2" y="2.5" type="Stringa" width="60" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>101@.CODCF+' '+TRIM(101@.RAGSOC[1,30])+' '+TRIM(101@.RAGSOC[31,50])</source>
<postscript description="H0.0 POSTSCRIPT">"101@.CODCF" @
#EC_SOCIO !
</postscript>
</field>
<field x="2" y="3.5" type="Stringa" width="50" pattern="1">
<source>101@.INDCF+" ,"+101@.CIVCF</source>
@ -82,7 +86,11 @@
<font face="Courier New" size="7" />
</field>
</section>
<section type="Head" level="1" />
<section type="Head" level="1">
<prescript description="H1 PRESCRIPT">0 #F1.98 !
0 #F1.107 !
0 #F1.108 !</prescript>
</section>
<section type="Body" />
<section type="Body" level="1" />
<section type="Head" level="11" />
@ -218,8 +226,12 @@ THEN
! \ lo scrivo effettivamente</prescript>
<postscript description="B11.107 POSTSCRIPT">#THIS @
DUP
DUP
"F1.107" +!
#EC_IMPCRE !</postscript>
#EC_IMPCRE !
#EC_CRED !
</postscript>
</field>
<field x="116" type="Valuta" align="right" width="15" id="108" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
@ -248,8 +260,12 @@ THEN
! \ lo scrivo effettivamente</prescript>
<postscript description="B11.108 POSTSCRIPT">#THIS @
DUP
DUP
"F1.108" +!
#EC_IMPDEB !</postscript>
#EC_IMPDEB !
#EC_DEB !
</postscript>
</field>
<field x="133" type="Prezzo" hidden="1" align="right" width="10" id="109" pattern="1" hide_zero="1" text="#########,@@">
<font face="Courier New" size="7" />
@ -276,7 +292,9 @@ DUP
<postscript description="B11.208 POSTSCRIPT">#THIS @
DUP
"F1.98" +!
"F1.108" +!</postscript>
#EC_RIT !
</postscript>
</field>
</section>
<section type="Foot" level="11" />
@ -320,6 +338,10 @@ DUP
<field border="2" y="12" type="Linea" width="170" height="0" pattern="1" />
<field x="116" type="Valuta" align="right" width="15" id="98" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" size="7" />
<prescript description="F1.98 PRESCRIPT">#THIS @
#108 @
+
#108 !</prescript>
</field>
<field x="46" y="1" type="Numero" align="right" width="8" id="102" pattern="1" text="###.###,@@">
<font face="Courier New" size="7" />
@ -348,24 +370,26 @@ ELSE
THEN
!</prescript>
</field>
<field x="158" y="1" type="Valuta" align="right" width="12" id="110" pattern="1" text="#########,@@">
<field x="158" y="1" type="Valuta" align="right" width="12" id="110" pattern="1" hide_zero="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
<prescript description="F1.110 PRESCRIPT">"F1.107" @ \ leggo il contenuto del campo 107
"F1.108" @ \ leggo il conetnuto del campo 108
- \ faccio la sottrazione tra i due
DUP \ duplico il risultato
0 &#3C;= IF \ se il risultato &#E8; negativo, gli cambio segno
* -1
-1 *
THEN \ e lo scrivo nel campo 110
"F1.110" !
#THIS !
</prescript>
<postscript description="F1.110 POSTSCRIPT">1 #EC_CHIUDI !</postscript>
</field>
</section>
<sql>USE DOC
<sql>USE DOC
KEY 2
SELECT BETWEEN(DATADOC,#DATAINI,#DATAFIN)
SELECT BETWEEN(DATADOC,#DATAINI,#DATAFIN)&#26;&#26;(201@.I1&#3E;4)
JOIN CLIFO ALIAS 101 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN COMUNI TO 101@ INTO STATO==STATOCF COM==COMCF
JOIN %NUM ALIAS 201@ INTO CODTAB==CODNUM
FROM TIPOCF='F' CODCF=#SOCIO PROVV='D' ANNO=#ANNO DATADOC=#DATAINI
TO TIPOCF='F' CODCF=#SOCIO PROVV='D' ANNO=#ANNO DATADOC=#DATAFIN
</sql>

@ -80,6 +80,11 @@ BEGIN
FIELD DATAFIN
END
BOOLEAN F_CHIUSURA
BEGIN
PROMPT 2 8 "Genera la chiusura mensile"
END
ENDPAGE
ENDMASK

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="co1600a" orientation="2" lpi="6">
<report name="co1600a" orientation="2" lpi="6" command="ve1 -3">
<description>Stampa Saldi Estratto Conto</description>
<font face="Courier New" size="8" />
<section type="Head">

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="co1700a" orientation="2" lpi="6">
<report name="co1700a" orientation="2" lpi="6" command="ve1 -3">
<description>Stampa Saldi Estratto Conto per Banca</description>
<font face="Courier New" size="8" />
<section type="Head">

8
co/co1800a.h Executable file

@ -0,0 +1,8 @@
#define F_DADATA 101
#define F_ADATA 102
#define F_ANNO 103
#define F_FROMCODART 104
#define F_TOCODART 105
#define F_CODNUM 106
#define F_DASOCIO 107
#define F_ASOCIO 108

118
co/co1800a.rep Executable file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="co1800a" orientation="2" lpi="6" command="ve1 -3">
<description>STAMPA CONFERIMENTI</description>
<font face="Courier New" size="8" />
<section type="Head">
<field x="133.08" y="0.18" type="Testo" valign="bottom" width="6" pattern="1" text="Data" />
<field x="139.08" y="0.18" type="Data" valign="bottom" align="right" width="12" pattern="1">
<source>#SYSTEM.DATE</source>
</field>
<field x="157.08" y="0.18" type="Testo" valign="bottom" width="5" pattern="1" text="Pag." />
<field x="165.08" y="0.18" type="Numero" valign="bottom" align="right" width="4" pattern="1">
<source>#REPORT.PAGE</source>
</field>
<field x="71.18" y="0.62" type="Testo" valign="center" align="center" width="42" height="2" pattern="1" text="STAMPA CONFERIMENTI">
<font face="Courier New" bold="1" size="14" />
</field>
<field border="2" x="0.18" y="2.62" type="Linea" width="170" height="0" pattern="1" />
<field x="3.18" y="3.62" type="Testo" width="6" pattern="1" text="Ditta" />
<field x="10.18" y="3.62" type="Stringa" width="60" pattern="1">
<source>#SYSTEM.RAGSOC</source>
</field>
<field x="3.18" y="4.62" type="Testo" valign="bottom" width="12" pattern="1" text="Dalla data" />
<field x="15.18" y="4.62" type="Data" valign="bottom" align="right" width="12" pattern="1">
<source>#DADATA</source>
</field>
<field x="28.18" y="4.62" type="Testo" valign="bottom" align="center" width="10" pattern="1" text="alla data" />
<field x="40.18" y="4.62" type="Data" valign="bottom" align="right" width="12" pattern="1">
<source>#ADATA</source>
</field>
<field border="2" x="0.18" y="6.62" type="Linea" width="170" height="0" pattern="1" />
<field x="2" y="7" type="Testo" width="12" pattern="1" text="Data">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="10" y="7" type="Testo" align="right" width="8" pattern="1" text="N.reg.">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="30" y="7" type="Testo" width="27" pattern="1" text="Codice socio">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="86.5" y="8" type="Testo" valign="bottom" align="right" width="15" pattern="1" text="Importo" />
<field x="107.5" y="8" type="Testo" valign="bottom" align="right" width="4" pattern="1" text="IVA" />
<field x="119.5" y="8" type="Testo" valign="bottom" align="right" width="15" pattern="1" text="Imposta" />
<field x="6.5" y="8.25" type="Testo" width="50" pattern="1" text="Prestazione">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" y="10" type="Linea" width="170" height="0" pattern="1" />
</section>
<section type="Head" level="1">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101|RESET,F1.102|RESET,F1.103|RESET,F1.104|RESET,F1.105|RESET,F1.106|RESET,F1.107|RESET,F1.108</prescript>
</section>
<section type="Body" />
<section type="Body" level="1" />
<section type="Head" level="11">
<field x="39" y="0.25" type="Stringa" width="50" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>TRIM(20.RAGSOC[1,30])+' '+TRIM(20.RAGSOC[31,50])</source>
</field>
<field x="2.06" y="0.31" type="Data" width="12" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>DATADOC</source>
</field>
<field x="15.06" y="0.31" type="Numero" align="right" width="8" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>NDOC</source>
</field>
<field x="30" y="0.31" type="Numero" align="right" width="7" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>CODCF</source>
</field>
</section>
<section type="Body" level="11">
<sql>USE RDOC
SELECT BETWEEN(CODART,#PARENT.#DACODART,#PARENT.#ACODART)
FROM PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
TO PROVV=#PARENT.PROVV ANNO=#PARENT.ANNO CODNUM=#PARENT.CODNUM NDOC=#PARENT.NDOC
</sql>
<field x="2" type="Numero" align="right" width="3" pattern="1" hide_zero="1">
<source>NRIGA</source>
</field>
<field x="6.5" type="Stringa" width="3" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>RDOC.CODARTMAG</source>
</field>
<field x="10.5" type="Stringa" width="51" pattern="1">
<font face="Courier New" bold="1" size="10" />
<source>DESCR</source>
</field>
<field x="86.5" type="Valuta" valign="bottom" align="right" width="15" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>RDOC.IMPNS</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE ADD,F1.105</prescript>
</field>
<field x="107.5" type="Stringa" valign="bottom" align="right" width="6" pattern="1">
<source>RDOC.CODIVA</source>
<prescript description="B11.0 PRESCRIPT">MESSAGE TABLEREAD,%IVA,#THIS,S1</prescript>
</field>
<field x="119" type="Valuta" valign="bottom" align="right" width="15" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>RDOC.IMPOSTA</source>
</field>
</section>
<section type="Foot" level="11" height="1" />
<section type="Foot" />
<section type="Foot" level="1">
<field border="2" y="1" type="Linea" width="170" height="0" pattern="1" />
<field x="2" y="2" type="Testo" width="50" pattern="1" text="Totale">
<font face="Courier New" bold="1" size="10" />
</field>
<field x="86.5" y="2" type="Valuta" valign="bottom" align="right" width="15" id="105" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="130" y="3" type="Valuta" align="right" width="18" id="106" pattern="1" hide_zero="1" text="###.###.###,@@" />
<field x="155" y="3" type="Valuta" align="right" width="13" id="107" pattern="1" hide_zero="1" text="###.###.###,@@" />
</section>
<sql>USE DOC
SELECT (BETWEEN(DATADOC,#DADATA,#ADATA))&#26;&#26;(BETWEEN(CODCF,#DASOCIO,#ASOCIO))
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM
TO PROVV=D ANNO=#ANNO CODNUM=#CODNUM
</sql>
</report>

119
co/co1800a.uml Executable file

@ -0,0 +1,119 @@
#include "co1800a.h"
PAGE "Stampa Prestazioni" -1 -1 78 10
STRING F_CODNUM 4
BEGIN
PROMPT 5 1 "Numerazione "
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizone@50" S0
OUTPUT F_CODNUM CODTAB
CHECKTYPE REQUIRED
FIELD #CODNUM
FLAG "U"
END
NUMBER F_ANNO 4
BEGIN
PROMPT 50 1 "Anno "
FIELD #ANNO
CHECKTYPE REQUIRED
END
NUMBER F_DASOCIO 6
BEGIN
PROMPT 5 2 "Da socio "
FIELD #DASOCIO
USE LF_CLIFO SELECT LF_SOCICOOP->CODCF!=""
JOIN LF_SOCICOOP INTO CODCF==CODCF
INPUT TIPOCF "F"
INPUT CODCF F_DASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
OUTPUT F_DASOCIO CODCF
END
NUMBER F_ASOCIO 6
BEGIN
PROMPT 5 3 "A socio "
FIELD #ASOCIO
USE LF_CLIFO SELECT LF_SOCICOOP->CODCF!=""
JOIN LF_SOCICOOP INTO CODCF==CODCF
INPUT TIPOCF "F"
INPUT CODCF F_ASOCIO
DISPLAY "Codice" CODCF
DISPLAY "Ragione sociale@50" 20->RAGSOC
DISPLAY "Codice fiscale@16" 20->COFI
OUTPUT F_ASOCIO CODCF
STR_EXPR #F_ASOCIO>=#F_DASOCIO
WARNING "Range codice socio non corretto"
CHECKTYPE REQUIRED
END
STRING F_FROMCODART 8
BEGIN
PROMPT 5 4 "Da prestazione "
FLAGS "U"
USE SPP
INPUT CODTAB F_FROMCODART
DISPLAY "Prestazione@20" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_FROMCODART CODTAB
GROUP G_ART G_ALL
FIELD #DACODART
END
STRING F_TOCODART 8
BEGIN
PROMPT 5 5 "A prestazione "
FLAGS "U"
USE SPP
INPUT CODTAB F_TOCODART
DISPLAY "Prestazione@20" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TOCODART CODTAB
GROUP G_ART G_ALL
STR_EXPR #F_TOCODART>=#F_FROMCODART
WARNING "Range codice articolo non corretto"
FIELD #ACODART
END
DATE F_DADATA
BEGIN
PROMPT 50 2 "Da data "
FIELD #DADATA
CHECKTYPE REQUIRED
END
DATE F_ADATA
BEGIN
PROMPT 50 3 "A data "
FIELD #ADATA
CHECKTYPE REQUIRED
END
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -12 -1 "~Stampa"
MESSAGE EXIT,K_ENTER
END
STRING DLG_PROFILE 50
BEGIN
PROMPT 5 7 "Profilo "
PSELECT
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

@ -14,4 +14,17 @@
#define F_SPESACASSE 113
#define F_D_SPESACASSE 114
#define F_PROGQTA 115
#define F_NUMCHI 116
#define F_DNUMCHI 117
#define F_TIPORIT 118
#define F_DTIPORIT 119
#define F_SPRITCHI 120
#define F_DSPRITCHI 121
#define F_TIPOCHI 122
#define F_DTIPOCHI 123
#define F_SPCHI 124
#define F_DSPCHI 125
#define F_TIPOASS 126
#define F_DTIPOASS 127
#define F_SPASS 128
#define F_DSPASS 129

@ -45,6 +45,7 @@ Module = 29
Flags = ""
Item_01 = "Stampa libro soci", "ba8 -4 co1100a", "F"
Item_02 = "Stampa conferimenti", "ve1 -3 co1200a", "F"
Item_03 = "Stampa estratto conto", "co1 -2", "F"
Item_04 = "Stampa saldi estratto conto", "ve1 -3 co1600a", "F"
Item_05 = "Stampa saldi estratto conto per banca", "ve1 -3 co1700a", "F"
Item_02 = "Stampa prestazioni", "ve1 -3 co1800a", "F"
Item_04 = "Stampa estratto conto", "co1 -2", "F"
Item_05 = "Stampa saldi estratto conto", "ve1 -3 co1600a", "F"
Item_06 = "Stampa saldi estratto conto per banca", "ve1 -3 co1700a", "F"

@ -130,16 +130,17 @@ HE "Codice del socio del documento"
FLAG "R"
FI CODCF
GR 1
US 161 KE 1
JO 20 INTO TIPOCF=='F' CODCF==CODCF
US 20 KE 1 SELECT 161->CODCF!=""
JO 161 INTO CODCF==CODCF
IN TIPOCF "F"
IN CODCF 108
DI "Codice" CODCF
DI "Ragione Sociale@50" 20->RAGSOC
DI "Partita IVA@12" 20->PAIV
DI "Ragione Sociale@50" RAGSOC
DI "Partita IVA@12" PAIV
OU 108 CODCF
OU 301 20->RAGSOC
OU 328 20->COFI
OU 340 20->PAIV
OU 301 RAGSOC
OU 328 COFI
OU 340 PAIV
CH REQUIRED
ADD RU co0 -5
ME CO,10@
@ -150,15 +151,15 @@ WA "Socio assente"
HE "Ragione sociale del socio del documento"
PR 24 6 ""
GR 1
US 20 KE 2
US 20 KE 2 SELECT 161->CODCF!=""
JO 161 INTO CODCF==CODCF
IN TIPOCF "F"
IN RAGSOC 301
DI "Ragione Sociale@50" RAGSOC
DI "Partita IVA@12" PAIV
DI "Codice" CODCF
OU 108 CODCF
OU 301 RAGSOC
CH REQUIRED
CO OU 108
CH SEARCH
ADD RU cg0 -1 F
ME CO,11@
EN

@ -10,7 +10,7 @@ PAGE "Correlazione articolo" -1 -1 78 19
NUMBER F_CODMER 6
BEGIN
PROMPT 2 2 "Mercato "
PROMPT 2 2 "Mercato "
KEY 1
FIELD CODTAB[1,6]
USE LF_MERCATICOOP
@ -24,15 +24,15 @@ BEGIN
CHECKTYPE FORCED
END
STRING F_DESMER 50
STRING F_DESMER 50 40
BEGIN
PROMPT 14 2 ""
PROMPT 34 2 ""
FLAGS "D"
END
STRING F_CODARTMER 10
BEGIN
PROMPT 2 3 "Cod. art. mercato "
PROMPT 2 4 "Art.mercato "
KEY 1
FIELD CODTAB[7,16]
USE %COA
@ -49,9 +49,9 @@ BEGIN
CHECKTYPE REQUIRED
END
STRING F_DESCR 50
STRING F_DESCR 50 40
BEGIN
PROMPT 14 3 "Descrizione "
PROMPT 34 4 ""
KEY 2
FIELD S0
USE %COA KEY 2
@ -66,7 +66,7 @@ END
STRING F_CODART 20
BEGIN
PROMPT 2 4 "Articolo "
PROMPT 2 6 "Articolo "
FLAG "U"
FIELD S1
USE LF_ANAMAG
@ -78,9 +78,9 @@ BEGIN
CHECKTYPE REQUIRED
END
STRING F_DESART 50
STRING F_DESART 50 40
BEGIN
PROMPT 24 4 ""
PROMPT 34 6 ""
USE LF_ANAMAG KEY 2
INPUT DESCR F_DESART
DISPLAY "Codice@20" CODART

@ -162,6 +162,11 @@ BE
PR 42 7 "Partita Iva "
FLAG "D"
EN
BU 499 10 2
BE
PR 2 8 "~Genera"
ME EXIT,20082
EN
ST 111 3
BE
PR 2 11 "Valuta "

@ -313,7 +313,7 @@ class TQuery_mask : public TAutomask
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void create_browse1(TEdit_field& kfld, int level, short key_id) const;
void create_browse2(TEdit_field& kfld, int level, short key_id, short des_id) const ;
bool ask_new_code(const TCodice_articolo& oldcode, TCodice_articolo& newcode) const;
@ -352,6 +352,7 @@ void TQuery_mask::create_browse1(TEdit_field& kfld, int level, short key_id) con
out << "\" CODTAB[2,0]" << endl;
out << "DI \"" << TR("Descrizione") << "@50\" S0" << endl;
out << "OU " << id << " CODTAB[2,0]" << endl;
out << "OU " << 300 + level << " S0" << endl;
if (level == 1)
out << "CH RE" << endl;
else
@ -619,17 +620,17 @@ bool TQuery_mask::copy_distinct(const TCodice_articolo& oldcode,
char row_type = row.get_char("TIPO");
// Tento rigenerazione del codice solo su articoli e distinte
if (row_type == 'A' || row_type == 'D')
{
{
const TCodice_articolo oldsub = row.get("CODCOMP");
TCodice_articolo newsub;
if (generate_subcode(oldcode, newcode, oldsub, newsub))
{
row.put("CODCOMP", newsub);
// Controllo se la riga e' in realta' una distinta
if (row_type == 'A' && !cache().get(LF_DIST, oldsub).empty())
row_type = 'D';
if (row_type == 'D')
copy_distinct(oldsub, newsub, recursive);
// Controllo se la riga e' in realta' una distinta
if (row_type == 'A' && !cache().get(LF_DIST, oldsub).empty())
row_type = 'D';
if (row_type == 'D')
copy_distinct(oldsub, newsub, recursive);
else
copy_article(oldsub, newsub);
}
@ -769,21 +770,21 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
if (oldcode.blank())
error_box(TR("Selezionare un codice"));
else
{
{
TCodice_articolo newcode;
if (ask_new_code(oldcode, newcode))
{
{
bool recursive = are_similar(oldcode, newcode);
if (recursive)
recursive = yesno_box(TR("Si desidera riportare le modifiche al codice anche sui componenti?"));
if (copy_distinct(oldcode, newcode, recursive))
{
{
set(F_CODICEQ, newcode); // Passa in modifica della nuova disitinta
stop_run(K_ENTER);
}
}
}
}
}
break;
case F_EXPLODE:
if (e == fe_button)
@ -1308,7 +1309,7 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long
}
}
break;
default:
default:
break;
}
return TRUE;

@ -1,3 +1,4 @@
#include <diction.h>
#include <odbcrset.h>
#include <sqlset.h>
#include <textset.h>
@ -356,7 +357,7 @@ void TODBC_recordset::set(const char* sql)
TString pwd = conn.get(); pwd.strip("\"");
TString dir = conn.get(); dir.strip("\"");
if (!connect(dsn, usr, pwd, dir))
error_box("Couldn't connect to %s", (const char*)dsn);
error_box(TR("Impossibile connettersi al DSN %s"), (const char*)dsn);
}
}
}

@ -121,26 +121,26 @@ void TVariable_field::zero()
////////////////////////////////////////////////////////////
TVariable_rectype::TVariable_rectype(int logicnum)
: TRectype(logicnum), _memo_fld_to_load(FALSE)
: TRectype(logicnum), _memo_fld_to_load(false)
{
}
TVariable_rectype::TVariable_rectype(const TBaseisamfile* i)
: TRectype(i), _memo_fld_to_load(FALSE)
: TRectype(i), _memo_fld_to_load(false)
{
}
TVariable_rectype::TVariable_rectype(const TRectype& r)
: TRectype(r), _memo_fld_to_load(FALSE)
: TRectype(r), _memo_fld_to_load(false)
{
}
TVariable_rectype::TVariable_rectype(const TVariable_rectype& r)
: TRectype((const TRectype &) r), _memo_fld_to_load(FALSE)
: TRectype((const TRectype &) r), _memo_fld_to_load(false)
{
_virtual_fields = r._virtual_fields;
set_memo_fld(r._memo_fld);
@ -157,17 +157,14 @@ void TVariable_rectype::write_memo(TIsam_handle file, const TRecnotype recno)
if (_memo_fld.not_empty())
{
TToken_string t(256, '\n');
TString s(80);
for (TVariable_field * vf = (TVariable_field *) _virtual_fields.first_item(); vf;
vf = (TVariable_field *) _virtual_fields.succ_item())
{
const TString & val = vf->get();
if (val.not_empty())
const TString& val = vf->get();
if (val.full() && val != "0")
{
s = vf->name();
s << "=" << val;
t.add(s);
t.add(vf->name());
t << "=" << val;
}
}
put(_memo_fld, t);
@ -213,7 +210,7 @@ void TVariable_rectype::init_memo(TRecnotype recno, TIsam_handle file)
{
TRectype::init_memo(recno, file);
if (recno != RECORD_NON_FISICO)
_memo_fld_to_load = _memo_fld.not_empty();
_memo_fld_to_load = _memo_fld.not_empty();
}
TObject* TVariable_rectype::dup() const

@ -28,6 +28,7 @@ Trasferimento Maestri a TeamSystem
Convesione file Landi
Stampa bollettini postali Condeco
copia movimenti magazzino AZ
Importazione anagrafiche e fatture da paghe
PG0069 Nautilus (Sipag)
Importazione e contabilizzazione fatture Nautilus

@ -15,6 +15,8 @@ int main(int argc, char** argv)
pg0001400(argc, argv); break; // stampa bollettini postali Condeco
case 4:
pg0001500(argc, argv); break; // copia movimenti magazzino AZ
case 5:
pg0001600(argc, argv); break; // ricezione clienti e movimenti da paghe
case 0:
default:
pg0001100(argc, argv);

@ -2,4 +2,5 @@ int pg0001100(int argc, char* argv[]);
int pg0001200(int argc, char* argv[]);
int pg0001300(int argc, char* argv[]);
int pg0001400(int argc, char* argv[]);
int pg0001500(int argc, char* argv[]);
int pg0001500(int argc, char* argv[]);
int pg0001600(int argc, char* argv[]);

361
ps/pg0001600.cpp Executable file

@ -0,0 +1,361 @@
#include <applicat.h>
#include <automask.h>
#include <execp.h>
#include <progind.h>
#include <reprint.h>
#include <reputils.h>
#include <utility.h>
#include "pg0001.h"
#include "pg0001600a.h"
#include "textset.h"
#include "clifo.h"
#include "cfven.h"
#include "comuni.h"
#include "doc.h"
#include "rdoc.h"
#include "..\cg\cglib01.h"
#include "..\ve\velib.h"
///////////////////////////////////////////////////////////
// TCLienti_textset
///////////////////////////////////////////////////////////
class TClienti_recset : public TAS400_recordset
{
TAssoc_array _index;
protected:
void add_field(const char* name = "Filler", char tipo = 'a', int len = 0, int from = -1,
const char* def = NULL);
public:
TClienti_recset(const char * query);
};
void TClienti_recset::add_field(const char* name, char tipo, int len, int from,
const char* def)
{
const bool required = false;
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
const int pos = from - 1;
if (def && *def)
{
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
TVariant var(def); var.convert_to(t);
create_field(name, pos, len, t, required, var);
}
else
create_field(name, pos, len, t, required);
}
TClienti_recset::TClienti_recset(const char * query)
: TAS400_recordset(TString("AS400(2138)\n") << query)
{
const char a = 'a';
const char n = 'n';
const bool o = true;
const bool f = false;
add_field("FLD001", n, 4, 1); // codice azienda
add_field("FLD002", a, 2, 5); // filiale
add_field("FLD003", a, 1, 7); // stato record se A annullata
add_field(CLI_TIPOPERS, n, 1, 8); // società = 2 persona fisica = 1
add_field(CLI_RAGSOC, a, 45, 9); // Ragione sociale
add_field("FLD006", a, 30, 54); // indirizzo
add_field("FLD007", a, 25, 84); // Comune di residenza
add_field("FLD008", a, 2, 109); // Provincia di residenza
add_field("FLD009", a, 5, 121); // C.a.p.
add_field(CLI_COFI, a, 16, 126); // Codice fiscale o partita I.v.a
add_field(CLI_PAIV, a, 11, 142); // Partita I.v.a.
add_field("FLD012", a, 30, 153); // Indirizzo domicilio fiscale
add_field("FLD013", a, 25, 183); // Comune domicilio fiscale
add_field("FLD014", a, 2, 208); // Provincia domicilio fiscale
add_field("FLD015", a, 5, 220); // C.a.p. domicilio fiscale
add_field("FLD016", a, 1, 241); // Sesso
add_field("FLD017", a, 4, 242); // anno di nascita o costituzione
add_field("FLD018", a, 2, 246); // mese di nascita o costituzione
add_field("FLD019", a, 2, 248); // giorno di nascita o costituzione
add_field("FLD020", a, 25, 250); // comune di nascita o costituzione
add_field("FLD021", a, 2, 275); // provincia di nascita o costituzione
add_field("FLD022", a, 20, 277); // Cognome ditta individuale
add_field("FLD023", a, 15, 297); // Nome ditta individuale
add_field("FLD024", a, 30, 312); // Indirizzo domicilio fiscale
add_field("FLD025", a, 23, 342); // Comune domicilio fiscale
add_field("FLD026", a, 5, 375); // C.a.p. domicilio fiscale
add_field(CLI_INDCF, a, 30, 394); // Indirizzo sede legale
add_field(CLI_COMCF, a, 25, 424); // comune sede legale
add_field("FLD029", a, 2, 449); // provincia sede legale
add_field(CLI_CAPCF, a, 5, 461); // c..a.p. sede legale
add_field(CLI_PTEL, a, 4, 466); // prefisso telefonico sede legale
add_field(CLI_TEL, a, 10, 470); // numero telefonico sede legale
add_field("FLD033", a, 2, 480); // provincia costituzione
add_field("FLD034", n, 1, 494); // Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
add_field("FILLER", n, 1642, 495); // Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
}
// TAutomask
class TPaghe2mov_mask : public TAutomask
{
void serialize(bool bSave);
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TPaghe2mov_mask();
virtual ~TPaghe2mov_mask();
};
TPaghe2mov_mask::TPaghe2mov_mask() : TAutomask("pg0001600a")
{
serialize(false);
}
TPaghe2mov_mask::~TPaghe2mov_mask()
{
serialize(true);
}
bool TPaghe2mov_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
return TRUE;
}
void TPaghe2mov_mask::serialize(bool bSave)
{
const char* defpar = "MAIN";
TConfig ini("pg0001conf.ini", defpar);
for (int i = fields()-1; i >= 0; i--)
{
TMask_field& f = fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
{
if (bSave)
fr->write(ini, defpar, f.get());
else
f.set(fr->read(ini, defpar));
}
}
}
HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
{
if (k == K_F9)
{
FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC));
strcpy(fs.type, "");
strcpy(fs.name, f.get());
xvt_fsys_get_default_dir(&fs.dir);
xvt_fsys_save_dir();
if (xvt_dm_post_file_open(&fs, TR("Selezione file")) == FL_OK)
{
TFilename n;
xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size());
n.add(fs.name);
f.set(n);
}
xvt_fsys_restore_dir();
f.set_focus();
}
return TRUE;
}
///////////////////////////////////////////////////////////
// TPaghe2mov application
///////////////////////////////////////////////////////////
class TPaghe2mov : public TSkeleton_application
{
TPaghe2mov_mask* _m;
TLog_report* _log;
protected:
virtual const char * extra_modules() const {return "ba";}
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
void load_cli();
TPaghe2mov() {}
};
TPaghe2mov& app() { return (TPaghe2mov&) main_app(); }
bool TPaghe2mov::create()
{
_m = new TPaghe2mov_mask();
_m->set_handler(F_INPATH, browse_file_handler);
return TSkeleton_application::create ();
}
bool TPaghe2mov::destroy()
{
delete _m;
return TApplication::destroy();
}
void TPaghe2mov::load_cli()
{
TString query("SELECT * FROM ");
TFilename name = _m->get(F_INPATH);
const bool aggcli = _m->get_bool(F_AGGCLI);
name.add("utenti.txt");
if (name.exist())
{
TLocalisamfile clifo(LF_CLIFO);
TLocalisamfile cfven(LF_CFVEN);
query << name;
TClienti_recset clienti(query);
TProgind pi(clienti.items(), TR("Scansione clienti"), true, true);
for (bool ok = clienti.move_first(); ok; ok = clienti.move_next())
{
if (!pi.addstatus(1))
break;
clifo.zero();
clifo.put(CLI_TIPOCF, "C");
TString cf(clienti.get(CLI_COFI).as_string());
TString paiv(clienti.get(CLI_PAIV).as_string());
cf.trim();
paiv.trim();
if (clienti.get("FLD003").as_string() != "A")
{
bool found = false;
if (cf.full())
{
clifo.setkey(4);
clifo.put(CLI_COFI, cf);
found = clifo.read(_isequal) == NOERR;
}
if (!found && paiv.full())
{
clifo.setkey(5);
clifo.put(CLI_PAIV, paiv);
found = clifo.read(_isequal) == NOERR;
}
clifo.setkey(1);
if (!found)
{
long codcf = 1L;
clifo.zero();
clifo.put(CLI_TIPOCF, "F");
if (clifo.read(_isgteq) == NOERR)
clifo.prev() ;
if (clifo.get(CLI_TIPOCF) == "C")
codcf += clifo.get_long(CLI_CODCF);
clifo.zero();
clifo.put(CLI_TIPOCF, "C");
clifo.put(CLI_CODCF, codcf);
cfven.zero();
cfven.put(CFV_TIPOCF, "C");
cfven.put(CFV_CODCF, codcf);
cfven.rewrite();
}
else
if (!aggcli)
continue;
clifo.put(CLI_TIPOPERS, clienti.get(CLI_TIPOPERS).as_string());
clifo.put(CLI_RAGSOC, clienti.get(CLI_RAGSOC).as_string());
clifo.put(CLI_INDCF, clienti.get(CLI_INDCF).as_string());
clifo.put(CLI_CAPCF, clienti.get(CLI_CAPCF).as_string());
const TString8 cap(clienti.get(CLI_CAPCF).as_string());
TString80 comune(clienti.get(CLI_COMCF).as_string());
comune.trim();
const TString& codcom = cap2comune(cap, comune);
clifo.put(CLI_COMCF, cap);
if (codcom.full())
comune.cut(0);
clifo.put(CLI_LOCCF, comune);
clifo.put(CLI_COMCF, codcom);
clifo.put(CLI_COFI, cf);
clifo.put(CLI_PAIV, paiv);
if (found)
{
const int err = clifo.rewrite();
TString msg("Aggiornamento cliente ");
msg << clifo.get(CLI_CODCF) << " - " << clienti.get(CLI_RAGSOC).as_string();
if (err == NOERR)
_log->log(0, msg);
else
{
msg << " - errore n. " << err;
_log->log(2, msg);
}
}
else
{
const int err = clifo.write();
TString msg("Inserimento cliente ");
msg << clifo.get(CLI_CODCF) << " - " << clienti.get(CLI_RAGSOC).as_string();
if (err == NOERR)
_log->log(0, msg);
else
{
msg << " - errore n. " << err;
_log->log(2, msg);
}
}
}
}
}
}
void TPaghe2mov::main_loop()
{
// eliminazione files delle elaborazioni precedenti
TString_array transactions;
TFilename pgfiles; pgfiles.tempdir();
pgfiles.add("conde*.ini");
list_files(pgfiles, transactions);
FOR_EACH_ARRAY_ROW(transactions, row, name)
remove_file(*name);
// main
if (_m->run() == K_ENTER)
{
const char* const title = TR("Importazione clienti");
_log = new TLog_report(title);
load_cli();
TReport_book book;
book.add(*_log);
book.preview();
}
}
int pg0001600(int argc, char* argv[])
{
TPaghe2mov app;
app.run(argc, argv, TR("Ricezione clienti e fatture da paghe"));
return TRUE;
}

6
ps/pg0001600a.h Executable file

@ -0,0 +1,6 @@
// anagrafiche e fatture da paghe
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_INPATH 103
#define F_AGGCLI 104

57
ps/pg0001600a.uml Executable file

@ -0,0 +1,57 @@
#include "pg0001600a.h"
PAGE "Importazione anagrafiche e fatture da paghe" -1 -1 78 20
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 4 "Sorgente"
END
STRING F_INPATH 256 39
BEGIN
PROMPT 3 5 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD PagheInPath
END
BOOLEAN F_AGGCLI
BEGIN
PROMPT 3 7 "Aggiorna clienti esistenti"
FIELD AggCli
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

@ -92,12 +92,14 @@ class TDettaglio_receiver : public TSkeleton_application
protected:
void load_clifo(const TDettaglio_mask & m);
void load_classi(const TDettaglio_mask & m);
void load_marche(const TDettaglio_mask & m);
void load_articoli(const TDettaglio_mask & m);
void load_barcode(const TDettaglio_mask & m);
void load_listino(const TDettaglio_mask & m);
void load_giacenze(const TDettaglio_mask & m);
void load_costi(const TDettaglio_mask & m);
void add_to_tab(const TString & codtab, const TString & cod);
void add_to_tab(const TString & codtab, const TString & cod, const char * desc = "");
const TString & build_codart(const TString & gruppo, const long codice);
virtual const char * extra_modules() const {return "vd";}
@ -769,6 +771,99 @@ TCosti_textset::TCosti_textset(const char* query)
add_field("INVMAG", 8, an, 381);
}
///////////////////////////////////////////////////////////
// TClasse_textset
///////////////////////////////////////////////////////////
class TClasse_textset : public TAS400_recordset
{
protected:
protected:
void add_field(const char* name = "Filler", int len = 0, char tipo = 'a',
int from = -1, const char* def = NULL);
public:
TClasse_textset(const char* query = "");
};
void TClasse_textset::add_field(const char* name, int len,
char tipo, int from, const char* def)
{
const bool required = false;
TString80 fname(name);
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
const int pos = from - 1;
if (def && *def)
{
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
TVariant var(def); var.convert_to(t);
create_field(fname, pos, len, t, required, var);
}
else
create_field(fname, pos, len, t, required);
}
TClasse_textset::TClasse_textset(const char* query)
: TAS400_recordset(TString("AS400(47,0,0)\n") << query)
{
const char an = 'a';
const char n = 'n';
add_field("CODCLA", 2, an, 1);
add_field("DESCLA", 20, an, 3);
add_field("TRASF", 1, an, 23);
add_field("PERCENT", 22, an, 24);
}
///////////////////////////////////////////////////////////
// TMarca_textset
///////////////////////////////////////////////////////////
class TMarca_textset : public TAS400_recordset
{
protected:
protected:
void add_field(const char* name = "Filler", int len = 0, char tipo = 'a',
int from = -1, const char* def = NULL);
public:
TMarca_textset(const char* query = "");
};
void TMarca_textset::add_field(const char* name, int len,
char tipo, int from, const char* def)
{
const bool required = false;
TString80 fname(name);
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
const int pos = from - 1;
if (def && *def)
{
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
TVariant var(def); var.convert_to(t);
create_field(fname, pos, len, t, required, var);
}
else
create_field(fname, pos, len, t, required);
}
TMarca_textset::TMarca_textset(const char* query)
: TAS400_recordset(TString("AS400(29,0,0)\n") << query)
{
const char an = 'a';
const char n = 'n';
add_field("CODMAR", 6, an, 1);
add_field("DESMAR", 20, an, 7);
add_field("TRASF", 1, an, 27);
}
///////////////////////////////////////////////////////////
// TDettaglio_receiver
///////////////////////////////////////////////////////////
@ -793,19 +888,63 @@ const TString & TDettaglio_receiver::build_codart(const TString & gruppo, const
return tmp;
}
void TDettaglio_receiver::add_to_tab(const TString & codtab, const TString & cod)
void TDettaglio_receiver::add_to_tab(const TString & codtab, const TString & cod, const char * desc)
{
if (cod.full())
{
TTable tab(codtab);
TString d(desc);
tab.put("CODTAB", cod);
d.trim();
if (tab.read() != NOERR)
{
tab.zero();
tab.put("CODTAB", cod);
tab.put("S0", desc);
tab.write();
}
else
if (d.full())
{
tab.put("S0", d);
tab.rewrite();
}
}
}
void TDettaglio_receiver::load_classi(const TDettaglio_mask & m)
{
TString query("SELECT * FROM ");
TFilename name = m.get(F_PATH);
name.add("tab_cla.txt");
query << name;
TClasse_textset inputfile(query);
TProgind pi(inputfile.items(), TR("Importazione classi "), true, true);
for (bool ok = inputfile.move_first(); ok; ok = inputfile.move_next())
{
const TString & cod = inputfile.get("CODCLA").as_string();
add_to_tab("GMC", cod, inputfile.get("DESCLA").as_string());
}
}
void TDettaglio_receiver::load_marche(const TDettaglio_mask & m)
{
TString query("SELECT * FROM ");
TFilename name = m.get(F_PATH);
name.add("tab_mar.txt");
query << name;
TMarca_textset inputfile(query);
TProgind pi(inputfile.items(), TR("Importazione marche "), true, true);
for (bool ok = inputfile.move_first(); ok; ok = inputfile.move_next())
{
const TString & cod = inputfile.get("CODMAR").as_string();
add_to_tab("RFA", cod, inputfile.get("DESMAR").as_string());
}
}
@ -846,15 +985,13 @@ void TDettaglio_receiver::load_articoli(const TDettaglio_mask & m)
const TString & classe = inputfile.get("ACLASS").as_string();
anamag.put(ANAMAG_CLASSEFIS, classe);
add_to_tab("%ASF", classe);
if (marca.full() || classe.full())
anamag.put(ANAMAG_ARTFIS, "X");
anamag.put(ANAMAG_GRMERC, classe);
add_to_tab("GMC", classe);
const TString & categ = inputfile.get("ACATEG").as_string();
anamag.put(ANAMAG_GRMERC, categ);
add_to_tab("GMC", categ);
anamag.put(ANAMAG_CLASSEFIS, categ);
add_to_tab("ASF", categ);
anamag.put(ANAMAG_PPCONF, inputfile.get("ACONFE").as_string());
anamag.write();
@ -1002,6 +1139,8 @@ void TDettaglio_receiver::load_listino(const TDettaglio_mask & m)
TProgind pi(inputfile.items(), TR("Importazione Listino "), true, true);
TSystemisamfile rcondv(LF_RCONDV);
TSystemisamfile condv(LF_CONDV);
TLocalisamfile anamag(LF_ANAMAG);
TString4 codlist;
condv.zap();
rcondv.zap();
@ -1011,36 +1150,54 @@ void TDettaglio_receiver::load_listino(const TDettaglio_mask & m)
{
if (inputfile.get("LVALAR").as_string().blank())
{
const TString & codart = build_codart (inputfile.get("LGRUPP").as_string(), inputfile.get("LCODAR").as_int());
TString4 codlist;
const TString80 codart(build_codart(inputfile.get("LGRUPP").as_string(), inputfile.get("LCODAR").as_int()));
const int tipocf = inputfile.get("LTIPCF").as_int();
const int list = inputfile.get("LCODLI").as_int();
codlist.format("%01d%02d", tipocf, inputfile.get("LCODLI").as_int());
rcondv.zero();
rcondv.put(RCONDV_TIPO, "L");
rcondv.put(RCONDV_COD, codlist);
rcondv.put(RCONDV_TIPORIGA, "A");
rcondv.put(RCONDV_CODRIGA, codart);
real prezzo;
if (tipocf == 2)
prezzo = inputfile.get("LCOSTO").as_real();
else
prezzo = inputfile.get("LLISTI").as_real();
if (prezzo != ZERO)
if (list == 0)
{
rcondv.put(RCONDV_PREZZO, prezzo);
rcondv.write();
condv.zero();
condv.put(CONDV_TIPO, "L");
condv.put(CONDV_COD, codlist);
if (condv.read() != NOERR)
if (tipocf == 2)
{
long codforn = inputfile.get("LCFTAB").as_int();
anamag.zero();
anamag.put(ANAMAG_CODART, codart);
if (anamag.read() == NOERR)
{
anamag.put(ANAMAG_CODFORN, codforn);
anamag.rewrite();
}
}
}
else
{
codlist.format("%01d%02d", tipocf, list);
rcondv.zero();
rcondv.put(RCONDV_TIPO, "L");
rcondv.put(RCONDV_COD, codlist);
rcondv.put(RCONDV_TIPORIGA, "A");
rcondv.put(RCONDV_CODRIGA, codart);
real prezzo;
if (tipocf == 2)
prezzo = inputfile.get("LCOSTO").as_real();
else
prezzo = inputfile.get("LLISTI").as_real();
if (prezzo != ZERO)
{
rcondv.put(RCONDV_PREZZO, prezzo);
rcondv.write();
condv.zero();
condv.put(CONDV_TIPO, "L");
condv.put(CONDV_COD, codlist);
condv.write();
if (condv.read() != NOERR)
{
condv.zero();
condv.put(CONDV_TIPO, "L");
condv.put(CONDV_COD, codlist);
condv.write();
}
}
}
}
@ -1265,6 +1422,11 @@ void TDettaglio_receiver::main_loop()
{
_len = m.get_int(F_LEN);
if (m.get_bool(F_TB))
{
load_classi(m);
load_marche(m);
}
if (m.get_bool(F_CF))
load_clifo(m);
if (m.get_bool(F_AM))

@ -8,4 +8,5 @@
#define F_LI 108
#define F_GI 109
#define F_CS 110
#define F_TB 111

@ -1,6 +1,6 @@
#include "pn0001100.h"
PAGE "Invio dati contabilita'" -1 -1 78 10
PAGE "Invio dati contabilita'" -1 -1 80 10
GROUPBOX DLG_NULL 76 3
BEGIN
@ -66,6 +66,12 @@ BEGIN
FIELD cs
END
BOOLEAN F_TB
BEGIN
PROMPT 71 5 "Tabelle"
FIELD tb
END
STRING F_PATH 256 30
BEGIN
PROMPT 2 6 "Cartella di input "

@ -1092,9 +1092,7 @@ bool TEC_form::print_game(const TPartita& game)
printer().print(body.row(0));
}
else
{
riga.export_to(*_recordset);
}
TString4 codval;
if (in_valuta())
@ -1870,7 +1868,7 @@ int TStampaEC_application::print_ec(TEC_Game_list* games)
}
else
{
if (printed > 0)
if (printed > 0 && f.stampa_saldo())
{
f.export_total();
// f.recordset().new_rec();
@ -1930,6 +1928,7 @@ void TStampaEC_application::main_loop()
break;
const bool excel = k != K_ENTER;
_form = new TEC_form(m, _gesval, excel);
_form->stampa_saldo(m.get_bool(F_STAMPSALDO));
@ -1943,7 +1942,6 @@ void TStampaEC_application::main_loop()
_lastnumec = m.get_long(F_ULTIMOEC);
}
}
if (m.get_bool(F_GROUPAGENT))
print_agents();
else

@ -10,6 +10,26 @@
#include <clifo.h>
#include <nditte.h>
#include <pconti.h>
#include <textset.h>
class TPRSC_recordset : public TAS400_recordset
{
public:
TPRSC_recordset(const TString_array & colnames);
};
TPRSC_recordset::TPRSC_recordset(const TString_array & colnames) : TAS400_recordset("AS400(256,0,0)")
{
create_field("Cliente", 0, 6, _longfld);
create_field("RagioneSociale", -1, 50);
create_field("Valuta", -1, 3);
for (int i = 0; i < colnames.items(); i++)
create_field(colnames.row(i), -1, 15, _realfld);
create_field("Totale", -1, 15, _realfld);
create_field("Esposto", -1, 15, _realfld);
create_field("Saldo", -1, 15, _realfld);
create_field("Differenza", -1, 15, _realfld);
}
///////////////////////////////////////////////////////////
// Stampa prospetto scadenze
@ -81,13 +101,17 @@ class TProspettoScadenze : public TPrintapp
_t, // Array per i totali
_ns_date, // Date per non scaduto
_s_date; // Date per lo scaduto
bool _excel;
TPRSC_recordset * _recset;
static TString _last_game;
static bool fil_function(const TRelation *);
TString_array _colnames;
public:
virtual bool preprocess_page(int file, int counter);
virtual bool preprocess_print(int file, int counter);
virtual void postclose_print();
virtual print_action postprocess_print(int file, int counter);
virtual print_action postprocess_page(int file, int counter);
virtual void preprocess_header() {};
@ -97,6 +121,7 @@ public:
virtual bool set_print(int);
virtual void set_page (int file, int counter);
void print_totali_rows(int nriga, bool what);
void export_totali_rows();
void print_totali(int nriga);
void print_header();
int calc_last_column();
@ -477,6 +502,18 @@ print_action TProspettoScadenze::postprocess_print(int file, int counter)
return rt;
}
void TProspettoScadenze::postclose_print()
{
if (_excel)
{
TFilename slk; slk.tempdir(); slk.add("prosscad.slk");
_recset->save_as(slk, fmt_silk);
xvt_sys_goto_url(slk, "open");
delete _recset;
_recset = NULL;
}
}
print_action TProspettoScadenze::postprocess_page(int file, int counter)
{
return NEXT_PAGE;
@ -537,9 +574,10 @@ void TProspettoScadenze::riempi_conti_mastro(const char cf)
bool TProspettoScadenze::set_print(int)
{
if (_m->run() == K_ENTER)
KEY k = _m->run();
_excel = k != K_ENTER;
if (k != K_QUIT)
{
reset_files();
reset_print();
printer().footerlen(5);
@ -612,8 +650,28 @@ bool TProspettoScadenze::set_print(int)
break;
default: break;
} // End of inner switch
return true;
if (_excel)
{
_colnames.destroy();
if (_sinfasce)
{
_colnames.add(format("Scaduto > %3d gg", limiti[_sfasce]));
for (int i = _sfasce; i > 0; i--)
_colnames.add(format("Scaduto <= %3d gg", limiti[i]));
}
else
_colnames.add("Scaduto");
if (_nsinfasce)
{
for (int i = 1; i <= _nsfasce; i++)
_colnames.add(format("A Scadere <= %3d gg", limiti[i]));
_colnames.add(format("A Scadere > %3d gg", limiti[_nsfasce]));
}
else
_colnames.add("A Scadere");
_recset = new TPRSC_recordset(_colnames);
}
return true;
} // End if
return false;
}
@ -625,11 +683,12 @@ void TProspettoScadenze::print_totali_rows(int nriga, bool what)
TAssoc_array& xassoc = (TAssoc_array&) _t[what];
TString_array as;
const int items = xassoc.items();
xassoc.get_keys(as);
as.sort();
for (int i=0; i < items; i++)
{
if (!what)
if (!what && !_excel)
calcola_saldo();
TString k(as.row(i)); // Chiave di ordinamento(valuta)
@ -736,10 +795,77 @@ void TProspettoScadenze::print_totali_rows(int nriga, bool what)
xassoc.destroy(); // Distrugge il totale appena stampato
}
void TProspettoScadenze::export_totali_rows()
// If what is 0 prints single total... else prints also general total
{
TAssoc_array& xassoc = (TAssoc_array&) _t[0];
TString_array as;
const int items = xassoc.items();
xassoc.get_keys(as);
as.sort();
for (int i=0; i < items; i++)
{
TVariant var(_cod_pre);
TString k(as.row(i)); // Chiave di ordinamento(valuta)
TLineTotal& v = (TLineTotal&)xassoc[k];
calcola_saldo();
_recset->new_rec();
_recset->set("Cliente", var);
var = _des_pre;
_recset->set("RagioneSociale", var);
var = k;
_recset->set("Valuta", var);
int col = 0;
real tot = ZERO;
if (_sinfasce)
{
for (int i = _sfasce; i >= 0; i--)
{
_recset->set(_colnames.row(col++), v._s[i]);
tot += v._s[i];
}
}
else
{
_recset->set(_colnames.row(col++), v._s[0]);
tot += v._s[0];
}
if (_nsinfasce)
{
for (int i = 0; i <= _nsfasce; i++)
{
_recset->set(_colnames.row(col++), v._ns[i]);
tot += v._ns[i];
}
}
else
{
_recset->set(_colnames.row(col++), v._ns[0]);
tot += v._ns[0];
col++;
}
const real diff = v._sl - (tot - v._es);
_recset->set("Totale", tot);
_recset->set("Esposto", v._es);
_recset->set("Saldo", v._sl);
_recset->set("Differenza", diff);
}
}
void TProspettoScadenze::print_totali(int nriga)
{
reset_row(nriga);
print_totali_rows(nriga,0);
if (_excel)
export_totali_rows();
print_totali_rows(nriga,0);
}
void TProspettoScadenze::print_header()
@ -772,7 +898,7 @@ void TProspettoScadenze::print_header()
case fornitori:
case clienti:
{
TString s1,s2, s3;
TString s1,s2, s3, lim;
int o = 0; // Offset per scaglioni.
@ -793,7 +919,7 @@ void TProspettoScadenze::print_header()
rw << format("@%dg >%3d gg", pos, limiti[_sfasce]);
pos += 11;
for (int i = _sfasce; i > 0; i--)
{
{
rw << format("@%dg <= %3d gg", pos, limiti[i] );
pos += 11;
}

@ -4,23 +4,30 @@ TOOLBAR "" 0 0 0 2
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -14 -11 ""
PROMPT -15 -11 ""
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_EDIT 10 2
BEGIN
PROMPT -25 -1 ""
PICTURE BMP_EDIT
MESSAGE EXIT,69
END
BUTTON DLG_INFO 10 2
BEGIN
PROMPT -24 -11 ""
PROMPT -35 -11 ""
END
BUTTON DLG_HELP 10 2
BEGIN
PROMPT -34 -11 ""
PROMPT -45 -11 ""
END
BUTTON DLG_QUIT 11 2
BEGIN
PROMPT -44 -11 ""
PROMPT -55 -11 ""
END
ENDPAGE

@ -128,10 +128,11 @@ LIST FW_TIPOSTSC 1 41
BEGIN
PROMPT 2 14 "Tipo stampa scont."
ITEM " |Nessuna" MESSAGE CLEAR,FW_CASSAAPP|CLEAR,FW_CASSADIR
ITEM "E|Applcazione esterna" MESSAGE ENABLE,FW_CASSAAPP|ENABLE,FW_CASSADIR
ITEM "R|Wincor Nixdorf (ER400)" MESSAGE CLEAR,FW_CASSAAPP|CLEAR,FW_CASSADIR
ITEM "L|Multiprinter (Crf Open, Logic, EJ, PG)" MESSAGE DISABLE,FW_CASSAAPP|"multiprinter S",FW_CASSAAPP|ENABLE,FW_CASSADIR
ITEM "N|Multiprinter (Nettuna)" MESSAGE DISABLE,FW_CASSAAPP|"multiprinter S",FW_CASSAAPP|ENABLE,FW_CASSADIR
ITEM "E|Applcazione esterna" MESSAGE ENABLE,FW_CASSAAPP|ENABLE,FW_CASSADIR
ITEM "C|Report Campo" MESSAGE CLEAR,FW_CASSAAPP|CLEAR,FW_CASSADIR
FIELD TIPOSTSC
END

@ -176,6 +176,8 @@ public:
const TOperatore & curr_user() const { return _responsabile != NULL ? *_responsabile : *_cassiere;}
bool set_responsabile(const char * user);
void set_authorizations(TMask & m);
bool printable() const { return _print_type != ' ' && _print_type != '\0'; }
TTurno_vendita & turno() { return *_turno;}
@ -710,11 +712,13 @@ bool TScontrino_mask::chiudi_handler( TMask_field& f, KEY key )
mask.enable(DLG_OK, doc.totale_doc() == ZERO);
if (mask.run() == K_ENTER)
{
do
if (sapp().printable())
{
sapp().print();
} while (yesno_box(TR("Vuoi ristampare lo scontrino")));
do
{
sapp().print();
} while (yesno_box(TR("Vuoi ristampare lo scontrino")));
}
const real & saldo = mask.get_real(F_SALDO);
const long ndoc = doc.get_long(DOC_NDOC);
@ -807,7 +811,22 @@ bool TScontrino_mask::sospendi_handler( TMask_field& f, KEY key )
const TTurno_vendita & turno = sapp().turno();
TScontrino_mask & docmask = (TScontrino_mask &) f.mask();
TChiusura_scontrino_mask & mask = sapp().chiusura();
mask.update_doc(docmask, turno, false);
TDocumento & doc = docmask.doc();
const int nrows = doc.physical_rows();
bool zero_doc = true;
int r;
for (r = nrows; zero_doc && r >= 1; r--)
{
const TRiga_documento & row = doc[r];
if (row.imponibile() != ZERO)
zero_doc = false;
}
if (zero_doc)
return false;
else
mask.update_doc(docmask, turno, false);
}
return true;
}
@ -1766,7 +1785,7 @@ void TScontrino_application::print()
{
switch (_print_type)
{
case ' ':
case 'C':
TMotore_application::print();
break;
case 'E':
@ -1800,7 +1819,6 @@ void TScontrino_application::print()
print_multiprinter_nettuna();
break;
default: //
TMotore_application::print();
break;
}
}

@ -573,8 +573,8 @@ public:
TRiga_documento(TDocumento* doc, const char* tipo = NULL);
TRiga_documento(const TRiga_documento & row);
TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
const char* tipo = NULL);
/* Maialata inguardabile: guai a chi la riporta!
TRiga_documento(const TRiga_documento& rec, TDocumento* doc, const char* tipo = NULL); */
virtual ~TRiga_documento() {}
};

@ -172,6 +172,7 @@ TRiga_documento::TRiga_documento(const TRiga_documento & row)
copy(row);
}
/* Maialata inguardabile: guai a chi la riporta!
TRiga_documento::TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
const char * tipo)
: TAuto_variable_rectype(rec), _doc(doc)
@ -179,7 +180,7 @@ TRiga_documento::TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
set_memo_fld("RG1");
if (tipo)
set_tipo(tipo);
}
}*/
const TTipo_riga_documento& TRiga_documento::tipo() const
{
@ -269,10 +270,13 @@ void TRiga_documento::forza_sola_descrizione()
}
}
TRiga_documento & TRiga_documento::copy(const TRiga_documento & r)
TRiga_documento & TRiga_documento::copy(const TRiga_documento& r)
{
_doc = r._doc;
operator=((TRectype &)r);
if (_doc == NULL)
_doc = r._doc;
TAuto_variable_rectype::operator=(r);
reset_fields(*this);
set_fields((TAuto_variable_rectype&)r);
return *this;
}
@ -317,15 +321,17 @@ void TRiga_documento::test_firm()
TRectype & TRiga_documento::operator =(const TRectype & r)
{
TRectype::operator=(r);
reset_fields(*this);
TAuto_variable_rectype::operator=(r);
reset_fields(*this);
set_fields(*this);
return *this;
}
TRectype & TRiga_documento::operator =(const char * r)
{
TRectype::operator=(r);
TAuto_variable_rectype::operator=(r);
reset_fields(*this);
set_fields(*this);
return *this;
@ -393,6 +399,14 @@ void TRiga_documento::set_fields(TAuto_variable_rectype & rec)
add_field(new TDocumento_variable_field(f->name(), *exp));
}
}
for (TVariable_field * src_field = rec.first_variable_field();
src_field != NULL; src_field = rec.succ_variable_field())
{
const char * fieldname = src_field->name();
if (src_field->expression() == NULL)
put(fieldname, rec.get(fieldname));
}
}
}

@ -752,6 +752,8 @@ TRiga_documento& TDocumento::insert_row(int row, const char *tipo)
TRiga_documento& TDocumento::new_row(const char *tipo)
{
TRiga_documento& r = (TRiga_documento&)TMultiple_rectype::new_row();
r.set_doc(this);
if (tipo && *tipo)
r.set_tipo(tipo);
return r;
@ -816,7 +818,7 @@ long TDocumento::renum_ndoc(long numdoc)
const TString4 nu = numerazione();
numdoc = get_next_key(tn, an, nu);
}
put(DOC_NDOC, numdoc); // Aggiorna testata
put(DOC_NDOC, numdoc); // Aggiorna testata
TMultiple_rectype::renum_key(); // Aggiorna righe ok
return numdoc;
}
@ -1734,12 +1736,12 @@ void TDocumento::set_fields(TAuto_variable_rectype & rec)
}
}
}
for (TVariable_field * src_field = rec.first_variable_field();
src_field != NULL; src_field = rec.succ_variable_field())
{
const char * fieldname = src_field->name();
// if (!exist(fieldname))
if (src_field->expression() == NULL)
put(fieldname, rec.get(fieldname));
}
@ -2367,9 +2369,11 @@ TDocumento & TDocumento::copy(const TDocumento & d)
set_fields((TAuto_variable_rectype &) d);
for (int i = physical_rows(); i > 0; i--)
{
TRiga_documento & r = row(i);
r.set_doc(this);
r.set_fields(r);
TRiga_documento& r = row(i);
r.set_doc(this);
r.reset_fields(r);
r.set_fields(((TAuto_variable_rectype &)d[i]));
}
set_riga_sconto();
if (is_fattura())