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:
parent
9223718b8c
commit
a644845c22
co
co0300a.umlco0700.cppco0700a.umlco0700b.hco0700b.umlco0800.cppco1200a.repco1300.cppco1300a.hco1300a.repco1300a.umlco1600a.repco1700a.repco1800a.hco1800a.repco1800a.umlcoconf.hcomenu.menconferim.mskcotbcoa.umlprestazi.msk
db
include
ps
indice_programmi.txtpg0001.cpppg0001.hpg0001600.cpppg0001600a.hpg0001600a.umlpn0001100.cpppn0001100.hpn0001100.uml
sc
vd
ve
174
co/co0300a.uml
174
co/co0300a.uml
@ -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
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
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
|
||||
C;E;
|
||||
IF
|
||||
F;
|
||||
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
|
||||
C;E;
|
||||
IF
|
||||
F;
|
||||
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>
|
116
co/co1300.cpp
116
co/co1300.cpp
@ -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 C;= 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)(201@.I1E;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
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
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))(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
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
|
||||
|
15
co/coconf.h
15
co/coconf.h
@ -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
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
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
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
|
226
ps/pn0001100.cpp
226
ps/pn0001100.cpp
@ -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
|
||||
|
142
sc/sc2600.cpp
142
sc/sc2600.cpp
@ -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())
|
||||
|
Loading…
x
Reference in New Issue
Block a user