Patch level : 12.00
Files correlati : Bug : Collegamento a fepa
This commit is contained in:
parent
de6f7f9722
commit
676000859d
BIN
src/cg01/Campi per liquidazione periodica.xlsx
Normal file
BIN
src/cg01/Campi per liquidazione periodica.xlsx
Normal file
Binary file not shown.
22
src/cg01/Cg7 quadri.txt
Normal file
22
src/cg01/Cg7 quadri.txt
Normal file
@ -0,0 +1,22 @@
|
||||
cReport Quadro
|
||||
cg7400a Intestazione
|
||||
cg7400b A
|
||||
cg7400c B
|
||||
cg7500a C - D
|
||||
cg7600a E
|
||||
cg7700a F pag. 1
|
||||
cg7700b F pag. 2
|
||||
cg7800a J
|
||||
cg7900a H - M - K
|
||||
cg7900b N - Q
|
||||
cg7a00a L
|
||||
cg7b00a T
|
||||
cg7c00a X
|
||||
cg7d00a O pag.1
|
||||
cg7d00b O pag.2
|
||||
cg7e00a G
|
||||
cg7f00a S pag.1
|
||||
cg7f00b S pag.2
|
||||
cg7g00a V - W
|
||||
cg7h00a P
|
||||
cg7i00a Y - Z
|
BIN
src/cg01/IVA_2023_istr.pdf
Normal file
BIN
src/cg01/IVA_2023_istr.pdf
Normal file
Binary file not shown.
BIN
src/cg01/IVA_2023_mod.docx
Normal file
BIN
src/cg01/IVA_2023_mod.docx
Normal file
Binary file not shown.
BIN
src/cg01/IVA_2023_mod.pdf
Normal file
BIN
src/cg01/IVA_2023_mod.pdf
Normal file
Binary file not shown.
BIN
src/cg01/IVA_Annuale_2025_istr.docx
Normal file
BIN
src/cg01/IVA_Annuale_2025_istr.docx
Normal file
Binary file not shown.
127356
src/cg01/IVA_Annuale_2025_istr.pdf
Normal file
127356
src/cg01/IVA_Annuale_2025_istr.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
src/cg01/IVA_Annuale_2025_mod.pdf
Normal file
BIN
src/cg01/IVA_Annuale_2025_mod.pdf
Normal file
Binary file not shown.
97
src/cg01/IVAxCasNonInc.rep
Normal file
97
src/cg01/IVAxCasNonInc.rep
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report name="ivacasnoninc" lpi="6">
|
||||
<font face="Courier New" size="10" />
|
||||
<section type="Head" pattern="1" />
|
||||
<section type="Head" level="1" pattern="1">
|
||||
<prescript description="H1 PRESCRIPT">0 #F1.102 !
|
||||
0
|
||||
#F1.103 !</prescript>
|
||||
</section>
|
||||
<section type="Head" level="2" pattern="1">
|
||||
<groupby>NUMREG</groupby>
|
||||
<postscript description="H2 POSTSCRIPT">0
|
||||
#F2.102 !
|
||||
0
|
||||
#F2.103 !</postscript>
|
||||
<field type="Testo" width="15" pattern="1" text="Registrazione" />
|
||||
<field border="2" y="1" type="Linea" width="80" height="0" pattern="1" />
|
||||
<field x="15" type="Stringa" width="10" id="101" pattern="1">
|
||||
<source>NUMREG</source>
|
||||
<postscript description="H2.101 POSTSCRIPT">#THIS @
|
||||
#F2.101 !</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Body" pattern="1" />
|
||||
<section type="Body" level="1" pattern="1">
|
||||
<field type="Numero" align="right" width="10" pattern="1">
|
||||
<source>NUMREG</source>
|
||||
</field>
|
||||
<field x="10.5" type="Numero" align="right" width="10" pattern="1">
|
||||
<source>NUMREGP</source>
|
||||
</field>
|
||||
<field x="20.5" type="Data" width="10" pattern="1">
|
||||
<source>DATAREG</source>
|
||||
</field>
|
||||
<field x="30.5" type="Data" width="10" pattern="1">
|
||||
<source>DATAREGP</source>
|
||||
</field>
|
||||
<field x="41.5" type="Stringa" width="1" id="101" pattern="1">
|
||||
<source>SEZIONE</source>
|
||||
</field>
|
||||
<field x="43.5" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@">
|
||||
<source>IMPONIBILE</source>
|
||||
<postscript description="B1.102 POSTSCRIPT">#102 @
|
||||
#101 @
|
||||
"D"
|
||||
=
|
||||
IF
|
||||
#F2.102 @
|
||||
+
|
||||
#F2.102 !
|
||||
ELSE
|
||||
#F2.103 @
|
||||
+
|
||||
#F2.103 !
|
||||
THEN
|
||||
</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" pattern="1" />
|
||||
<section type="Foot" level="1" pattern="1">
|
||||
<field x="43" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@" />
|
||||
<field x="54" type="Valuta" align="right" width="10" id="103" pattern="1" text="#########,@@" />
|
||||
<field x="66" type="Valuta" align="right" width="10" id="104" pattern="1" text="#########,@@">
|
||||
<prescript description="F1.104 PRESCRIPT">#102 @
|
||||
#103 @
|
||||
-
|
||||
#THIS !</prescript>
|
||||
</field>
|
||||
</section>
|
||||
<section type="Foot" level="2" pattern="1">
|
||||
<field border="2" y="1" type="Linea" width="80" height="0" pattern="1" />
|
||||
<field y="2" type="Testo" width="10" pattern="1" text="Totale" />
|
||||
<field x="9.5" y="2" type="Numero" align="right" width="10" id="101" pattern="1" />
|
||||
<field x="43" y="2" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@">
|
||||
<postscript description="F2.102 POSTSCRIPT">#102 @
|
||||
#F1.102 @
|
||||
+
|
||||
#F1.102 !
|
||||
</postscript>
|
||||
</field>
|
||||
<field x="54" y="2" type="Valuta" align="right" width="10" id="103" pattern="1" text="#########,@@">
|
||||
<postscript description="F2.103 POSTSCRIPT">#103 @
|
||||
#F1.103 @
|
||||
+
|
||||
#F1.103 !
|
||||
</postscript>
|
||||
</field>
|
||||
<field x="66" y="2" type="Valuta" align="right" width="10" id="104" pattern="1" text="#########,@@">
|
||||
<prescript>#102 @
|
||||
#103 @
|
||||
-
|
||||
#THIS !</prescript>
|
||||
</field>
|
||||
</section>
|
||||
<sql>USE IVADIFF SELECT (BETWEEN(DATAREG,#DADATA,#ADATA))((DATAREGP=="")||(BETWEEN(DATAREGP,#DADATA,#ADATA)))(TIPOIVA==1)(TIPODIFF==2)
|
||||
</sql>
|
||||
</report>
|
BIN
src/cg01/Stralcio della lettera 2010_11 per TRASFER.docx
Normal file
BIN
src/cg01/Stralcio della lettera 2010_11 per TRASFER.docx
Normal file
Binary file not shown.
1
src/cg01/TRASFER (Esempio di file)
Normal file
1
src/cg01/TRASFER (Esempio di file)
Normal file
File diff suppressed because one or more lines are too long
BIN
src/cg01/TRASFER Esempio di file (lista contenuto).doc
Normal file
BIN
src/cg01/TRASFER Esempio di file (lista contenuto).doc
Normal file
Binary file not shown.
BIN
src/cg01/Tracciati record File Trasfer.docx
Normal file
BIN
src/cg01/Tracciati record File Trasfer.docx
Normal file
Binary file not shown.
BIN
src/cg01/[Confronto - Nuovo] IVA_Annuale_2025_mod.pdf
Normal file
BIN
src/cg01/[Confronto - Nuovo] IVA_Annuale_2025_mod.pdf
Normal file
Binary file not shown.
BIN
src/cg01/cb0000.zip
Normal file
BIN
src/cg01/cb0000.zip
Normal file
Binary file not shown.
10
src/cg01/cfban.h
Normal file
10
src/cg01/cfban.h
Normal file
@ -0,0 +1,10 @@
|
||||
#define CFBAN_TIPOCF "TIPOCF"
|
||||
#define CFBAN_CODCF "CODCF"
|
||||
#define CFBAN_TIPOBAN "TIPOBAN"
|
||||
#define CFBAN_NRIGA "NRIGA"
|
||||
#define CFBAN_ABI "ABI"
|
||||
#define CFBAN_CAB "CAB"
|
||||
#define CFBAN_PROGPR "PROGPR"
|
||||
#define CFBAN_NUMCC "NUMCC"
|
||||
#define CFBAN_IBAN "IBAN"
|
||||
|
43
src/cg01/cg0.cpp
Normal file
43
src/cg01/cg0.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "cg0.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const int op = argc < 2 ? 0 : argv[1][1]-'0';
|
||||
switch (op)
|
||||
{
|
||||
case 1: cg0200(argc,argv); break; // Clienti/Fornitori
|
||||
case 2: cg0300(argc,argv); break; // Progressivi allegati
|
||||
case 3: cg0400(argc,argv); break; // Progressivi IVA
|
||||
case 4: cg0500(argc,argv); break; // Causali contabili
|
||||
case 5: cg0600(argc,argv); break; // Tabelle contabili
|
||||
case 6: cg0700(argc, argv); break; // Clienti/Fornitori occasionali
|
||||
case 7: cg0800(argc, argv); break; // Stampa progressivi IVA avanzata
|
||||
case 8: cg0900(argc, argv); break; // Stampa progressivi IVA avanzata per attività
|
||||
default: cg0100(argc,argv); break; // Piano dei conti
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
27
src/cg01/cg0.h
Normal file
27
src/cg01/cg0.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef __CG0_H
|
||||
#define __CG0_H
|
||||
|
||||
int cg0100(int argc, char* argv[]);
|
||||
int cg0200(int argc, char* argv[]);
|
||||
int cg0300(int argc, char* argv[]);
|
||||
int cg0400(int argc, char* argv[]);
|
||||
int cg0500(int argc, char* argv[]);
|
||||
int cg0600(int argc, char* argv[]);
|
||||
int cg0700(int argc, char* argv[]);
|
||||
int cg0800(int argc, char* argv[]);
|
||||
int cg0900(int argc, char* argv[]);
|
||||
|
||||
#endif // __CG0_H
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
src/cg01/cg01.gif
Normal file
BIN
src/cg01/cg01.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 131 KiB |
332
src/cg01/cg0100.cpp
Normal file
332
src/cg01/cg0100.cpp
Normal file
@ -0,0 +1,332 @@
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0100.h"
|
||||
|
||||
#include <pconti.h>
|
||||
#include <saldi.h>
|
||||
|
||||
enum TIndicatore_bilancio { ATTIVITA=1, PASSIVITA, COSTI, RICAVI, ORDINE };
|
||||
|
||||
class TPianoconti_app : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
virtual TMask* _get_mask(int mode) {return _msk;}
|
||||
virtual bool changing_mask(int mode) {return FALSE;}
|
||||
virtual bool protected_record(TRectype &rec);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m) {init_insert_mode(m);}
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask & m);
|
||||
virtual int read(TMask& m);
|
||||
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
|
||||
virtual bool check_autorization() const { return false; }
|
||||
virtual TRelation* get_relation() const {return _rel;}
|
||||
};
|
||||
|
||||
HIDDEN inline TPianoconti_app& app() { return (TPianoconti_app&) main_app();}
|
||||
|
||||
int TPianoconti_app::read(TMask& m)
|
||||
{
|
||||
const TRelation* r = get_relation();
|
||||
m.autoload(*r);
|
||||
if (m.get(FLD_CM1_LETTIVD).empty())
|
||||
{
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
if (sezivd == 1 || sezivd == 2)
|
||||
m.set(FLD_CM1_SEZIVD, sezivd + 5);
|
||||
}
|
||||
if (m.get(FLD_CM1_LETTIVDOPP).empty())
|
||||
{
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 1 || sezivd == 2)
|
||||
m.set(FLD_CM1_SEZIVDOPP, sezivd + 5);
|
||||
}
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int TPianoconti_app::rewrite(const TMask& m)
|
||||
{
|
||||
TString16 sez;
|
||||
|
||||
TRelation *r = get_relation();
|
||||
m.autosave(*r);
|
||||
|
||||
if (!m.field(FLD_CM1_CODTABANALISI).enabled())
|
||||
r->curr().zero(PCN_CODCBL);
|
||||
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVD, sez);
|
||||
}
|
||||
sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVDOPP, sez);
|
||||
}
|
||||
const int err = r->rewrite();
|
||||
return err;
|
||||
}
|
||||
|
||||
int TPianoconti_app::write(const TMask& m)
|
||||
{
|
||||
TString16 sez;
|
||||
|
||||
TRelation *r = get_relation();
|
||||
m.autosave(*r);
|
||||
|
||||
if (!m.field(FLD_CM1_CODTABANALISI).enabled())
|
||||
r->curr().zero(PCN_CODCBL);
|
||||
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVD, sez);
|
||||
}
|
||||
sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVDOPP, sez);
|
||||
}
|
||||
|
||||
return r->write();
|
||||
}
|
||||
|
||||
bool TPianoconti_app::protected_record(TRectype &rec)
|
||||
{
|
||||
bool prot = false;
|
||||
|
||||
const int gruppo = rec.get_int(PCN_GRUPPO);
|
||||
const int conto = rec.get_int(PCN_CONTO);
|
||||
const long sottoc = rec.get_long(PCN_SOTTOCONTO);
|
||||
|
||||
// Se e' un sottoconto posso cancellarlo se non esistono saldi
|
||||
if (sottoc != 0)
|
||||
{
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
saldi.setkey(2);
|
||||
saldi.put(PCN_GRUPPO, gruppo);
|
||||
saldi.put(PCN_CONTO, conto);
|
||||
saldi.put(PCN_SOTTOCONTO, sottoc);
|
||||
prot = saldi.read(_isgteq) == NOERR &&
|
||||
gruppo == saldi.get_int(PCN_GRUPPO) && conto == saldi.get_int(PCN_CONTO) && sottoc == saldi.get_long(PCN_SOTTOCONTO) &&
|
||||
(saldi.get_real(SLD_SALDO) != ZERO || saldi.get_real(SLD_PDARE) != ZERO ||
|
||||
saldi.get_real(SLD_PAVERE) != ZERO || saldi.get_real(SLD_SALDOFIN) != ZERO ||
|
||||
saldi.get_real(SLD_PDAREPRO) != ZERO || saldi.get_real(SLD_PAVEREPRO) != ZERO);
|
||||
}
|
||||
else
|
||||
{
|
||||
TLocalisamfile pconti(LF_PCON);
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
// Se e' un conto controllo se ha dei sottoconti
|
||||
if (conto != 0)
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
const TRectype rec1(pconti.curr());
|
||||
prot = pconti.read(_isgreat) == NOERR && pconti.curr().same_key(rec1, 1, 1);
|
||||
}
|
||||
return prot;
|
||||
}
|
||||
|
||||
void TPianoconti_app::init_query_mode(TMask& m)
|
||||
{
|
||||
m.show_default();
|
||||
m.hide(-3);
|
||||
}
|
||||
|
||||
HIDDEN bool tmcf_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (f.active() && key == K_SPACE)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
const bool enable_sezsaldi = (sottoc != 0) || (sottoc == 0 && conto != 0 && m.get(FLD_CM1_TMCF).not_empty());
|
||||
|
||||
m.show(FLD_CM2_SEZSALDI, enable_sezsaldi);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TPianoconti_app::init_insert_mode(TMask& m)
|
||||
{
|
||||
const int gruppo = m.get_int(FLD_CM1_GRUPPO);
|
||||
const int conto = m.get_int(FLD_CM1_CONTO);
|
||||
const long sottoc = m.get_long(FLD_CM1_SOTTOCONTO);
|
||||
bool ivd_enable = TRUE;
|
||||
|
||||
m.show_default();
|
||||
if (conto == 0 && sottoc == 0)
|
||||
m.hide(-1);
|
||||
else
|
||||
if (sottoc == 0)
|
||||
m.hide(-2);
|
||||
else
|
||||
m.hide(-3);
|
||||
|
||||
TString s, s2, s5;
|
||||
TString8 s3, s4;
|
||||
int s1 = 0;
|
||||
int indbil = 0;
|
||||
|
||||
if (sottoc != 0)
|
||||
{
|
||||
TToken_string key; key.add(gruppo); key.add(conto);
|
||||
const TRectype& pconti = cache().get(LF_PCON, key);
|
||||
if (!pconti.empty())
|
||||
{
|
||||
s = pconti.get(PCN_CODCBL);
|
||||
s1 = pconti.get_int(PCN_SEZIVD);
|
||||
s2 = pconti.get(PCN_LETTIVD);
|
||||
s3 = pconti.get(PCN_NUMRIVD);
|
||||
s4 = pconti.get(PCN_NUMIVD);
|
||||
if (s3.empty())
|
||||
s3.spaces(4);
|
||||
|
||||
key.format("%1d%1s%s%s", s1, (const char*) s2,(const char*) s3, (const char*) s4);
|
||||
s5 = cache().get("%IVD", key, "S0");
|
||||
indbil = pconti.get_int(PCN_INDBIL);
|
||||
}
|
||||
ivd_enable = (s1 == 0) && s2.blank() && s3.blank() && s4.blank();
|
||||
m.show(FLD_CM1_IVACOMP, indbil == RICAVI);
|
||||
m.show(FLD_CM1_DESCIVACOMP, indbil == RICAVI);
|
||||
}
|
||||
// m.show(FLD_CM1_RICSER, indbil == PASSIVITA || indbil == RICAVI); // Sempre visibile per spesometro dal 9-10-2013
|
||||
if (conto != 0)
|
||||
{
|
||||
m.enable(FLD_CM1_SEZIVD, ivd_enable);
|
||||
m.show(FLD_CM1_LETTIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVD, ivd_enable);
|
||||
m.show(F_SUB, ivd_enable);
|
||||
m.show(F_SOTSUB, ivd_enable);
|
||||
m.show(FLD_CM1_DESCIVD, ivd_enable); //
|
||||
if (!ivd_enable)
|
||||
{
|
||||
m.set(FLD_CM1_SEZIVD, s1);
|
||||
m.set(FLD_CM1_LETTIVDH, s2);
|
||||
m.set(FLD_CM1_NUMRIVDH, s3);
|
||||
m.set(FLD_CM1_NUMIVDH, s4.left(2));
|
||||
m.set(F_SUBH, s4.mid(2,2));
|
||||
m.set(F_SOTSUBH, s4.mid(4,2));
|
||||
m.set(FLD_CM1_DESCIVDH, s5); //
|
||||
m.enable(FLD_CM1_SEZIVDOPP);
|
||||
m.disable(FLD_CM1_LETTIVDH);
|
||||
m.disable(FLD_CM1_NUMRIVDH);
|
||||
m.disable(FLD_CM1_NUMIVDH);
|
||||
m.disable(FLD_CM1_DESCIVDH); //
|
||||
}
|
||||
m.show(FLD_CM1_LETTIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVDH, !ivd_enable);
|
||||
m.show(F_SUBH, !ivd_enable);
|
||||
m.show(F_SOTSUBH, !ivd_enable);
|
||||
m.show(FLD_CM1_DESCIVDH, !ivd_enable); //
|
||||
|
||||
if (s.empty())
|
||||
{
|
||||
TToken_string key; key.add(gruppo);
|
||||
const TRectype& pconti = cache().get(LF_PCON, key);
|
||||
s = pconti.get(PCN_CODCBL);
|
||||
}
|
||||
}
|
||||
if (s.not_empty())
|
||||
{
|
||||
m.set(FLD_CM1_CODTABANALISI, s);
|
||||
m.check_field(FLD_CM1_CODTABANALISI);
|
||||
m.disable(FLD_CM1_CODTABANALISI);
|
||||
m.disable(FLD_CM1_DESCRANALISI);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.enable(FLD_CM1_CODTABANALISI);
|
||||
m.enable(FLD_CM1_DESCRANALISI);
|
||||
}
|
||||
const bool enable_sezsaldi = (sottoc != 0) || (sottoc == 0 && conto != 0 && m.get(FLD_CM1_TMCF).not_empty());
|
||||
m.show(FLD_CM2_SEZSALDI, enable_sezsaldi);
|
||||
}
|
||||
|
||||
|
||||
HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const int gruppo = m.get_int(FLD_CM1_GRUPPO);
|
||||
const int conto = m.get_int(FLD_CM1_CONTO);
|
||||
if (gruppo != 0 && conto != 0)
|
||||
{
|
||||
TLocalisamfile pconti(LF_PCON);
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
if (pconti.read() != NOERR)
|
||||
return f.error_box (TR("Il gruppo non esiste"));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
HIDDEN bool conto_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const int gruppo = m.get_int(FLD_CM1_GRUPPO);
|
||||
const int conto = m.get_int(FLD_CM1_CONTO);
|
||||
const long sottoc = m.get_long(FLD_CM1_SOTTOCONTO);
|
||||
if (gruppo != 0 && conto != 0 && sottoc != 0)
|
||||
{
|
||||
TLocalisamfile pconti(LF_PCON);
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
pconti.put(PCN_CONTO, conto) ;
|
||||
if (pconti.read() != NOERR)
|
||||
return m.field(FLD_CM1_CONTO).error_box (TR("Il conto non esiste"));
|
||||
else
|
||||
{
|
||||
if (pconti.get(PCN_TMCF).not_empty())
|
||||
return m.field(FLD_CM1_SOTTOCONTO).error_box (TR("Non e' possibile inserire un sottoconto di un conto relativo ad un cliente/fornitore"));
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TPianoconti_app::user_create()
|
||||
{
|
||||
open_files(LF_PCON, LF_SALDI, LF_TABCOM, 0);
|
||||
|
||||
_msk = new TMask("cg0100a") ;
|
||||
_msk->set_handler(FLD_CM1_GRUPPO, gruppo_handler);
|
||||
_msk->set_handler(FLD_CM1_CONTO, conto_handler);
|
||||
_msk->set_handler(FLD_CM1_TMCF, tmcf_handler);
|
||||
_rel = new TRelation(LF_PCON);
|
||||
// set_search_field(FH_SOTTOCONTO); // Ottima trovata, ma non funziona
|
||||
set_search_field(FLD_CM1_SOTTOCONTO);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TPianoconti_app::user_destroy()
|
||||
{
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0100(int argc, char* argv[])
|
||||
{
|
||||
TPianoconti_app a ;
|
||||
a.run(argc, argv, TR("Piano dei conti"));
|
||||
return 0;
|
||||
}
|
65
src/cg01/cg0100.h
Normal file
65
src/cg01/cg0100.h
Normal file
@ -0,0 +1,65 @@
|
||||
#ifndef __CG0100_H
|
||||
#define __CG0100_H
|
||||
|
||||
//#define PZ_COMUNI 0
|
||||
|
||||
// posizione file comuni in _arrfiles
|
||||
|
||||
// campi maschera cg0100a.msk
|
||||
|
||||
#define FLD_CM1_GRUPPO 101
|
||||
#define FLD_CM1_CONTO 102
|
||||
#define FLD_CM1_SOTTOCONTO 103
|
||||
#define FLD_CM1_DESC 104
|
||||
#define FLD_CM1_CODTABANALISI 105
|
||||
#define FLD_CM1_SEZIVD 106
|
||||
#define FLD_CM1_LETTIVD 107
|
||||
#define FLD_CM1_NUMRIVD 108
|
||||
#define FLD_CM1_NUMIVD 109
|
||||
#define FLD_CM1_INDBIL 110
|
||||
#define FLD_CM1_TMCF 111
|
||||
#define FLD_CM1_TIPOSPRIC 112
|
||||
#define FLD_CM1_SEZIVDOPP 113
|
||||
#define FLD_CM1_LETTIVDOPP 114
|
||||
#define FLD_CM1_NUMRIVDOPP 115
|
||||
#define FLD_CM1_NUMIVDOPP 116
|
||||
#define FLD_CM1_DTIPOSPRIC 117
|
||||
#define F_SUB 118
|
||||
#define F_SUBOPP 119
|
||||
#define F_SOTSUB 120
|
||||
#define F_SOTSUBOPP 121
|
||||
|
||||
#define FLD_CM1_LETTIVDH 150
|
||||
#define FLD_CM1_NUMRIVDH 151
|
||||
#define FLD_CM1_NUMIVDH 152
|
||||
#define FLD_CM1_RICSER 153
|
||||
#define FLD_CM1_DESCRANALISI 154
|
||||
#define FLD_CM1_IVACOMP 155
|
||||
#define FLD_CM1_DESCIVACOMP 156
|
||||
#define FLD_CM1_DESCIVD 157
|
||||
#define FLD_CM1_DESCIVDOPP 158
|
||||
#define FLD_CM1_DESCIVDH 159
|
||||
#define F_SUBH 160
|
||||
#define F_SOTSUBH 161
|
||||
|
||||
#define FLD_CM2_STSOTTBIL 200
|
||||
#define FLD_CM2_STSOTTAB 201
|
||||
|
||||
#define FLD_CM2_SEZSALDI 202
|
||||
|
||||
#define FLD_CM2_SOSPESO 203
|
||||
|
||||
#define FLD_CM2_COMPENS 204
|
||||
#define FLD_CM2_STSOTTABS 205
|
||||
#define FLD_CM1_DESCG 206
|
||||
#define FLD_CM1_DESCC 207
|
||||
#define FH_SOTTOCONTO 208
|
||||
|
||||
#define FLD_CM2_CMSNEEDED 209
|
||||
#define FLD_CM2_CODCMS 210
|
||||
#define FLD_CM2_FASCMS 211
|
||||
#define FLD_CM2_DESCMS 212
|
||||
#define FLD_CM2_DESFAS 213
|
||||
|
||||
|
||||
#endif // __CG0100_H
|
539
src/cg01/cg0100a.uml
Normal file
539
src/cg01/cg0100a.uml
Normal file
@ -0,0 +1,539 @@
|
||||
#include "cg0100.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <relapbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Piano dei conti " 0 0 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Gruppo "
|
||||
HELP "Codice del gruppo"
|
||||
FIELD GRUPPO
|
||||
KEY 1
|
||||
USE LF_PCON SELECT CONTO=""
|
||||
INPUT GRUPPO FLD_CM1_GRUPPO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_DESCG DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCG 50
|
||||
BEGIN
|
||||
PROMPT 24 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Conto "
|
||||
HELP "Codice dell'eventuale conto"
|
||||
FIELD CONTO
|
||||
KEY 1
|
||||
USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO=""))
|
||||
COPY INPUT FLD_CM1_GRUPPO
|
||||
INPUT CONTO FLD_CM1_CONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESCC DESCR
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 FLD_CM1_SOTTOCONTO
|
||||
WARNING "Manca il conto"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCC 50
|
||||
BEGIN
|
||||
PROMPT 24 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 2 3 "Sottoconto "
|
||||
HELP "Codice dell'eventuale sottoconto"
|
||||
FIELD SOTTOCONTO
|
||||
KEY 1
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
COPY INPUT FLD_CM1_CONTO
|
||||
INPUT SOTTOCONTO FLD_CM1_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Sosp." SOSPESO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESC DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER FH_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 60 1 ""
|
||||
FLAGS "HG"
|
||||
USE LF_PCON
|
||||
COPY INPUT FLD_CM1_SOTTOCONTO
|
||||
COPY DISPLAY FLD_CM1_SOTTOCONTO
|
||||
COPY OUTPUT FLD_CM1_SOTTOCONTO
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 3 ""
|
||||
FIELD DESCR
|
||||
KEY 2
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR FLD_CM1_DESC
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Sosp." SOSPESO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT FLD_CM1_SOTTOCONTO
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Descrizione del gruppo o del conto o del sottoconto"
|
||||
WARNING "Descrizione mancante"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODTABANALISI 12
|
||||
BEGIN
|
||||
PROMPT 1 5 "Codice Tabella Analisi "
|
||||
HELP "Codice di raggruppamento per l'analisi di bilancio"
|
||||
FIELD CODCBL
|
||||
USE LF_ABPCON
|
||||
INPUT CODCBL FLD_CM1_CODTABANALISI
|
||||
DISPLAY "Codice@12" CODCBL
|
||||
DISPLAY "Descrizione@40" DESCRIZ[1,40]
|
||||
DISPLAY "I.B." INDBIL
|
||||
DISPLAY "Codice opp.@11" CODCONTR
|
||||
OUTPUT FLD_CM1_CODTABANALISI CODCBL
|
||||
OUTPUT FLD_CM1_DESCRANALISI DESCRIZ[1,40]
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice tabella non presente"
|
||||
FLAGS "Z"
|
||||
ADD RUN AB0 -1
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCRANALISI 40 34
|
||||
BEGIN
|
||||
PROMPT 40 5 ""
|
||||
USE LF_ABPCON KEY 2
|
||||
INPUT DESCRIZ FLD_CM1_DESCRANALISI
|
||||
DISPLAY "Descrizione@40" DESCRIZ[1,40]
|
||||
DISPLAY "Codice@11" CODCBL
|
||||
DISPLAY "I.B." INDBIL
|
||||
DISPLAY "Codice opp.@11" CODCONTR
|
||||
OUTPUT FLD_CM1_CODTABANALISI CODCBL
|
||||
OUTPUT FLD_CM1_DESCRANALISI DESCRIZ[1,40]
|
||||
ADD RUN AB0 -1
|
||||
END
|
||||
|
||||
LIST FLD_CM1_INDBIL 1 22
|
||||
BEGIN
|
||||
PROMPT 1 6 "Sezione di bilancio "
|
||||
FIELD INDBIL
|
||||
GROUP 1 3
|
||||
HELP "Sezione di appartenenza del conto"
|
||||
ITEM "1|1. Attivita'"
|
||||
ITEM "2|2. Passivita'"
|
||||
ITEM "3|3. Costi"
|
||||
ITEM "4|4. Ricavi"
|
||||
ITEM "5|5. Conti d'ordine"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_SEZIVD 1 22
|
||||
BEGIN
|
||||
PROMPT 1 7 "Sez. e classe IV dir. "
|
||||
FIELD SEZIVD
|
||||
ITEM "0|0. Nessuna" MESSAGE CLEAR,5@|CLEAR,6@
|
||||
ITEM "1|1. Attivita'" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
ITEM "2|2. Passivita'" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "9|9. Conto economico" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
GROUP 1 4
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVD 1
|
||||
BEGIN
|
||||
PROMPT 49 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LETTIVD
|
||||
GROUP 1 5
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVDH 1
|
||||
BEGIN
|
||||
PROMPT 49 7 ""
|
||||
FLAGS "HDU"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVD 8
|
||||
BEGIN
|
||||
PROMPT 51 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD NUMRIVD
|
||||
GROUP 1 5
|
||||
FLAGS "MZ"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDH 8
|
||||
BEGIN
|
||||
PROMPT 51 7 ""
|
||||
FLAGS "HDMZ"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVD 2
|
||||
BEGIN
|
||||
PROMPT 60 7 ""
|
||||
FIELD NUMIVD[1,2]
|
||||
GROUP 1 5
|
||||
USE %IVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVD
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVD
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVD
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[9,10] F_SUB
|
||||
INPUT CODTAB[11,12] F_SOTSUB
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,12]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FLD_CM1_SEZIVD CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVD CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVD CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVD CODTAB[7,8]
|
||||
OUTPUT F_SUB CODTAB[9,10]
|
||||
OUTPUT F_SOTSUB CODTAB[11,12]
|
||||
OUTPUT FLD_CM1_DESCIVD S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVDH 2
|
||||
BEGIN
|
||||
PROMPT 60 7 ""
|
||||
FLAGS "HD"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
LIST F_SUB 2 9
|
||||
BEGIN
|
||||
PROMPT 64 7 ""
|
||||
GROUP 1 5
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
FIELD NUMIVD[3,4]
|
||||
END
|
||||
|
||||
LIST F_SUBH 2 9
|
||||
BEGIN
|
||||
PROMPT 64 7 ""
|
||||
GROUP 1 5
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING F_SOTSUB 2
|
||||
BEGIN
|
||||
PROMPT 76 7 ""
|
||||
GROUP 1 5
|
||||
COPY USE FLD_CM1_NUMIVD
|
||||
COPY INPUT FLD_CM1_NUMIVD
|
||||
COPY DISPLAY FLD_CM1_NUMIVD
|
||||
COPY OUTPUT FLD_CM1_NUMIVD
|
||||
FIELD NUMIVD[5,6]
|
||||
END
|
||||
|
||||
STRING F_SOTSUBH 2
|
||||
BEGIN
|
||||
PROMPT 76 7 ""
|
||||
GROUP 1 5
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCIVD 70 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE %IVD KEY 2
|
||||
INPUT S0 FLD_CM1_DESCIVD
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,10]
|
||||
COPY OUTPUT FLD_CM1_NUMIVD
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCIVDH 70 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
FLAGS "HD"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
LIST FLD_CM1_SEZIVDOPP 1 22
|
||||
BEGIN
|
||||
PROMPT 1 9 "Classe segno opposto "
|
||||
FIELD SEZIVDOPP
|
||||
GROUP 1 2 4 6
|
||||
ITEM "0|0. Nessuna" MESSAGE CLEAR,7@
|
||||
ITEM "1|1. Attivita'" MESSAGE ENABLE,7@
|
||||
ITEM "2|2. Passivita'" MESSAGE ENABLE,7@
|
||||
ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,7@
|
||||
ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,7@
|
||||
ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,7@
|
||||
ITEM "9|9. Conto economico" MESSAGE ENABLE,7@
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVDOPP 1
|
||||
BEGIN
|
||||
PROMPT 49 9 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LETTIVDOPP
|
||||
FLAGS "U"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDOPP 8 4
|
||||
BEGIN
|
||||
PROMPT 51 9 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD NUMRIVDOPP
|
||||
FLAGS "MZ"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVDOPP 2
|
||||
BEGIN
|
||||
PROMPT 60 9 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD NUMIVDOPP[1,2]
|
||||
GROUP 1 2 4 7
|
||||
COPY USE FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVDOPP
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVDOPP
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVDOPP
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVDOPP
|
||||
INPUT CODTAB[9,10] F_SUBOPP
|
||||
INPUT CODTAB[11,12] F_SOTSUBOPP
|
||||
COPY DISPLAY FLD_CM1_NUMIVD
|
||||
OUTPUT FLD_CM1_SEZIVDOPP CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVDOPP CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVDOPP CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVDOPP CODTAB[7,8]
|
||||
OUTPUT F_SUBOPP CODTAB[9,10]
|
||||
OUTPUT F_SOTSUBOPP CODTAB[11,12]
|
||||
OUTPUT FLD_CM1_DESCIVDOPP S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
LIST F_SUBOPP 9
|
||||
BEGIN
|
||||
PROMPT 64 9 ""
|
||||
GROUP 1 2 4 7
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
FIELD NUMIVDOPP[3,4]
|
||||
END
|
||||
|
||||
STRING F_SOTSUBOPP 2
|
||||
BEGIN
|
||||
PROMPT 76 9 ""
|
||||
GROUP 1 2 4 7
|
||||
COPY USE FLD_CM1_NUMIVDOPP
|
||||
COPY INPUT FLD_CM1_NUMIVDOPP
|
||||
COPY DISPLAY FLD_CM1_NUMIVDOPP
|
||||
COPY OUTPUT FLD_CM1_NUMIVDOPP
|
||||
FIELD NUMIVDOPP[5,6]
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCIVDOPP 70 50
|
||||
BEGIN
|
||||
PROMPT 24 10 ""
|
||||
GROUP 1 2 4 7
|
||||
USE %IVD KEY 2
|
||||
INPUT S0 FLD_CM1_DESCIVDOPP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,10]
|
||||
COPY OUTPUT FLD_CM1_NUMIVDOPP
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST FLD_CM1_TIPOSPRIC 2 50
|
||||
BEGIN
|
||||
PROMPT 1 11 "Tipo Spesa/Ricavo "
|
||||
FIELD TIPOSPRIC
|
||||
GROUP 1 2
|
||||
HELP "Specificare il tipo do conto"
|
||||
ITEM "0|0. Acquisti o vendite in genere"
|
||||
ITEM "1|1. Acquisti beni per rivendita"
|
||||
ITEM "2|2. Acquisti beni ammortizzabili"
|
||||
ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|4. Vendita beni strumentali art. 17"
|
||||
ITEM "5|5. Beni per rivendita da non ventilare"
|
||||
ITEM "8|8. Altri beni strumentali acquistati in leasing"
|
||||
ITEM "9|9. Spese Generali"
|
||||
ITEM "17|17. Operazioni nei confronti dei condominii"
|
||||
ITEM "51|51. Acquisti materie prime per la produzione"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_RICSER 1 18
|
||||
BEGIN
|
||||
PROMPT 1 12 "Merce / Servizi "
|
||||
FIELD RICSER
|
||||
ITEM "0|"
|
||||
ITEM "1|Servizi"
|
||||
ITEM "2|Merce"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_IVACOMP 4
|
||||
BEGIN
|
||||
PROMPT 1 13 "Cod. IVA compensazione "
|
||||
FIELD IVACOMP
|
||||
GROUP 1 2
|
||||
USE %IVA
|
||||
FLAGS "U"
|
||||
INPUT CODTAB FLD_CM1_IVACOMP
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Tipo" S1
|
||||
DISPLAY "%@5" R0
|
||||
DISPLAY "Vent." S6
|
||||
DISPLAY "Sospeso" B2
|
||||
OUTPUT FLD_CM1_IVACOMP CODTAB
|
||||
OUTPUT FLD_CM1_DESCIVACOMP S0
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCIVACOMP 50 38
|
||||
BEGIN
|
||||
PROMPT 36 13 ""
|
||||
GROUP 1 2
|
||||
USE %IVA KEY 2
|
||||
INPUT S0 FLD_CM1_DESCIVACOMP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Tipo" S1
|
||||
DISPLAY "%@5" R0
|
||||
DISPLAY "Vent." S6
|
||||
DISPLAY "Sospeso" B2
|
||||
COPY OUTPUT FLD_CM1_IVACOMP
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST FLD_CM1_TMCF 1 13
|
||||
BEGIN
|
||||
PROMPT 1 13 "Tipo sottoconti "
|
||||
FIELD TMCF
|
||||
GROUP 1 3
|
||||
HELP "Tipo dei sottoconti (Normale o clienti/fornitori)"
|
||||
ITEM " |Normali"
|
||||
ITEM "C|Clienti"
|
||||
ITEM "F|Fornitori"
|
||||
END
|
||||
|
||||
LIST FLD_CM2_SEZSALDI 1 10
|
||||
BEGIN
|
||||
PROMPT 1 14 "Controllo saldo primanota "
|
||||
HELP "Tipo di controllo del saldo in prima nota"
|
||||
FIELD SEZSALDI
|
||||
GROUP 1
|
||||
ITEM " |Nessuno"
|
||||
ITEM "A|Avere"
|
||||
ITEM "D|Dare"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTBIL
|
||||
BEGIN
|
||||
PROMPT 1 15 "Non stampare dett.sottoc. su bilanci a sezioni"
|
||||
HELP "Indicare se stampare il dettaglio dei sottoconti nei bilanci a sezioni contrapposte"
|
||||
FIELD STSOTTBIL
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_COMPENS
|
||||
BEGIN
|
||||
PROMPT 56 15 "Compensazione saldi"
|
||||
HELP "Indicare se e' ammessa la compensazione dei saldi"
|
||||
FIELD COMPENS
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTAB
|
||||
BEGIN
|
||||
PROMPT 1 16 "Stampa dettaglio sottoconti su analisi"
|
||||
HELP "Indicare se stampare il dettaglio dei sottoconti nell'analisi di bilancio"
|
||||
FIELD STSOTTAB
|
||||
GROUP 1 3
|
||||
MESSAGE COPY,FLD_CM2_STSOTTABS
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTABS
|
||||
BEGIN
|
||||
PROMPT 1 16 "Stampa dettaglio movimenti su analisi "
|
||||
FIELD STSOTTAB
|
||||
GROUP 1 2
|
||||
MESSAGE COPY,FLD_CM2_STSOTTAB
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_SOSPESO
|
||||
BEGIN
|
||||
PROMPT 56 16 "Conto sospeso"
|
||||
HELP "Indicare se sospendere il conto in prima nota"
|
||||
FIELD SOSPESO
|
||||
GROUP 1 2
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_CMSNEEDED
|
||||
BEGIN
|
||||
PROMPT 1 17 "Conto attivo per contabilita' analitica"
|
||||
FIELD ANALITICA
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
BIN
src/cg01/cg02.gif
Normal file
BIN
src/cg01/cg02.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
1763
src/cg01/cg0200.cpp
Normal file
1763
src/cg01/cg0200.cpp
Normal file
File diff suppressed because it is too large
Load Diff
274
src/cg01/cg0200.h
Normal file
274
src/cg01/cg0200.h
Normal file
@ -0,0 +1,274 @@
|
||||
#ifndef __CG0200_H
|
||||
#define __CG0200_H
|
||||
|
||||
#define TCLI "C"
|
||||
#define TFOR "F"
|
||||
|
||||
#define F_TIPOCF 101
|
||||
#define F_CODCF 102
|
||||
#define F_RAGSOC 103
|
||||
#define F_INDCF 104
|
||||
#define F_CIVCF 105
|
||||
#define F_STATOCF 106
|
||||
#define F_COMCF 107
|
||||
#define F_CAPCF 108
|
||||
#define F_COFI 109
|
||||
#define F_STATOPAIV 110
|
||||
#define F_STATOPAIVSTR 128
|
||||
#define F_PAIV 111
|
||||
#define F_TIPOPERS 112
|
||||
#define F_ALLEG 113
|
||||
#define F_GRUPPO 114
|
||||
#define F_CONTO 115
|
||||
#define F_DESCONTO 137
|
||||
#define F_GRUPPORIC 116
|
||||
#define F_CONTORIC 117
|
||||
#define F_SOTTOCRIC 118
|
||||
#define F_DESCRIC 138
|
||||
|
||||
#define F_TIPOAPER 119
|
||||
#define F_CODANAGPER 120
|
||||
#define F_PTEL 121
|
||||
#define F_TEL 122
|
||||
#define F_PFAX 123
|
||||
#define F_FAX 124
|
||||
#define F_PTELEX 125
|
||||
#define F_TELEX 126
|
||||
#define F_DATANASC 127
|
||||
#define F_COMNASC 129
|
||||
#define F_DENCOMNASC 135
|
||||
#define F_CODSTAT 130
|
||||
#define F_CODPAG 131
|
||||
#define F_DESPAG 331
|
||||
#define F_RAGSOC1 132
|
||||
|
||||
#define F_CODVAL 136
|
||||
#define F_DESVAL 336
|
||||
#define F_FIDO 139
|
||||
#define F_LOCALITACF 144
|
||||
#define F_CODAG 145
|
||||
#define F_SOSPESO 146
|
||||
#define F_CODALLEG 148
|
||||
#define LST_TIPO_RFSO 500
|
||||
#define F_COD_RFSO_G 501
|
||||
#define F_COD_RFSO_F 502
|
||||
#define F_OCCASIONALE 149
|
||||
#define F_DENCOMCF 150
|
||||
#define F_PROVCF 152
|
||||
|
||||
#define F_RICALT 151
|
||||
#define F_PTEL2 153
|
||||
#define F_TEL2 154
|
||||
#define F_PTEL3 155
|
||||
#define F_TEL3 156
|
||||
#define F_CODLIN 157
|
||||
#define F_DESLIN 158
|
||||
|
||||
#define F_CODINDDOC 160
|
||||
#define F_CODNOTE 161
|
||||
#define F_CODLEG 162
|
||||
#define F_CODCATC 163
|
||||
#define F_CODZONA 164
|
||||
#define F_PROVV 165
|
||||
#define F_LIQPAG 166
|
||||
#define F_CODPRCF 167
|
||||
#define F_CODINDSP 168
|
||||
#define F_CODPORTO 169
|
||||
#define F_RAGGDOC 170
|
||||
#define F_NCOPIE 171
|
||||
#define F_CODASS 172
|
||||
#define F_ASSFIS 173
|
||||
#define F_FATTSOSP 174
|
||||
#define F_VSNRPROT 175
|
||||
#define F_VSDATAREG 176
|
||||
#define F_NSNRPROT 177
|
||||
#define F_NSDATAREG 178
|
||||
#define F_ADDBNS1500 179
|
||||
#define F_CATFIN 180
|
||||
#define F_CODABIPR 181
|
||||
#define F_CODBANPR 182
|
||||
#define F_CODINDEFF 183
|
||||
#define F_EMEFFRICH 184
|
||||
#define F_CODNOTESP1 185
|
||||
#define F_CODNOTESP2 186
|
||||
#define F_CODSPMEZZO 187
|
||||
#define F_IMPMINEFF 188
|
||||
#define F_NONACCEFF 189
|
||||
#define F_NONSCADEFF 190
|
||||
#define F_ADDBOLLI 191
|
||||
#define F_PERCSPINC 193
|
||||
#define F_IVARID 194
|
||||
#define F_GESTCONTR 195
|
||||
#define F_CATVEN 196
|
||||
#define F_CODLIST 197
|
||||
#define F_CODSCC 198
|
||||
#define F_SCONTO 199
|
||||
#define F_CODMAG 200
|
||||
#define F_CODSP1 201
|
||||
#define F_CODSP2 202
|
||||
#define F_CODSP3 203
|
||||
#define F_CODSP4 204
|
||||
#define F_PROFSOLL 205
|
||||
#define F_MAXSOLL 206
|
||||
#define F_DATAESC 207
|
||||
#define F_DATASOLL 208
|
||||
#define F_NUMESC 209
|
||||
#define F_TITOLO 210
|
||||
#define F_RAGGOR 211
|
||||
#define F_MINORD 212
|
||||
#define F_MAXORD 213
|
||||
#define F_PREVORD 214
|
||||
#define F_TIPOEVORD 215
|
||||
#define F_SHEET_G_VEN 216
|
||||
#define F_CODVETT1 217
|
||||
#define F_CODVETT2 218
|
||||
#define F_CODVETT3 219
|
||||
#define F_SHEET_CONT 220
|
||||
#define F_DESTACF 224
|
||||
#define F_CODSPED1 225
|
||||
#define F_CODSPED2 226
|
||||
#define F_RAGSOCALLEG 228
|
||||
#define F_CODDEP 230
|
||||
#define F_RAGGEFF 232
|
||||
#define F_CODLIST1 234
|
||||
#define F_ESACC 235
|
||||
#define F_ESALL 236
|
||||
#define F_ESCAR 237
|
||||
#define F_ESPLA 238
|
||||
#define F_ESLEG 239
|
||||
#define F_ESVET 240
|
||||
#define F_ADDCONAI 241
|
||||
#define F_CONAIASS 242
|
||||
#define F_REFERENTE 243
|
||||
#define F_DESBANPR 244
|
||||
#define F_TIPODOCFAT 245
|
||||
#define F_CODCAUS 246
|
||||
#define F_CODVALINTRA 247
|
||||
#define F_DESVALINTRA 248
|
||||
#define F_CODCAUSNC 249
|
||||
#define F_DATAECONAI 250
|
||||
#define F_DESCRASS 251
|
||||
#define F_SESSO 252
|
||||
#define F_CODAG1 253
|
||||
#define F_PROVV1 254
|
||||
#define F_CODCFFATT 255
|
||||
#define F_DESCFFATT 256
|
||||
#define F_IMPMINFAT 257
|
||||
#define F_RIFDOC 258
|
||||
#define F_CODCAUSINC 259
|
||||
#define F_STATONASC 260
|
||||
#define F_DESTANASC 261
|
||||
#define DLG_ALTNEWCLI 262
|
||||
#define F_PADESTIN 263
|
||||
#define F_PARIFAMM 264
|
||||
#define F_DISABLECUSTFP 265
|
||||
#define F_CODCUSTFP 266
|
||||
#define F_DATAICONAI 267
|
||||
#define FLD_CODEORI 268
|
||||
#define FLD_REGFISC 269
|
||||
#define F_LORDO 270
|
||||
#define F_ADDCAS 271
|
||||
#define F_NUMFAT 272
|
||||
#define F_HEADDESC 273
|
||||
#define F_EDI 274
|
||||
#define F_TPDESTEDI 275
|
||||
#define F_DESTEDI 276
|
||||
|
||||
|
||||
#define F_PRODACC 271
|
||||
#define F_PRODALL 272
|
||||
#define F_PRODCAR 273
|
||||
#define F_PRODPLA 274
|
||||
#define F_PRODLEG 275
|
||||
#define F_PRODVET 276
|
||||
|
||||
#define DLG_RIC 300
|
||||
#define DLG_CST 301
|
||||
#define F_RAGSOCA 302
|
||||
#define F_MAIL 303
|
||||
#define F_BYMAIL 306
|
||||
#define F_DOCMAIL 307
|
||||
#define F_PEC 324
|
||||
#define DLG_ANAG 308
|
||||
#define DLG_CONTRLAV 309
|
||||
#define F_BANA 310
|
||||
#define F_BANP 311
|
||||
#define F_DIPPUBB 312
|
||||
#define F_ENTE 313
|
||||
#define F_DESENTE 314
|
||||
#define F_INDENTE 315
|
||||
#define F_SPLITPAY 316
|
||||
#define DLG_PERC 317
|
||||
#define DLG_INIFATTEL 318
|
||||
#define DLG_INIREVCHG 319
|
||||
#define F_ADDRAGSOC 327
|
||||
|
||||
#define F_SPEDPRI 320
|
||||
#define F_SPEDDATA 321
|
||||
#define F_SPEDRISP 322
|
||||
#define F_SPEDDATARISP 323
|
||||
|
||||
#define F_TPIMBALLO 401
|
||||
#define F_DIMENSIONE 402
|
||||
#define F_RIEMPIMENTO 403
|
||||
#define F_ARTSEP 404
|
||||
|
||||
#define F_IBAN_STATO 101
|
||||
#define F_IBAN_CHECK 102
|
||||
#define F_BBAN_CIN 103
|
||||
#define F_BBAN_ABI 104
|
||||
#define F_BBAN_CAB 105
|
||||
#define F_BBAN_CONTO 106
|
||||
#define F_BBAN 107
|
||||
#define F_PROGPR 108
|
||||
#define F_DESBAN 109
|
||||
#define F_IBAN 110
|
||||
|
||||
|
||||
//////////////////////////////////////
|
||||
// Identificatori indirizzi //
|
||||
//////////////////////////////////////
|
||||
#define F_RAGSOCI 101
|
||||
#define F_INDIRI 102
|
||||
#define F_CIVI 103
|
||||
#define F_LOCALI 104
|
||||
#define F_CAPI 105
|
||||
#define F_STATOI 106
|
||||
#define F_COMI 107
|
||||
#define F_PTELI 108
|
||||
#define F_TELI 109
|
||||
#define F_PFAXI 110
|
||||
#define F_FAXI 111
|
||||
#define F_IVARIDI 112
|
||||
#define F_DENCOMI 113
|
||||
#define F_INDIR2 114
|
||||
#define F_CODDEST 115
|
||||
#define F_PADESTINI 116
|
||||
#define F_PARIFAMMI 117
|
||||
#define F_CODIND 118
|
||||
|
||||
#define F_DESDEST 250
|
||||
|
||||
//////////////////////////////////////
|
||||
// Identificatori contatti //
|
||||
//////////////////////////////////////
|
||||
#define F_CONTACT 101
|
||||
#define F_NOME 102
|
||||
#define F_COGNOME 103
|
||||
#define F_TIPO1 104
|
||||
#define F_TIPO2 105
|
||||
#define F_TIPO3 106
|
||||
#define F_TIPO4 107
|
||||
#define F_TIPO5 108
|
||||
#define F_TIPO6 109
|
||||
#define F_TIPO7 110
|
||||
#define F_TIPO8 111
|
||||
#define F_TIPO9 112
|
||||
#define F_TIPO10 113
|
||||
#define F_TIPO11 114
|
||||
#define F_TIPO12 115
|
||||
#define F_TIPO13 116
|
||||
#define F_TIPO14 117
|
||||
#define F_TIPO15 118
|
||||
|
||||
#endif // __CG0200_H
|
2790
src/cg01/cg0200a.uml
Normal file
2790
src/cg01/cg0200a.uml
Normal file
File diff suppressed because it is too large
Load Diff
347
src/cg01/cg0200b.uml
Normal file
347
src/cg01/cg0200b.uml
Normal file
@ -0,0 +1,347 @@
|
||||
#include "cg0200.h"
|
||||
|
||||
TOOLBAR "bottombar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT 3 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "" 0 0 0 0
|
||||
|
||||
STRING F_RAGSOCI 50
|
||||
BEGIN
|
||||
PROMPT 1 2 "Rag. soc. "
|
||||
HELP "Ragione sociale del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_INDIRI 35
|
||||
BEGIN
|
||||
PROMPT 1 4 "Indirizzo "
|
||||
HELP "Indirizzo del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_CIVI 10
|
||||
BEGIN
|
||||
PROMPT 54 4 "N. "
|
||||
HELP "Numero civico del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_LOCALI 35
|
||||
BEGIN
|
||||
PROMPT 1 5 "Localita "
|
||||
HELP "Localita' di residenza del C/F"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_CAPI 5
|
||||
BEGIN
|
||||
PROMPT 54 5 "CAP "
|
||||
HELP "Codice di Avviamento Postale del C/F"
|
||||
FLAGS "RZ"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_STATOI 3
|
||||
BEGIN
|
||||
PROMPT 1 6 "Stato "
|
||||
FLAGS "Z"
|
||||
USE %STA
|
||||
INPUT CODTAB F_STATOI
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Stato@50" S0
|
||||
OUTPUT F_STATOI CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Stato assente"
|
||||
HELP "Codice dello stato del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_COMI 4
|
||||
BEGIN
|
||||
PROMPT 18 6 "Comune "
|
||||
FLAGS "U"
|
||||
USE LF_COMUNI
|
||||
INPUT STATO F_STATOI
|
||||
INPUT COM F_COMI
|
||||
DISPLAY "Stato" STATO
|
||||
DISPLAY "Codice" COM
|
||||
DISPLAY "Comune@50" DENCOM
|
||||
OUTPUT F_STATOI STATO
|
||||
OUTPUT F_COMI COM
|
||||
OUTPUT F_DENCOMI DENCOM
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Comune assente"
|
||||
ADD RUN ba4 -0
|
||||
HELP "Codice del comune del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DENCOMI 40
|
||||
BEGIN
|
||||
PROMPT 33 6 ""
|
||||
HELP "Nome del comune del cliente/fornitore"
|
||||
USE LF_COMUNI KEY 2
|
||||
INPUT DENCOM F_DENCOMI
|
||||
DISPLAY "Comune@50" DENCOM
|
||||
DISPLAY "Stato" STATO
|
||||
DISPLAY "Codice" COM
|
||||
COPY OUTPUT F_COMI
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_INDIR2 35
|
||||
BEGIN
|
||||
PROMPT 1 7 "Ind.agg. "
|
||||
HELP "Indirizzo aggiuntivo del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 72 4
|
||||
BEGIN
|
||||
PROMPT 1 8 "Numeri Telefonici"
|
||||
END
|
||||
|
||||
STRING F_PTELI 10
|
||||
BEGIN
|
||||
PROMPT 2 9 "Telefono "
|
||||
HELP "Prefisso del numero di telefono"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_TELI 30
|
||||
BEGIN
|
||||
PROMPT 40 9 ""
|
||||
HELP "Numero di telefono del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_PFAXI 10
|
||||
BEGIN
|
||||
PROMPT 2 10 "Fax "
|
||||
HELP "Prefisso del numero di fax"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_FAXI 30
|
||||
BEGIN
|
||||
PROMPT 40 10 ""
|
||||
HELP "Numero di fax del cliente/fornitore"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_IVARIDI
|
||||
BEGIN
|
||||
PROMPT 2 13 "Riduzione IVA"
|
||||
HELP "Indicare se e' soggetto a riduzione IVA"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_CODDEST 10
|
||||
BEGIN
|
||||
PROMPT 2 14 "Luogo di destinazione "
|
||||
USE DST
|
||||
JOIN LF_COMUNI INTO STATO=S8 COM=S9
|
||||
INPUT CODTAB F_CODDEST
|
||||
DISPLAY "Luogo di destinazione" CODTAB
|
||||
DISPLAY "Ragione sociale@50" S0
|
||||
DISPLAY "Indirizzo@35" S1[1,35]
|
||||
DISPLAY "N.@9" S1[36,45]
|
||||
DISPLAY "Localita'@24" S1[46,70]
|
||||
DISPLAY "C.A.P." S7
|
||||
DISPLAY "Comune" S9
|
||||
DISPLAY "@50" LF_COMUNI->DENCOM
|
||||
OUTPUT F_CODDEST CODTAB
|
||||
OUTPUT F_DESDEST S0
|
||||
CHECKTYPE NORMAL
|
||||
HELP "Codice del luogo di destinazione"
|
||||
END
|
||||
|
||||
STRING F_DESDEST 50
|
||||
BEGIN
|
||||
PROMPT 2 15 "Ragione soc.destinazione "
|
||||
USE DST KEY 2
|
||||
JOIN LF_COMUNI INTO STATO=S8 COM=S9
|
||||
INPUT CODTAB F_DESDEST
|
||||
DISPLAY "Ragione sociale@50" S0
|
||||
DISPLAY "Luogo di destinazione" CODTAB
|
||||
DISPLAY "Indirizzo@35" S1[1,35]
|
||||
DISPLAY "N.@9" S1[36,45]
|
||||
DISPLAY "Localita'@24" S1[46,70]
|
||||
DISPLAY "C.A.P." S7
|
||||
DISPLAY "Comune" S9
|
||||
DISPLAY "@50" LF_COMUNI->DENCOM
|
||||
COPY OUTPUT F_CODDEST
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_PADESTINI 7
|
||||
BEGIN
|
||||
PROMPT 2 16 "Codice Destinatario (SdI)"
|
||||
FLAGS ""
|
||||
MODULES PA,FP
|
||||
HELP "Codice ufficio dell destinatario della fattura elettronica"
|
||||
END
|
||||
|
||||
STRING F_PARIFAMMI 20
|
||||
BEGIN
|
||||
PROMPT 2 17 "Codice riferimento amministrazione"
|
||||
FLAGS "U"
|
||||
MODULES PA,FP
|
||||
HELP "Codice del cedente presso l'amministrazione"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Contatti" -1 -1 68 10
|
||||
|
||||
NUMBER F_CONTACT 6
|
||||
BEGIN
|
||||
PROMPT 1 0 "Contatto "
|
||||
USE LF_CONTACT KEY 3
|
||||
INPUT TIPOCF -F_TIPOCF SELECT
|
||||
INPUT CODCF -F_CODCF SELECT
|
||||
INPUT CONTACT F_CONTACT
|
||||
DISPLAY "Codice" CONTACT
|
||||
DISPLAY "Nome@50" NOME
|
||||
DISPLAY "Cognome@50" COGNOME
|
||||
OUTPUT F_CONTACT CONTACT
|
||||
OUTPUT F_NOME NOME
|
||||
OUTPUT F_COGNOME COGNOME
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN ba4 -6
|
||||
END
|
||||
|
||||
STRING F_NOME 50
|
||||
BEGIN
|
||||
PROMPT 1 1 "Nome "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_COGNOME 50
|
||||
BEGIN
|
||||
PROMPT 1 2 "Cognome "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 65 7
|
||||
BEGIN
|
||||
PROMPT 1 3 "Documenti / Profili"
|
||||
END
|
||||
|
||||
STRING F_TIPO1 8
|
||||
BEGIN
|
||||
PROMPT 2 4 "Tipo 1 "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_TIPO2 8
|
||||
BEGIN
|
||||
PROMPT 24 4 "Tipo 2 "
|
||||
END
|
||||
|
||||
STRING F_TIPO3 8
|
||||
BEGIN
|
||||
PROMPT 46 4 "Tipo 3 "
|
||||
END
|
||||
|
||||
STRING F_TIPO4 8
|
||||
BEGIN
|
||||
PROMPT 2 5 "Tipo 4 "
|
||||
END
|
||||
|
||||
STRING F_TIPO5 8
|
||||
BEGIN
|
||||
PROMPT 24 5 "Tipo 5 "
|
||||
END
|
||||
|
||||
STRING F_TIPO6 8
|
||||
BEGIN
|
||||
PROMPT 46 5 "Tipo 6 "
|
||||
END
|
||||
|
||||
STRING F_TIPO7 8
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo 7 "
|
||||
END
|
||||
|
||||
STRING F_TIPO8 8
|
||||
BEGIN
|
||||
PROMPT 24 6 "Tipo 8 "
|
||||
END
|
||||
|
||||
STRING F_TIPO9 8
|
||||
BEGIN
|
||||
PROMPT 46 6 "Tipo 9 "
|
||||
END
|
||||
|
||||
STRING F_TIPO10 8
|
||||
BEGIN
|
||||
PROMPT 2 7 "Tipo 10"
|
||||
END
|
||||
|
||||
STRING F_TIPO11 8
|
||||
BEGIN
|
||||
PROMPT 24 7 "Tipo 11"
|
||||
END
|
||||
|
||||
STRING F_TIPO12 8
|
||||
BEGIN
|
||||
PROMPT 46 7 "Tipo 12"
|
||||
END
|
||||
|
||||
STRING F_TIPO13 8
|
||||
BEGIN
|
||||
PROMPT 2 8 "Tipo 13"
|
||||
END
|
||||
|
||||
STRING F_TIPO14 8
|
||||
BEGIN
|
||||
PROMPT 24 8 "Tipo 14"
|
||||
END
|
||||
|
||||
STRING F_TIPO15 8
|
||||
BEGIN
|
||||
PROMPT 46 8 "Tipo 15"
|
||||
END
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "bottombar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT 3 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
264
src/cg01/cg0201.cpp
Normal file
264
src/cg01/cg0201.cpp
Normal file
@ -0,0 +1,264 @@
|
||||
#include "cg0201.h"
|
||||
|
||||
#include <recset.h>
|
||||
|
||||
#include <clifo.h>
|
||||
#include <modaut.h>
|
||||
#include <indsp.h>
|
||||
|
||||
// Definizione dei metodi relativi alla classe TClifoVI
|
||||
|
||||
TClifoVI::TClifoVI() : TRelation(LF_CLIFO), _oldindirizzi(0), _gesven(FALSE)
|
||||
{
|
||||
add(LF_CFVEN,"TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
add(LF_INDSP,"TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
add(LF_CFPRI,"TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
}
|
||||
|
||||
void TClifoVI::destroy_rows()
|
||||
{
|
||||
_indirizzi.destroy();
|
||||
_contatti.destroy();
|
||||
}
|
||||
|
||||
TRectype& TClifoVI::indirizzo(int i)
|
||||
{
|
||||
TRectype *r=(TRectype*)_indirizzi.objptr(i);
|
||||
|
||||
if (r == NULL)
|
||||
{
|
||||
r = new TRectype(LF_INDSP);
|
||||
_indirizzi.add(r,i);
|
||||
}
|
||||
return *r;
|
||||
}
|
||||
|
||||
TRectype& TClifoVI::contatto(int i)
|
||||
{
|
||||
TRectype* r= (TRectype*)_contatti.objptr(i);
|
||||
|
||||
if (r == NULL)
|
||||
{
|
||||
r = new TRectype(LF_MULTIREL);
|
||||
_contatti.add(r,i);
|
||||
}
|
||||
return *r;
|
||||
}
|
||||
|
||||
|
||||
int TClifoVI::read_indirizzi()
|
||||
{
|
||||
destroy_rows();
|
||||
|
||||
if (_gesven)
|
||||
{
|
||||
const TRectype& rind = curr(LF_INDSP);
|
||||
|
||||
rind.put(IND_TIPOCF, tipocf);
|
||||
rind.put(IND_CODCF, codcf);
|
||||
_indirizzi.read(rind);
|
||||
|
||||
// Read contatti
|
||||
TLocalisamfile cont(LF_MULTIREL);
|
||||
const char tipocf = curr().get_char(CLI_TIPOCF);
|
||||
const long codcf = curr().get_long(CLI_CODCF);
|
||||
TString8 first; first.format("%C%06ld", tipocf, codcf);
|
||||
|
||||
cont.put("COD", "BACON");
|
||||
cont.put("FIRST", first);
|
||||
for (int err = cont.read(_isgteq);
|
||||
err == NOERR && cont.get("COD") == "BACON" && cont.get("FIRST") == first;
|
||||
err = cont.next())
|
||||
_contatti.add(cont.curr());
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TClifoVI::write_contatti()
|
||||
{
|
||||
TAssoc_array old_ones;
|
||||
TLocalisamfile cont(LF_MULTIREL);
|
||||
const char tipocf = curr().get_char(CLI_TIPOCF);
|
||||
const long codcf = curr().get_long(CLI_CODCF);
|
||||
TString8 first; first.format("%C%06ld", tipocf, codcf);
|
||||
|
||||
cont.put("COD", "BACON");
|
||||
cont.put("FIRST", first);
|
||||
for (int err = cont.read(_isgteq);
|
||||
err == NOERR && cont.get("COD") == "BACON" && cont.get("FIRST") == first;
|
||||
err = cont.next())
|
||||
old_ones.add(cont.curr().get("SECOND"));
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(old_ones, h, k, r)
|
||||
{
|
||||
bool trovato = false;
|
||||
for (int i = _contatti.last(); i >= 0 && !trovato; i--)
|
||||
{
|
||||
const TRectype& c = (const TRectype&)_contatti[i];
|
||||
|
||||
trovato = c.get_long("SECOND") == atol(k);
|
||||
}
|
||||
if (!trovato)
|
||||
{
|
||||
cont.zero();
|
||||
cont.put("COD", "BACON");
|
||||
cont.put("FIRST", first);
|
||||
cont.put("SECOND", k);
|
||||
cont.remove();
|
||||
}
|
||||
}
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(_contatti, i, obj)
|
||||
{
|
||||
TRectype& rec = *(TRectype*)obj;
|
||||
|
||||
if (rec.get("DATA").full())
|
||||
{
|
||||
TString8 second;
|
||||
second.format("%06ld", rec.get_long("SECOND"));
|
||||
rec.put("COD", "BACON");
|
||||
rec.put("FIRST", first);
|
||||
rec.put("SECOND", second);
|
||||
rec.write_rewrite(cont);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TClifoVI::read(TIsamop op, TReclock lockop)
|
||||
{
|
||||
const int err = file().read(op,lockop);
|
||||
|
||||
position_rels();
|
||||
|
||||
if (err == NOERR)
|
||||
read_indirizzi();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int TClifoVI::write_rec(bool re, const TRectype& rec, TLocalisamfile& f)
|
||||
{
|
||||
if (re)
|
||||
{
|
||||
const bool scrivi= f.rewrite(rec) != NOERR;
|
||||
|
||||
if (scrivi) f.write(rec);
|
||||
}
|
||||
else
|
||||
f.write(rec);
|
||||
return f.status();
|
||||
}
|
||||
|
||||
int TClifoVI::cancella(TLocalisamfile& f, int da, int a)
|
||||
{
|
||||
const char tipocf=lfile().get(IND_TIPOCF)[0];
|
||||
const long codcf=lfile().get_long(IND_CODCF);
|
||||
|
||||
for (int i=da; i<=a;i++)
|
||||
{
|
||||
f.zero();
|
||||
f.put(IND_TIPOCF,tipocf);
|
||||
f.put(IND_CODCF,codcf);
|
||||
f.put(IND_CODIND,i);
|
||||
if (f.read(_isequal,_lock)==NOERR)
|
||||
f.remove();
|
||||
}
|
||||
return f.status();
|
||||
}
|
||||
|
||||
int TClifoVI::registra(bool re, bool force)
|
||||
{
|
||||
TLocalisamfile& c=lfile(LF_CLIFO);
|
||||
int err = write_rec(re,c.curr(),c);
|
||||
|
||||
if (err == NOERR)
|
||||
{
|
||||
TLocalisamfile& v = lfile(LF_CFVEN);
|
||||
|
||||
err = write_rec(TRUE, v.curr(), v);
|
||||
if (err == NOERR)
|
||||
{
|
||||
|
||||
TLocalisamfile& p = lfile(LF_CFPRI);
|
||||
|
||||
p.put("TIPOCF", c.get(CLI_TIPOCF)[0]);
|
||||
p.put("CODCF", c.get_long(CLI_CODCF));
|
||||
err = write_rec(TRUE, p.curr(), p);
|
||||
if (err == NOERR)
|
||||
{
|
||||
// Put here gest_vend() discrimination
|
||||
if (_gesven)
|
||||
{
|
||||
TLocalisamfile& rind = lfile(LF_INDSP);
|
||||
const char tipocf = c.get(CLI_TIPOCF)[0];
|
||||
const long codcf = c.get_long(CLI_CODCF);
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; i < indirizzi(); i++)
|
||||
{
|
||||
if (!re)
|
||||
{
|
||||
indirizzo(i).put(IND_TIPOCF, tipocf);
|
||||
indirizzo(i).put(IND_CODCF, codcf);
|
||||
}
|
||||
err = write_rec(TRUE, indirizzo(i), rind);
|
||||
}
|
||||
if (i < _oldindirizzi)
|
||||
cancella(rind, i + 1, _oldindirizzi);
|
||||
_oldindirizzi = indirizzi();
|
||||
|
||||
write_contatti();
|
||||
}
|
||||
|
||||
if (_geslv)
|
||||
{
|
||||
TLocalisamfile& lv = lfile(-LVAUT);
|
||||
const char tipocf = c.get(CLI_TIPOCF)[0];
|
||||
const long codcf = c.get_long(CLI_CODCF);
|
||||
TString8 codtab; codtab << tipocf << codcf;
|
||||
TRectype& rec = lv.curr();
|
||||
|
||||
rec.put("CODTAB", codtab);
|
||||
err = write_rec(TRUE, rec, lv);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// END of gest_vend() discrimination
|
||||
return err;
|
||||
}
|
||||
|
||||
int TClifoVI::write(bool force)
|
||||
{
|
||||
_oldindirizzi = 0;
|
||||
return registra(FALSE,force);
|
||||
}
|
||||
|
||||
int TClifoVI::rewrite(bool force)
|
||||
{
|
||||
return registra(true,force);
|
||||
}
|
||||
|
||||
int TClifoVI::remove()
|
||||
{
|
||||
const int err = lfile(LF_CLIFO).remove();
|
||||
|
||||
lfile(LF_CFPRI).remove();
|
||||
|
||||
// Put here gest_vend() discrimination
|
||||
if (_gesven)
|
||||
{
|
||||
lfile(LF_CFVEN).remove();
|
||||
|
||||
TLocalisamfile& rind = lfile(LF_INDSP);
|
||||
|
||||
cancella(rind, 1, _oldindirizzi);
|
||||
_contatti.destroy();
|
||||
write_contatti();
|
||||
}
|
||||
_oldindirizzi = 0;
|
||||
return err;
|
||||
}
|
47
src/cg01/cg0201.h
Normal file
47
src/cg01/cg0201.h
Normal file
@ -0,0 +1,47 @@
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
#ifndef __RECARRAY_H
|
||||
#include <recarray.h>
|
||||
#endif
|
||||
|
||||
class TClifoVI : public TRelation
|
||||
{
|
||||
// @DPRIV
|
||||
|
||||
TRecord_array _indirizzi;
|
||||
TRecord_array _cfspra;
|
||||
TTrimmed_record_array _contatti;
|
||||
bool _gesven, _geslv;
|
||||
|
||||
// @END
|
||||
protected:
|
||||
// @FPROT
|
||||
int write_rec(bool re, const TRectype& r);
|
||||
int registra(bool re, bool force);
|
||||
int read_indirizzi();
|
||||
|
||||
// @END
|
||||
|
||||
public:
|
||||
virtual int next(TReclock lockop=_nolock) {return (lfile().next(lockop) || read_indirizzi());}
|
||||
virtual int prev(TReclock lockop=_nolock) {return (lfile().prev(lockop) || read_indirizzi());}
|
||||
virtual int first(TReclock lockop=_nolock) {return (lfile().first(lockop) || read_indirizzi());}
|
||||
virtual int last(TReclock lockop=_nolock) {return (lfile().last(lockop) || read_indirizzi());}
|
||||
virtual int skip(TReclock lockop=_nolock) {return (lfile().skip(lockop) || read_indirizzi());}
|
||||
virtual int read(TIsamop = _isgteq, TReclock lockop = _nolock);
|
||||
virtual int write(bool force=TRUE);
|
||||
virtual int rewrite(bool force=TRUE);
|
||||
virtual int remove();
|
||||
|
||||
TRecord_array & indirizzi() { return _indirizzi; }
|
||||
TRecord_array & cfspra() { return _cfspra; }
|
||||
TRecord_array & contatti() { return _contatti; }
|
||||
void destroy_rows();
|
||||
|
||||
void gestione_vendite(bool gv) { _gesven = gv; }
|
||||
void gestione_lavanderie(bool glv) { _geslv = glv; }
|
||||
|
||||
TClifoVI();
|
||||
virtual ~TClifoVI() {}
|
||||
};
|
BIN
src/cg01/cg03.gif
Normal file
BIN
src/cg01/cg03.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
78
src/cg01/cg0300.cpp
Normal file
78
src/cg01/cg0300.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
#include <relapp.h>
|
||||
#include <recarray.h>
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0300.h"
|
||||
|
||||
class CG0300_application : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
virtual TMask* _get_mask(int mode) { return _msk; }
|
||||
virtual bool changing_mask(int mode) {return FALSE;}
|
||||
virtual TRelation* get_relation() const {return _rel;}
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_query_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m) { init_modify_mode(m); }
|
||||
|
||||
public:
|
||||
CG0300_application() {}
|
||||
};
|
||||
|
||||
void CG0300_application::init_query_mode(TMask& m)
|
||||
|
||||
{
|
||||
disable_menu_item(M_FILE_NEW);
|
||||
m.show(-1);
|
||||
m.hide(-2);
|
||||
}
|
||||
|
||||
void CG0300_application::init_query_insert_mode(TMask& m)
|
||||
|
||||
{
|
||||
disable_menu_item(M_FILE_NEW);
|
||||
m.hide(-1);
|
||||
m.show(-2);
|
||||
m.enable(-3);
|
||||
}
|
||||
|
||||
void CG0300_application::init_modify_mode(TMask& m)
|
||||
|
||||
{
|
||||
m.disable(-3);
|
||||
}
|
||||
|
||||
|
||||
bool CG0300_application::user_create()
|
||||
{
|
||||
open_files(LF_ALLEG, LF_NDITTE, LF_ATTIV, LF_CLIFO, 0);
|
||||
_msk = new TMask("cg0300a") ;
|
||||
_rel = new TRelation(LF_ALLEG);
|
||||
const long codditta = get_firm();
|
||||
|
||||
TString16 key ; key << codditta;
|
||||
const TRectype & ditta = cache().get(LF_NDITTE, key);
|
||||
_msk->set(F_CODDITTA, codditta);
|
||||
if (!ditta.empty())
|
||||
_msk->set(F_CODATT, ditta.get(N_CODATTPREV));
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
bool CG0300_application::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0300(int argc, char* argv[])
|
||||
{
|
||||
CG0300_application a;
|
||||
a.run(argc, argv, TR("Immissione progressivi allegati"));
|
||||
return 0;
|
||||
}
|
51
src/cg01/cg0300.h
Normal file
51
src/cg01/cg0300.h
Normal file
@ -0,0 +1,51 @@
|
||||
#ifndef __CG0300_H
|
||||
#define __CG0300_H
|
||||
|
||||
#define TCLI "C"
|
||||
|
||||
#define N_CODDITTA "CODDITTA"
|
||||
#define N_CODATTPREV "CODATTPREV"
|
||||
#define N_CODATT "CODATT"
|
||||
#define N_CODCF "CODCF"
|
||||
|
||||
#define F_ANNO 101
|
||||
#define F_CODATT 102
|
||||
#define F_TIPOCF 103
|
||||
#define F_CODCF 104
|
||||
#define F_IMMESSO 105
|
||||
#define F_IMPESC 106
|
||||
#define F_IVAESC 107
|
||||
#define F_NIESC 108
|
||||
#define F_E8ESC 109
|
||||
#define F_NDOCESC 110
|
||||
#define F_IMPESP 111
|
||||
#define F_IVAESP 112
|
||||
#define F_NIESP 113
|
||||
#define F_E8ESP 114
|
||||
#define F_NDOCESP 115
|
||||
#define F_PROG101102 116
|
||||
#define F_CODDITTA 117
|
||||
#define F_RAGSOC 118
|
||||
#define F_COFI 119
|
||||
#define F_PAIV 120
|
||||
#define F_TOTALE 121
|
||||
#define F_TOTALE1 122
|
||||
#define F_TOTALE2 123
|
||||
#define F_TOTALE3 124
|
||||
#define F_TOTALE4 125
|
||||
#define F_TOTALE5 126
|
||||
#define F_TOTALE6 127
|
||||
#define F_PROMPT 128
|
||||
#define F_RAGSOC_D 129
|
||||
#define F_DENATT 130
|
||||
#define F_CODATTH 131
|
||||
#define F_CODCFH 132
|
||||
#define F_T1 133
|
||||
#define F_T2 134
|
||||
#define F_T3 135
|
||||
#define F_T4 136
|
||||
#define F_T5 137
|
||||
#define F_T6 138
|
||||
#define F_T7 139
|
||||
|
||||
#endif // __CG0300_H
|
446
src/cg01/cg0300a.uml
Normal file
446
src/cg01/cg0300a.uml
Normal file
@ -0,0 +1,446 @@
|
||||
#include "cg0300.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <relapbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Immissione progressivi allegati" 0 0 0 2
|
||||
|
||||
GROUPBOX DLG_NULL 77 8
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 1 "Anno "
|
||||
HELP "Anno di cui si vogliono visualizzare i saldi"
|
||||
FIELD LF_ALLEG->ANNO
|
||||
FLAGS "PRZA"
|
||||
KEY 1
|
||||
USE LF_ALLEG KEY 1
|
||||
JOIN %AIS TO LF_ALLEG INTO CODTAB=CODATT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT CODATT F_CODATT
|
||||
INPUT TIPOCF F_TIPOCF
|
||||
INPUT CODCF F_CODCF
|
||||
INPUT IMMESSO F_IMMESSO
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Codice att." CODATT
|
||||
DISPLAY "Descrizione @40" LF_TABCOM->S0
|
||||
DISPLAY "Tipo" TIPOCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Immesso" IMMESSO
|
||||
OUTPUT F_ANNO ANNO
|
||||
OUTPUT F_CODATT CODATT
|
||||
OUTPUT F_CODATTH CODATT
|
||||
OUTPUT F_TIPOCF TIPOCF
|
||||
OUTPUT F_CODCF CODCF
|
||||
OUTPUT F_IMMESSO IMMESSO
|
||||
WARNING "Registrazione assente"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ditta "
|
||||
HELP "Ditta di cui si vogliono visualizzare i saldi"
|
||||
FLAGS "RPDG"
|
||||
KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
WARNING "Ditta assente"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC_D 50 50
|
||||
BEGIN
|
||||
PROMPT 24 2 ""
|
||||
FLAGS "DP"
|
||||
END
|
||||
|
||||
STRING F_CODATT 5
|
||||
BEGIN
|
||||
PROMPT 2 3 "Cod.attivita' "
|
||||
HELP "Codice dell'attivita' della ditta"
|
||||
FIELD LF_ALLEG->CODATT
|
||||
FLAGS "PRZ"
|
||||
KEY 1
|
||||
COPY ALL F_ANNO
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Registrazione assente"
|
||||
MESSAGE COPY,F_CODATTH
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_CODATTH 5
|
||||
BEGIN
|
||||
PROMPT 2 3 "Cod.attivita' "
|
||||
FIELD LF_ALLEG->CODATT
|
||||
FLAGS "HPRZ"
|
||||
KEY 1
|
||||
USE LF_ATTIV
|
||||
JOIN LF_NDITTE TO LF_ATTIV INTO CODDITTA=CODDITTA
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT CODATT F_CODATT
|
||||
DISPLAY "Codice" LF_ATTIV->CODDITTA
|
||||
DISPLAY "Ragione sociale @50" LF_NDITTE->RAGSOC
|
||||
DISPLAY "Codice attivita'" LF_ATTIV->CODATT
|
||||
DISPLAY "Descrizione @40" LF_ATTIV->DESCR
|
||||
OUTPUT F_CODATT CODATT
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_DENATT LF_ATTIV->DESCR
|
||||
HELP "Inserire il codice dell'attivita'"
|
||||
MESSAGE COPY,F_CODATTH
|
||||
MESSAGE COPY,3@
|
||||
WARNING "Attivita' assente"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_DENATT 50
|
||||
BEGIN
|
||||
PROMPT 24 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST F_TIPOCF 16
|
||||
BEGIN
|
||||
PROMPT 2 4 "Tipo "
|
||||
FIELD LF_ALLEG->TIPOCF
|
||||
KEY 1
|
||||
HELP "Indicare se cliente, fornitore oppure bolletta doganale"
|
||||
ITEM "C|Clienti"
|
||||
MESSAGE SHOW,F_T1|HIDE,F_T2|HIDE,F_T3|SHOW,F_T5|HIDE,F_T6
|
||||
ITEM "F|Fornitori"
|
||||
MESSAGE HIDE,F_T1|SHOW,F_T2|HIDE,F_T3|HIDE,F_T5|SHOW,F_T6|ENABLE,F_CODCF|SHOW,6@
|
||||
ITEM "B|Boll.doganali"
|
||||
MESSAGE HIDE,F_T1|HIDE,F_T2|SHOW,F_T3|HIDE,F_T5|SHOW,F_T6|DISABLE,F_CODCF|SHOW,6@
|
||||
END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 36 4 "Codice "
|
||||
FIELD LF_ALLEG->CODCF
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
COPY ALL F_ANNO
|
||||
HELP "Codice relativo al cliente o fornitore"
|
||||
ADD RUN cg0 -1
|
||||
WARNING "Registrazione assente"
|
||||
GROUP 1
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_CODCFH
|
||||
END
|
||||
|
||||
NUMBER F_CODCFH 6
|
||||
BEGIN
|
||||
PROMPT 36 4 "Codice "
|
||||
FIELD LF_ALLEG->CODCF
|
||||
FLAGS "HR"
|
||||
KEY 1
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT CODCF F_CODCF
|
||||
DISPLAY "Tipo" TIPOCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
OUTPUT F_TIPOCF TIPOCF
|
||||
OUTPUT F_CODCFH CODCF
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
OUTPUT F_COFI COFI
|
||||
OUTPUT F_PAIV PAIV
|
||||
HELP "Codice relativo al cliente o fornitore"
|
||||
ADD RUN cg0 -1
|
||||
WARNING "Cliente assente"
|
||||
GROUP 2
|
||||
MESSAGE COPY,F_CODCF
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
BOOLEAN F_IMMESSO
|
||||
BEGIN
|
||||
PROMPT 64 4 "Immesso"
|
||||
HELP "Indicare se il saldo e' stato immesso da utente"
|
||||
FIELD LF_ALLEG->IMMESSO
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Rag.sociale "
|
||||
FLAGS "U"
|
||||
KEY 2
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Tipo" TIPOCF
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CODCFH
|
||||
HELP "Ragione sociale del cliente o fornitore"
|
||||
WARNING "Ragione sociale assente"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
STRING F_COFI 16
|
||||
BEGIN
|
||||
PROMPT 2 6 "Cod.fiscale "
|
||||
KEY 3
|
||||
USE LF_CLIFO KEY 4
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT COFI F_COFI
|
||||
DISPLAY "Codice fiscale " COFI
|
||||
DISPLAY "Tipo" TIPOCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
COPY OUTPUT F_CODCFH
|
||||
HELP "Codice fiscale del cliente o fornitore"
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice fiscale assente"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
STRING F_PAIV 12
|
||||
BEGIN
|
||||
PROMPT 36 6 "Partita IVA "
|
||||
KEY 4
|
||||
USE LF_CLIFO KEY 5
|
||||
INPUT TIPOCF F_TIPOCF SELECT
|
||||
INPUT PAIV F_PAIV
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Tipo" TIPOCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice fiscale " COFI
|
||||
COPY OUTPUT F_CODCFH
|
||||
HELP "Partita IVA del cliente o fornitore"
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Partita IVA assente"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 27 8 "Anno corrente"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 43 8 "Anno precedente"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 66 8 "Totale"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 9 "Operazioni imponibili "
|
||||
END
|
||||
|
||||
CURRENCY F_IMPESC 15
|
||||
BEGIN
|
||||
PROMPT 25 9 ""
|
||||
HELP "Totale operazioni imponibili anno corrente"
|
||||
FIELD LF_ALLEG->IMPESC
|
||||
MESSAGE K_TAB,F_TOTALE1|K_TAB,F_TOTALE5
|
||||
END
|
||||
|
||||
CURRENCY F_IMPESP 15
|
||||
BEGIN
|
||||
PROMPT 42 9 ""
|
||||
HELP "Totale operazioni imponibili anno corrente"
|
||||
FIELD LF_ALLEG->IMPESP
|
||||
MESSAGE K_TAB,F_TOTALE1|K_TAB,F_TOTALE6
|
||||
END
|
||||
|
||||
CURRENCY F_TOTALE1 15
|
||||
BEGIN
|
||||
PROMPT 60 9 ""
|
||||
FLAGS "D"
|
||||
NUM_CALC {#F_IMPESP+#F_IMPESC}
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 10 "Imposte addebitate "
|
||||
END
|
||||
|
||||
CURRENCY F_IVAESC 15
|
||||
BEGIN
|
||||
PROMPT 25 10 ""
|
||||
HELP "Totale imposte addebitate dell'anno corrente"
|
||||
FIELD LF_ALLEG->IVAESC
|
||||
MESSAGE K_TAB,F_TOTALE2|K_TAB,F_TOTALE5
|
||||
END
|
||||
|
||||
CURRENCY F_IVAESP 15
|
||||
BEGIN
|
||||
PROMPT 42 10 ""
|
||||
HELP "Totale imposte addebitate dell'anno precedente"
|
||||
FIELD LF_ALLEG->IVAESP
|
||||
MESSAGE K_TAB,F_TOTALE2|K_TAB,F_TOTALE6
|
||||
END
|
||||
|
||||
CURRENCY F_TOTALE2 15
|
||||
BEGIN
|
||||
PROMPT 60 10 ""
|
||||
FLAGS "D"
|
||||
NUM_CALC {#F_IVAESP+#F_IVAESC}
|
||||
END
|
||||
|
||||
TEXT F_T1
|
||||
BEGIN
|
||||
PROMPT 2 11 "Op. non imp. ed esenti "
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
TEXT F_T2
|
||||
BEGIN
|
||||
PROMPT 2 11 "Op. senza appl. d'imp. "
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
TEXT F_T3
|
||||
BEGIN
|
||||
PROMPT 2 11 "Operazioni senza appl. d'imposta "
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
CURRENCY F_NIESC 15
|
||||
BEGIN
|
||||
PROMPT 25 11 ""
|
||||
FIELD LF_ALLEG->NIESC
|
||||
HELP "Totale operazioni non imponibili ed esenti dell'anno corrente"
|
||||
MESSAGE K_TAB,F_TOTALE3|K_TAB,F_TOTALE5
|
||||
END
|
||||
|
||||
CURRENCY F_NIESP 15
|
||||
BEGIN
|
||||
PROMPT 42 11 ""
|
||||
FIELD LF_ALLEG->NIESP
|
||||
HELP "Totale operazioni non imponibili ed esenti dell'anno precedente"
|
||||
MESSAGE K_TAB,F_TOTALE3|K_TAB,F_TOTALE6
|
||||
END
|
||||
|
||||
CURRENCY F_TOTALE3 15
|
||||
BEGIN
|
||||
PROMPT 60 11 ""
|
||||
FLAGS "D"
|
||||
NUM_CALC {#F_NIESP+#F_NIESC}
|
||||
END
|
||||
|
||||
TEXT F_T4
|
||||
BEGIN
|
||||
PROMPT 2 12 "Op. non imp.(Art.8 2^c)"
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
CURRENCY F_E8ESC 15
|
||||
BEGIN
|
||||
PROMPT 25 12 ""
|
||||
FIELD LF_ALLEG->E8ESC
|
||||
GROUP 6
|
||||
HELP "Totale operazioni non imponibili (Art. 8 2^c) dell'anno corrente"
|
||||
MESSAGE K_TAB,F_TOTALE4|K_TAB,F_TOTALE5
|
||||
END
|
||||
|
||||
CURRENCY F_E8ESP 15
|
||||
BEGIN
|
||||
PROMPT 42 12 ""
|
||||
FIELD LF_ALLEG->E8ESP
|
||||
GROUP 6
|
||||
HELP "Totale operazioni non imponibili (Art. 8 2^c) dell'anno precedente"
|
||||
MESSAGE K_TAB,F_TOTALE4|K_TAB,F_TOTALE6
|
||||
END
|
||||
|
||||
CURRENCY F_TOTALE4 15
|
||||
BEGIN
|
||||
PROMPT 60 12 ""
|
||||
FLAGS "D"
|
||||
GROUP 6
|
||||
NUM_CALC {#F_E8ESP+#F_E8ESC}
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 13 "Totale "
|
||||
END
|
||||
|
||||
CURRENCY F_TOTALE5 15
|
||||
BEGIN
|
||||
PROMPT 25 13 ""
|
||||
FLAGS "D"
|
||||
NUM_CALC {#F_IMPESC+#F_IVAESC+#F_NIESC+#F_E8ESC}
|
||||
END
|
||||
|
||||
CURRENCY F_TOTALE6 15
|
||||
BEGIN
|
||||
PROMPT 42 13 ""
|
||||
FLAGS "D"
|
||||
NUM_CALC {#F_IMPESP+#F_IVAESP+#F_NIESP+#F_E8ESP}
|
||||
END
|
||||
|
||||
TEXT F_T7
|
||||
BEGIN
|
||||
PROMPT 2 15 "Numero fatture "
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
NUMBER F_NDOCESC 4
|
||||
BEGIN
|
||||
PROMPT 25 15 ""
|
||||
HELP "Numero di fatture ricevute nell'anno in corso dal fornitore"
|
||||
FIELD LF_ALLEG->NDOCESC
|
||||
FLAGS "R"
|
||||
GROUP 6
|
||||
MESSAGE K_TAB,F_TOTALE
|
||||
END
|
||||
|
||||
NUMBER F_NDOCESP 4
|
||||
BEGIN
|
||||
PROMPT 42 15 ""
|
||||
HELP "Numero di fatture ricevute nell'anno precedente dal fornitore"
|
||||
FIELD LF_ALLEG->NDOCESP
|
||||
FLAGS "R"
|
||||
GROUP 6
|
||||
MESSAGE K_TAB,F_TOTALE
|
||||
END
|
||||
|
||||
NUMBER F_TOTALE 5
|
||||
BEGIN
|
||||
PROMPT 60 15 ""
|
||||
FLAGS "RD"
|
||||
GROUP 6
|
||||
NUM_CALC {#F_NDOCESP+#F_NDOCESC}
|
||||
END
|
||||
|
||||
TEXT F_T5
|
||||
BEGIN
|
||||
PROMPT 2 17 "Operazioni non imponibili (mod 101) "
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
TEXT F_T6
|
||||
BEGIN
|
||||
PROMPT 2 17 "Operazioni non imponibili (mod 102) "
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
CURRENCY F_PROG101102 15
|
||||
BEGIN
|
||||
PROMPT 42 17 ""
|
||||
FIELD LF_ALLEG->PROG101102
|
||||
HELP "Totale operazioni non imponibili Art. 8 1^c, Artt. 8 bis, 9 e 72"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
BIN
src/cg01/cg04.gif
Normal file
BIN
src/cg01/cg04.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 101 KiB |
1355
src/cg01/cg0400.cpp
Normal file
1355
src/cg01/cg0400.cpp
Normal file
File diff suppressed because it is too large
Load Diff
40
src/cg01/cg0400.h
Normal file
40
src/cg01/cg0400.h
Normal file
@ -0,0 +1,40 @@
|
||||
#ifndef __CG0400_H
|
||||
#define __CG0400_H
|
||||
|
||||
#define TAB_REG "REG"
|
||||
#define TAB_PIM "PIM"
|
||||
|
||||
#define F_CODDITTA 101
|
||||
#define F_ANNO 102
|
||||
#define F_TIPO 103
|
||||
#define F_LIVELLO 104
|
||||
#define F_CODIVA 105
|
||||
#define F_TIPOTAB 106
|
||||
#define F_TIPOTABE 107
|
||||
#define F_ATTIVITA 108
|
||||
#define F_TIPOTABEL 109
|
||||
#define F_RAGSOC 110
|
||||
#define F_DATASTAMPA 112
|
||||
#define F_MESE 113
|
||||
#define F_STAMPA 114
|
||||
#define F_SELECTION 115
|
||||
#define F_TIPOPROGREG 116
|
||||
#define F_TRIMESTRE 117
|
||||
|
||||
#endif // __CG0400_H
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
207
src/cg01/cg0400a.uml
Normal file
207
src/cg01/cg0400a.uml
Normal file
@ -0,0 +1,207 @@
|
||||
#include "cg0400.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Riepilogo progressivi IVA" -1 -1 76 19
|
||||
|
||||
GROUPBOX DLG_NULL 74 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
FLAGS "ZFR"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Ditta" CODDITTA
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
OUTPUT F_ATTIVITA CODATTPREV
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Ditta assente"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50 46
|
||||
BEGIN
|
||||
PROMPT 17 1 "Rag.Soc."
|
||||
USE LF_NDITTE KEY 2
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione Sociale@60" RAGSOC
|
||||
DISPLAY "Codice" CODDITTA
|
||||
COPY OUTPUT F_CODDITTA
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Anno liquidazione "
|
||||
HELP "Anno di cui si effettua la liquidazione"
|
||||
FLAGS "A"
|
||||
VALIDATE FIXLEN_FUNC 4
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SELECTION 40
|
||||
BEGIN
|
||||
PROMPT 2 5 "Tipo di stampa "
|
||||
ITEM "1|Riepilogo progressivi per aliquota"
|
||||
MESSAGE HIDE,2@|SHOW,3@
|
||||
ITEM "2|Riepilogo progressivi per periodo"
|
||||
MESSAGE HIDE,1@
|
||||
END
|
||||
|
||||
RADIOBUTTON F_LIVELLO 24
|
||||
BEGIN
|
||||
PROMPT 2 9 "Livello progressivi"
|
||||
HELP "Tipo di raggruppamento dei riepiloghi"
|
||||
ITEM "1|Per aliquota"
|
||||
MESSAGE HIDE,F_ATTIVITA|SHOW,F_CODIVA|K_SPACE,F_TIPO
|
||||
ITEM "2|Per attivita'"
|
||||
MESSAGE SHOW,F_ATTIVITA|HIDE,F_CODIVA|K_SPACE,F_TIPO
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
RADIOBUTTON F_TIPO 24
|
||||
BEGIN
|
||||
PROMPT 40 9 "Tipo progressivi "
|
||||
HELP "Tipo di riepilogo da effettuare"
|
||||
ITEM "1|Vendite"
|
||||
ITEM "2|Acquisti"
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
STRING F_CODIVA 4
|
||||
BEGIN
|
||||
PROMPT 2 13 "Codice IVA "
|
||||
HELP "Aliquota IVA da riepilogare"
|
||||
FLAGS "U"
|
||||
USE %IVA
|
||||
INPUT CODTAB F_CODIVA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "%@6" R0
|
||||
DISPLAY "Tipo" S1
|
||||
OUTPUT F_CODIVA CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
WARNING "Codice IVA assente"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
RADIOBUTTON F_TIPOTAB 38
|
||||
BEGIN
|
||||
PROMPT 2 14 "Tipo tabella "
|
||||
HELP "Tipo di tabella da visualizzare"
|
||||
ITEM "1|Vendite in genere"
|
||||
ITEM "2|Vendite in sospensione d'imposta"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_ATTIVITA 5
|
||||
BEGIN
|
||||
PROMPT 2 13 "Codice attivita' "
|
||||
HELP "Codice dell'attivita' di cui si vuole il riepilogo"
|
||||
USE LF_ATTIV
|
||||
JOIN %AIS TO LF_ATTIV INTO CODTAB=CODATT
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT CODATT F_ATTIVITA
|
||||
DISPLAY "Codice attivita'" LF_TABCOM->CODTAB
|
||||
DISPLAY "Descrizione@50" LF_TABCOM->S0
|
||||
OUTPUT F_ATTIVITA CODATT
|
||||
WARNING "Codice attivita' non presente"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_TIPOTABEL 1
|
||||
BEGIN
|
||||
PROMPT 2 14 "Tipo tabella "
|
||||
HELP "Tipo di tabella da visualizzare"
|
||||
SHEET "Tipo|Descrizione@50"
|
||||
ITEM "1|Acquisti beni per rivendita"
|
||||
ITEM "2|Acquisti beni da ammortizzare detraibili"
|
||||
ITEM "3|Acquisti beni da ammortizzare non detraibili"
|
||||
ITEM "4|Altri beni strumentali acquisiti in leasing"
|
||||
ITEM "5|Acquisti beni da ammortizzare ult.detr. 6%"
|
||||
INPUT F_TIPOTABEL
|
||||
OUTPUT F_TIPOTABEL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_TIPOTABE 1
|
||||
BEGIN
|
||||
PROMPT 2 14 "Tipo tabella "
|
||||
HELP "Tipo di tabella da visualizzare"
|
||||
SHEET "Tipo|Descrizione@50"
|
||||
ITEM "1|Acquisti in genere"
|
||||
ITEM "2|Acquisti indetraibili su operazioni esenti"
|
||||
ITEM "3|Acquisti indetraibili passaggi interni"
|
||||
ITEM "4|Acquisti indetraibili art. 19"
|
||||
ITEM "5|Acquisti base di calcolo per la ventilazione"
|
||||
ITEM "6|Bolle doganali"
|
||||
ITEM "7|Acquisti in sospensione d'imposta"
|
||||
INPUT F_TIPOTABE
|
||||
OUTPUT F_TIPOTABE
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
DATE F_DATASTAMPA
|
||||
BEGIN
|
||||
PROMPT 2 9 "Data stampa "
|
||||
HELP "Data in cui viene effettuata la stampa"
|
||||
FLAGS "A"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LISTBOX F_MESE 12
|
||||
BEGIN
|
||||
PROMPT 2 11 "Periodo riepilogo "
|
||||
ITEM "1|Gennaio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "2|Febbraio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "3|Marzo" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "4|Aprile" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "5|Maggio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "6|Giugno" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "7|Luglio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "8|Agosto" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "9|Settembre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "10|Ottobre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "11|Novembre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "12|Dicembre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "13|Annuale" MESSAGE "X", F_STAMPA|DISABLE,F_STAMPA
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LISTBOX F_TRIMESTRE 12
|
||||
BEGIN
|
||||
PROMPT 2 11 "Periodo riepilogo "
|
||||
ITEM "3|1 Trimestre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "6|2 Trimestre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "9|3 Trimestre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "12|4 Trimestre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "13|Annuale" MESSAGE "X", F_STAMPA|DISABLE,F_STAMPA
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LISTBOX F_TIPOPROGREG 18
|
||||
BEGIN
|
||||
PROMPT 35 11 "Tipo progressivi "
|
||||
ITEM "L|Solo Liquidazione"
|
||||
ITEM "V|Solo Volume Affari"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_STAMPA
|
||||
BEGIN
|
||||
PROMPT 2 13 "Stampa progressivi da inizio anno "
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
91
src/cg01/cg0400b.uml
Normal file
91
src/cg01/cg0400b.uml
Normal file
@ -0,0 +1,91 @@
|
||||
#include "cg0400.h"
|
||||
|
||||
PAGE "Stampa riepilogo progressivi IVA" -1 -1 80 16
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
FLAGS "ZFR"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Ditta" CODDITTA
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Ditta assente"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 17 1 "Rag.Soc."
|
||||
USE LF_NDITTE KEY 2
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODDITTA
|
||||
COPY OUTPUT F_CODDITTA
|
||||
END
|
||||
|
||||
DATE F_DATASTAMPA
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data stampa "
|
||||
HELP "Data in cui viene effettuata la stampa"
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "Anno riepilogo "
|
||||
FLAGS "A"
|
||||
VALIDATE FIXLEN_FUNC 4
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LISTBOX F_MESE 11
|
||||
BEGIN
|
||||
PROMPT 2 7 "Mese riepilogo "
|
||||
ITEM "1|Gennaio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "2|Febbraio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "3|Marzo" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "4|Aprile" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "5|Maggio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "6|Giugno" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "7|Luglio" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "8|Agosto" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "9|Settembre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "10|Ottobre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "11|Novembre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "12|Dicembre" MESSAGE ENABLE,F_STAMPA
|
||||
ITEM "13|Annuale" MESSAGE "X", F_STAMPA|DISABLE,F_STAMPA
|
||||
END
|
||||
|
||||
BOOLEAN F_STAMPA
|
||||
BEGIN
|
||||
PROMPT 2 9 "Stampa progressivi da inizio anno "
|
||||
END
|
||||
|
||||
/*
|
||||
BUTTON DLG_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "~Stampa"
|
||||
END
|
||||
*/
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
BIN
src/cg01/cg05.gif
Normal file
BIN
src/cg01/cg05.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
934
src/cg01/cg0500.cpp
Normal file
934
src/cg01/cg0500.cpp
Normal file
@ -0,0 +1,934 @@
|
||||
// cg0500.cpp - Tabella causali
|
||||
|
||||
#include <applicat.h>
|
||||
#include <msksheet.h>
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include <causali.h>
|
||||
#include <rcausali.h>
|
||||
#include <clifo.h>
|
||||
#include <pconti.h>
|
||||
|
||||
#include "cglib01.h"
|
||||
#include "cg0500.h"
|
||||
|
||||
typedef enum { no_descr, acquisto, vendita, incasso_pagamento, ritenuta_occas } tipo_descr;
|
||||
|
||||
class TCaus_app : public TRelation_application
|
||||
{
|
||||
TRelation* _rel; // Relazione principale
|
||||
TMask* _msk; // Maschera principale
|
||||
|
||||
|
||||
int _filtro; // tipo di filtro su tab. reg.
|
||||
// 1 vendite senza corrisp
|
||||
// 2 vendite con corrisp
|
||||
// 3 acquisti
|
||||
// 4 sia acquisti che vendite
|
||||
|
||||
TSheet_field* _sheet;
|
||||
TRecord_array * _rcaus_rec;
|
||||
|
||||
// Parametri ditta
|
||||
bool _valuta, _saldaconto;
|
||||
int _anno_iva;
|
||||
tipo_descr _last_descr;
|
||||
|
||||
protected:
|
||||
|
||||
static bool filtra_reg(const TRelation * r);
|
||||
int calc_filter(const TString& tpd);
|
||||
void set_reg_filter(int filtro);
|
||||
|
||||
static bool tipocf_hndl (TMask_field& f, KEY k);
|
||||
static bool cod_reg_hndl (TMask_field& f, KEY k);
|
||||
static bool tipodoc_hndl (TMask_field& f, KEY k);
|
||||
static bool tipomov_hndl (TMask_field& f, KEY k);
|
||||
|
||||
static bool sezione_hndl (TMask_field& f, KEY k);
|
||||
static bool conto_hndl (TMask_field& f, KEY k);
|
||||
static bool sottoconto_hndl (TMask_field& f, KEY k);
|
||||
static bool m770_hndl (TMask_field& f, KEY k);
|
||||
static bool ss_notify (TSheet_field& s, int r, KEY k);
|
||||
|
||||
bool fill_sheet(TMask&);
|
||||
|
||||
void set_descr (int numrig, const char* descr);
|
||||
void clear(int riga);
|
||||
void clear_descr();
|
||||
void carica_righe_libere(int from = -1);
|
||||
void causale_inc_pag();
|
||||
void causale_ritenute ();
|
||||
void causale_vendite ();
|
||||
void causale_acquisti();
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
virtual TMask* _get_mask(int mode) { return _msk; }
|
||||
virtual bool changing_mask(int mode) {return false; }
|
||||
virtual bool remove();
|
||||
|
||||
void init_mask(TMask&);
|
||||
virtual void on_config_change();
|
||||
virtual void init_query_mode(TMask&);
|
||||
virtual void init_insert_mode(TMask& m) { init_query_mode(m); }
|
||||
virtual void init_modify_mode(TMask& m) { init_query_mode(m); }
|
||||
virtual int rewrite(const TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual int read(TMask& m);
|
||||
virtual void ini2sheet(TConfig& ini, TSheet_field &sheet);
|
||||
virtual void sheet2ini(TSheet_field &sheet,TConfig& ini);
|
||||
|
||||
void load_rcaus(TMask& m);
|
||||
int re_write(const TMask& m, bool re);
|
||||
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
|
||||
virtual bool check_autorization() const { return false; }
|
||||
tipo_descr _tipo_des; // Il tipo di causale corrente
|
||||
|
||||
void compila_array (const TString&, int, int, int);
|
||||
|
||||
TSheet_field& ss() const { return *_sheet; }
|
||||
TMask& ss_mask() const { return _sheet->sheet_mask(); }
|
||||
|
||||
void add_riga (int numrig, char sz, const TBill& tc, const TString& d, const TString& da);
|
||||
bool mostra_campi();
|
||||
|
||||
bool valuta() const { return _valuta; }
|
||||
bool saldaconto() const { return _saldaconto; }
|
||||
int anno_iva() const { return _anno_iva; }
|
||||
|
||||
TCaus_app() : _last_descr(no_descr) {}
|
||||
};
|
||||
|
||||
HIDDEN TCaus_app& app() { return (TCaus_app&) main_app(); }
|
||||
|
||||
bool TCaus_app::filtra_reg(const TRelation * r)
|
||||
{
|
||||
const TRectype& rec = r->curr();
|
||||
const int anno = atoi(rec.get("CODTAB").sleft(4));
|
||||
|
||||
bool ok = anno == app().anno_iva();
|
||||
if (ok)
|
||||
{
|
||||
const TipoIVA tiporeg = (TipoIVA)rec.get_int("I0");
|
||||
const bool corrisp = rec.get_bool("B0");
|
||||
|
||||
switch (app()._filtro)
|
||||
{
|
||||
case 1:
|
||||
ok = tiporeg == iva_vendite; break;
|
||||
case 2:
|
||||
ok = (tiporeg == iva_vendite && corrisp); break;
|
||||
case 3:
|
||||
ok = tiporeg == iva_acquisti; break;
|
||||
case 4: // tiporeg 1 senza corrisp OPPURE 2 (NC ST ND AF)
|
||||
ok = tiporeg == iva_acquisti || (tiporeg == iva_vendite && !corrisp) ; break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Funzioni che caricano le varie descrizioni fisse nell'array
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Cancella tutta la riga tranne la descrizione
|
||||
void TCaus_app::clear(int riga)
|
||||
{
|
||||
TToken_string& r = ss().row(riga);
|
||||
r = r.get(0);
|
||||
ss().force_update(riga);
|
||||
}
|
||||
|
||||
// Setta la descrizione di una riga senza cmbiare il resto
|
||||
void TCaus_app::set_descr(int i, const char * dfi)
|
||||
{
|
||||
TToken_string& r = ss().row(i);
|
||||
r.add(dfi, 0);
|
||||
}
|
||||
|
||||
void TCaus_app::carica_righe_libere(int from)
|
||||
{
|
||||
if (from < 0) from = ss().items();
|
||||
for (int i = from; i < 20; i++)
|
||||
set_descr(i, "");
|
||||
if (_last_descr != _tipo_des)
|
||||
{
|
||||
if (curr_mask().is_running())
|
||||
ss().force_update();
|
||||
ss().select(0);
|
||||
_last_descr = _tipo_des;
|
||||
}
|
||||
}
|
||||
|
||||
// Cancella tutte le descrizioni delle righe
|
||||
void TCaus_app::clear_descr()
|
||||
{
|
||||
if (_tipo_des != no_descr)
|
||||
{
|
||||
TString_array& a = ss().rows_array();
|
||||
for (int i = 0; i < a.items(); i++)
|
||||
{
|
||||
TToken_string& r = a.row(i);
|
||||
r.add("", 0);
|
||||
}
|
||||
_tipo_des = no_descr;
|
||||
carica_righe_libere();
|
||||
}
|
||||
}
|
||||
|
||||
void TCaus_app::causale_vendite()
|
||||
{
|
||||
if (_tipo_des != vendita)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr(i++, TR("C Clienti"));
|
||||
set_descr(i++, TR("C Di ricavo"));
|
||||
set_descr(i++, TR("C IVA vendite"));
|
||||
set_descr(i++, TR("C IVA non detraibile"));
|
||||
set_descr(i++, TR("C Imp. esenti")); // 5
|
||||
set_descr(i++, TR("C Imp. non imponibili"));
|
||||
set_descr(i++, TR("C Imp. non soggetti"));
|
||||
set_descr(i++, TR("C Ritenute fiscali"));
|
||||
set_descr(i++, TR("C Ritenute sociali"));
|
||||
set_descr(i++, TR("C IVA ad esig.diff.")); // 10
|
||||
set_descr(i++, TR("C IVA per cassa"));
|
||||
set_descr(i++, TR("C IVA in rev. charge"));
|
||||
_tipo_des = vendita;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TCaus_app::causale_acquisti()
|
||||
{
|
||||
if (_tipo_des != acquisto)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr(i++, TR("C Fornitori"));
|
||||
set_descr(i++, TR("C Di costo"));
|
||||
set_descr(i++, TR("C IVA acquisti"));
|
||||
set_descr(i++, TR("C IVA non detraibile"));
|
||||
set_descr(i++, TR("C Imp. esenti")); // 5
|
||||
set_descr(i++, TR("C Imp. non imponibili"));
|
||||
set_descr(i++, TR("C Imp. non soggetti"));
|
||||
set_descr(i++, TR("C Ritenute fiscali"));
|
||||
set_descr(i++, TR("C Ritenute sociali"));
|
||||
set_descr(i++, TR("C IVA ad esig.diff.")); // 10
|
||||
set_descr(i++, TR("C IVA per cassa"));
|
||||
set_descr(i++, TR("C IVA in rev. charge"));
|
||||
_tipo_des = acquisto;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
}
|
||||
|
||||
void TCaus_app::causale_ritenute()
|
||||
{
|
||||
if (_tipo_des != ritenuta_occas)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr (i++, TR("Costo"));
|
||||
set_descr (i++, TR("Cassa/banca"));
|
||||
set_descr (i++, TR("Erario"));
|
||||
_tipo_des = ritenuta_occas;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
}
|
||||
|
||||
void TCaus_app::causale_inc_pag()
|
||||
{
|
||||
if (_tipo_des != incasso_pagamento)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr(i++, TR("C Clienti/Fornitori")); // 2
|
||||
set_descr(i++, TR("C Cassa o banca"));
|
||||
set_descr(i++, TR("C Tratta")); // 4
|
||||
set_descr(i++, TR("C Ricevuta bancaria"));
|
||||
set_descr(i++, TR("C Cessione")); // 6
|
||||
set_descr(i++, TR("C Paghero'"));
|
||||
set_descr(i++, TR("C Lettera di credito"));// 8
|
||||
set_descr(i++, TR("C Tratta accettata"));
|
||||
set_descr(i++, TR("C Abbuoni pass./sc."));
|
||||
set_descr(i++, TR("C Abbuoni att./sc.")); // 10
|
||||
set_descr(i++, TR("C Spese e rimborsi"));
|
||||
set_descr(i++, TR("C Ritenute fiscali")); // 12
|
||||
set_descr(i++, TR("C Differenza cambio"));
|
||||
set_descr(i++, TR("C Ritenute sociali")); // 14
|
||||
_tipo_des = incasso_pagamento;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Handler della maschera principale
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
/************
|
||||
se m770==6 le descrizioni devono essere
|
||||
1. conto
|
||||
2. cassa/banca
|
||||
3. erario
|
||||
************/
|
||||
bool TCaus_app::m770_hndl (TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB && f.focusdirty())
|
||||
app().fill_sheet(f.mask());
|
||||
return true;
|
||||
}
|
||||
|
||||
void TCaus_app::set_reg_filter(int f)
|
||||
{
|
||||
_filtro = f;
|
||||
|
||||
TEdit_field& reg = _msk->efield(F_COD_REG);
|
||||
reg.browse()->cursor()->set_filterfunction(filtra_reg);
|
||||
|
||||
TEdit_field& des = _msk->efield(F_DES_REG);
|
||||
des.browse()->cursor()->set_filterfunction(filtra_reg);
|
||||
}
|
||||
|
||||
|
||||
int TCaus_app::calc_filter(const TString& tpd)
|
||||
{
|
||||
int filtro = 0;
|
||||
|
||||
if (tpd.full())
|
||||
{
|
||||
const TRectype& tpd_rec = cache().get("%TPD", tpd);
|
||||
if (!tpd_rec.empty())
|
||||
{
|
||||
const TipoIVA i = (TipoIVA)tpd_rec.get_int("I0"); // IVA acquisti, vendite, generica
|
||||
if (i == iva_vendite) // vendite
|
||||
{
|
||||
const bool corrisp = tpd_rec.get_bool("B0"); // vendite con corrispettivi?
|
||||
filtro = corrisp ? 2 : 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i == iva_acquisti) // acquisti
|
||||
filtro = 3; else
|
||||
if (i == iva_generica) // sia acquisti sia vendite
|
||||
filtro = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set_reg_filter(filtro);
|
||||
return filtro;
|
||||
}
|
||||
|
||||
|
||||
bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
|
||||
{
|
||||
// Testo K_TAB perche' il controllo deve scattare anche all'inizio
|
||||
// per vedere, per es., se il registro scritto nella causale esiste ancora
|
||||
if (k == K_TAB)
|
||||
{
|
||||
const TString& val = f.get();
|
||||
TMask& m = f.mask();
|
||||
TEdit_field& field_reg = m.efield(F_COD_REG);
|
||||
|
||||
if (val.not_empty() && val != "IN" && val != "PG" && val != "AN")
|
||||
{
|
||||
m.hide(F_TIPO_MOV_2);
|
||||
m.show(F_TIPO_MOV_1);
|
||||
m.enable(F_TIPO_MOV_1, app().saldaconto());
|
||||
|
||||
field_reg.enable();
|
||||
m.enable(F_DES_REG);
|
||||
app().calc_filter(val);
|
||||
}
|
||||
else // TIPODOC vuoto || IN || PG || AN
|
||||
{
|
||||
field_reg.reset();
|
||||
field_reg.enable(m.query_mode());
|
||||
m.reset(F_DES_REG);
|
||||
m.enable(F_DES_REG, m.query_mode());
|
||||
|
||||
m.hide(F_TIPO_MOV_1);
|
||||
m.show(F_TIPO_MOV_2);
|
||||
m.enable(F_TIPO_MOV_2, app().saldaconto());
|
||||
}
|
||||
|
||||
// Ma davvero esiste il registro ?
|
||||
const TString& codreg = field_reg.get();
|
||||
if (codreg.full())
|
||||
{
|
||||
TRegistro registro(codreg, app().anno_iva());
|
||||
|
||||
if (registro.name().empty())
|
||||
{
|
||||
TRegistro registro_prec(codreg, app().anno_iva() - 1);
|
||||
|
||||
if (registro_prec.name().empty())
|
||||
return f.error_box(FR("Non esiste il registro %s per l'anno %d"),
|
||||
(const char*)codreg, app().anno_iva());
|
||||
}
|
||||
}
|
||||
|
||||
app().mostra_campi();
|
||||
app().fill_sheet(m);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TCaus_app::tipomov_hndl (TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB && f.mask().is_running())
|
||||
{
|
||||
app().mostra_campi();
|
||||
if (f.focusdirty())
|
||||
app().fill_sheet(f.mask());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TCaus_app::mostra_campi()
|
||||
{
|
||||
TMask& m = curr_mask();
|
||||
const TString& codreg = m.get(F_COD_REG);
|
||||
|
||||
if (codreg.blank())
|
||||
{
|
||||
m.hide(F_AUTO_FAT);
|
||||
m.hide(F_ALLEGAT);
|
||||
m.hide(F_FAT_RITARDO);
|
||||
m.hide(F_OP_INTRACOM);
|
||||
m.hide(F_VALINTRA);
|
||||
|
||||
// m.hide(F_COD_CAUS_IM);
|
||||
m.hide(F_CODCAUREG);
|
||||
|
||||
const int tpm = m.get_int(F_TIPO_MOV);
|
||||
switch (tpm)
|
||||
{
|
||||
case 0:
|
||||
m.enable(F_OP_FINE_ANNO, m.insert_mode());
|
||||
m.enable(F_MOV_VALU, valuta());
|
||||
m.show(F_M_770);
|
||||
m.show(F_OP_FINE_ANNO);
|
||||
m.show(F_COLL_CESP);
|
||||
break;
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
m.enable(F_MOV_VALU, valuta());
|
||||
m.show(F_M_770);
|
||||
m.hide(F_OP_FINE_ANNO);
|
||||
m.hide(F_COLL_CESP);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // codreg non vuoto
|
||||
m.hide(F_OP_FINE_ANNO);
|
||||
|
||||
m.enable(F_MOV_VALU, valuta());
|
||||
// m.show(F_COD_CAUS_IM);
|
||||
// m.enable(F_COD_CAUS_IM, !saldaconto());
|
||||
m.show(F_CODCAUREG);
|
||||
|
||||
m.show(F_AUTO_FAT);
|
||||
m.show(F_ALLEGAT);
|
||||
m.show(F_FAT_RITARDO);
|
||||
m.show(F_COLL_CESP);
|
||||
m.show(F_OP_INTRACOM);
|
||||
m.show(F_VALINTRA);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TCaus_app::cod_reg_hndl (TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB)
|
||||
{
|
||||
app().mostra_campi();
|
||||
if (f.focusdirty())
|
||||
app().fill_sheet(f.mask());
|
||||
return true;
|
||||
}
|
||||
|
||||
// controllo di consistenza tra codice (tipo) registro e tipo documento
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const TString& tpd = m.get(F_TIPO_DOC);
|
||||
if (tpd.not_empty())
|
||||
{
|
||||
const TRectype& tabtpd = cache().get("%TPD", tpd);
|
||||
if (!tabtpd.empty())
|
||||
{
|
||||
const TipoIVA i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
|
||||
if (i != iva_generica) // iva_generica = 9
|
||||
{
|
||||
const TString& codreg = m.get(F_COD_REG);
|
||||
const TRegistro grog(codreg, app().anno_iva());
|
||||
const TipoIVA ri = grog.iva();
|
||||
if (i != ri)
|
||||
return f.error_box(TR("Tipo documento incompatibile con tipo registro"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Handler della maschera dello spreadsheet
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool TCaus_app::ss_notify(TSheet_field& s, int r, KEY k)
|
||||
{
|
||||
static bool selecting = false;
|
||||
|
||||
switch(k)
|
||||
{
|
||||
case K_TAB:
|
||||
if (!selecting && s.row(r).get_char(1) <= ' ') // riga azzerata
|
||||
{
|
||||
selecting = true;
|
||||
s.select(r, 1, false); // Vado alla prima colonna delle righe vuote
|
||||
selecting = false;
|
||||
}
|
||||
break;
|
||||
case K_ENTER:
|
||||
if (s.row(r).get_int(3) == 0 && s.row(r).get_char(1) <= ' ') // riga azzerata
|
||||
app().clear(r); // pulisco la riga anche nell'array
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Handler della sezione D/A: e' obbligatoria se si specifica un gruppo sulla riga
|
||||
bool TCaus_app::sezione_hndl(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
if (f.mask().get(SS_GRUPPO).not_empty())
|
||||
{
|
||||
const char sez = f.get()[0];
|
||||
if (sez != 'A' && sez != 'D')
|
||||
return f.error_box(TR("E' necessario specificare la sezione D/A"));
|
||||
}
|
||||
// else
|
||||
// f.reset();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
char scarta = 'Z';
|
||||
int ultima = 8;
|
||||
|
||||
const TipoIVA tpr = (TipoIVA)app().curr_mask().get_int(F_TIPO_REG);
|
||||
|
||||
switch (tpr)
|
||||
{
|
||||
case iva_vendite:
|
||||
scarta = 'F'; break; // Scarta vendite a fornitori
|
||||
case iva_acquisti:
|
||||
scarta = 'C'; break; // Scarta acquisti da clienti
|
||||
default:
|
||||
scarta = 'Z'; // Accetta tutto
|
||||
switch (app()._tipo_des)
|
||||
{
|
||||
case incasso_pagamento:
|
||||
ultima = 12; break;
|
||||
default:
|
||||
ultima = 8; break;
|
||||
}
|
||||
}
|
||||
|
||||
TMask_field& sez = f.mask().field(SS_SEZIONE);
|
||||
char sezione = toupper(sez.get()[0]);
|
||||
if (sezione != 'A' && sezione != 'D') sezione = ' ';
|
||||
char sezione_consigliata = ' ';
|
||||
|
||||
const bool full = f.mask().get(SS_GRUPPO).not_empty();
|
||||
|
||||
const int riga = app().ss().selected();
|
||||
if (tpr != nessuna_iva && riga <= ultima)
|
||||
{
|
||||
TMask_field& cfld = f.mask().field(SS_TIPOCF);
|
||||
const char cf = toupper(cfld.get()[0]);
|
||||
|
||||
bool ok = true;
|
||||
if (riga == 0 || riga == 8)
|
||||
{
|
||||
ok = cf != scarta;
|
||||
if (full && sezione == ' ')
|
||||
{
|
||||
if (riga == 0)
|
||||
sezione_consigliata = cf == 'C' ? 'D' : 'A';
|
||||
else
|
||||
sezione_consigliata = app().ss().row(0).get_char(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ok = cf != 'C' && cf != 'F';
|
||||
if (full && sezione == ' ')
|
||||
sezione_consigliata = app().ss().row(0).get_char(1) == 'D' ? 'A' : 'D';
|
||||
}
|
||||
|
||||
const bool solaIVA = (TipoIVA)app().curr_mask().get_bool(F_SOLAIVA);
|
||||
|
||||
if (!ok && solaIVA && cf == 'F')
|
||||
ok = true; // le regolarizzazioni possono avere un fornitore sulla vendita fittizia
|
||||
|
||||
if (!ok)
|
||||
return cfld.error_box(
|
||||
FR("%s non valido con registro %s"), cf == 'C' ? TR("Cliente") : TR("Fornitore"), iva2name(tpr));
|
||||
|
||||
}
|
||||
|
||||
if (sezione == ' ' && sezione_consigliata != ' ')
|
||||
{
|
||||
const char sc[2] = { sezione_consigliata, '\0' };
|
||||
sez.set(sc);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 1. Se specifico il sottoconto devono essere non vuoti gruppo e conto
|
||||
// 2. g-c-s devono esistere
|
||||
bool TCaus_app::sottoconto_hndl(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER && f.get().not_empty())
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const bool ok = m.get(SS_GRUPPO).not_empty() && m.get(SS_CONTO).not_empty();
|
||||
if (!ok) return f.error_box(TR("Conto incompleto"));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void TCaus_app::compila_array(const TString& tpd, int tpm, int tpr, int m770)
|
||||
{
|
||||
if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG")
|
||||
{
|
||||
bool canc = true;
|
||||
switch (tpm)
|
||||
{
|
||||
case 0:
|
||||
if (m770 == 6)
|
||||
{
|
||||
causale_ritenute();
|
||||
canc = false;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
if (saldaconto())
|
||||
{
|
||||
causale_inc_pag();
|
||||
canc = false;
|
||||
};
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (canc)
|
||||
clear_descr();
|
||||
}
|
||||
else // C'e' il tipodoc.
|
||||
{
|
||||
switch (tpr)
|
||||
{
|
||||
case 1:
|
||||
causale_vendite(); break;
|
||||
case 2:
|
||||
causale_acquisti(); break;
|
||||
default:
|
||||
clear_descr(); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Relapp functions
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
int TCaus_app::read(TMask& m)
|
||||
{
|
||||
int err = TRelation_application::read(m);
|
||||
if (err == NOERR)
|
||||
{
|
||||
TRectype r(LF_RCAUSALI);
|
||||
r.put(RCA_CODCAUS, m.get(F_COD_CAUS));
|
||||
_rcaus_rec->read(r);
|
||||
load_rcaus(m);
|
||||
|
||||
_tipo_des = no_descr; //assegnazione necessaria per forzare il ricaricamento delle descrizioni
|
||||
|
||||
fill_sheet(m);
|
||||
|
||||
const TString& tpd = m.get(F_TIPO_DOC);
|
||||
calc_filter(tpd);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
void TCaus_app::add_riga(int numrig, char sz, const TBill& tc, const TString& d, const TString& da)
|
||||
{
|
||||
TToken_string& riga = ss().row(numrig);
|
||||
riga = riga.get(0); // Lascia invariata la descrizione ...
|
||||
if (riga.empty()) riga = " "; // ... se esiste gia'
|
||||
riga.add(sz);
|
||||
riga.add(tc.string(0x3));
|
||||
riga.add(d);
|
||||
riga.add(da);
|
||||
}
|
||||
|
||||
void TCaus_app::load_rcaus(TMask& m)
|
||||
{
|
||||
const TString4 cod(_rel->curr().get(RCA_CODCAUS));
|
||||
TString d, da(50);
|
||||
|
||||
ss().reset_sheet();
|
||||
|
||||
const int last = _rcaus_rec->last_row();
|
||||
for (int i = 1; i <= last; i++)
|
||||
{
|
||||
const TRectype & r = _rcaus_rec->row(i, true);
|
||||
const char sz = r.get_char(RCA_SEZIONE);
|
||||
const char cf = r.get_char(RCA_TIPOCF);
|
||||
const int g = r.get_int(RCA_GRUPPO);
|
||||
const int c = r.get_int(RCA_CONTO);
|
||||
const long s = r.get_long(RCA_SOTTOCONTO);
|
||||
d = r.get(RCA_CODDESC);
|
||||
da = cache().get("%DPN", d, "S0");
|
||||
const TBill tc(g,c,s,cf);
|
||||
add_riga(i-1, sz, tc, d, da);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TCaus_app::fill_sheet(TMask& m)
|
||||
{
|
||||
const TString& codreg = m.get(F_COD_REG);
|
||||
const TString& tpd = m.get(F_TIPO_DOC);
|
||||
const int tpm = m.get_int(F_TIPO_MOV);
|
||||
const int m770 = m.get_int(F_M_770);
|
||||
int tpr = m.get_int(F_TIPO_REG);
|
||||
|
||||
if (!m.is_running() && codreg.full())
|
||||
{
|
||||
TString8 chiave; chiave << anno_iva() << codreg;
|
||||
const TRectype& reg = cache().get("REG", chiave);
|
||||
tpr = reg.get_int("I0");
|
||||
}
|
||||
|
||||
// carico le descrizioni fisse nell'array Righe_rcaus
|
||||
compila_array(tpd,tpm,tpr,m770);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int TCaus_app::write(const TMask& m)
|
||||
{
|
||||
int err = TRelation_application::write(m);
|
||||
if (err == NOERR)
|
||||
err = re_write(m, false);
|
||||
return err;
|
||||
}
|
||||
|
||||
int TCaus_app::rewrite(const TMask& m)
|
||||
{
|
||||
int err = re_write(m, true);
|
||||
int err1 = TRelation_application::rewrite(m);
|
||||
return err == NOERR ? err1 : err;
|
||||
}
|
||||
|
||||
int TCaus_app::re_write(const TMask& m, bool re)
|
||||
{
|
||||
_rcaus_rec->destroy_rows();
|
||||
if (m.insert_mode())
|
||||
_rcaus_rec->renum_key(RCA_CODCAUS, m.get(F_COD_CAUS));
|
||||
|
||||
for (int i = 0; i < ss().items(); i++)
|
||||
{
|
||||
TToken_string &riga = ss().row(i);
|
||||
const int g = riga.get_int(3);
|
||||
const char sezione = riga.get_char(1);
|
||||
if (g > 0 || sezione > ' ')
|
||||
{
|
||||
TRectype & r = _rcaus_rec->row(i+1, true);
|
||||
const char sezione = riga.get_char(1);
|
||||
const char tipo_cf = riga.get_char();
|
||||
const int c = riga.get_int(4);
|
||||
const long s = riga.get_long();
|
||||
riga.get(); // Salta descrizione conto
|
||||
const TString80 coddesc(riga.get());
|
||||
r.put (RCA_CODDESC, coddesc);
|
||||
r.put (RCA_SEZIONE, sezione);
|
||||
r.put (RCA_TIPOCF, tipo_cf);
|
||||
r.put (RCA_GRUPPO, g);
|
||||
r.put (RCA_CONTO, c);
|
||||
r.put (RCA_SOTTOCONTO, s);
|
||||
}
|
||||
}
|
||||
return _rcaus_rec->write(re);
|
||||
}
|
||||
|
||||
|
||||
bool TCaus_app::remove()
|
||||
{
|
||||
return TRelation_application::remove() && _rcaus_rec->remove() == NOERR;
|
||||
}
|
||||
|
||||
void TCaus_app::ini2sheet(TConfig& ini, TSheet_field& sheet)
|
||||
{
|
||||
TMask& m = sheet.mask();
|
||||
fill_sheet(m);
|
||||
const TString& tpd = m.get(F_TIPO_DOC);
|
||||
calc_filter(tpd);
|
||||
|
||||
TString16 defpar, d;
|
||||
TString da;
|
||||
for (int i = 0; i < ss().items(); i++)
|
||||
{
|
||||
defpar.format("%d,%d", LF_RCAUSALI, i+1);
|
||||
if (ini.set_paragraph(defpar))
|
||||
{
|
||||
const char sz = ini.get(RCA_SEZIONE)[0];
|
||||
const char cf = ini.get(RCA_TIPOCF)[0];
|
||||
const int g = ini.get_int(RCA_GRUPPO);
|
||||
const int c = ini.get_int(RCA_CONTO);
|
||||
const long s = ini.get_long(RCA_SOTTOCONTO);
|
||||
d = ini.get(RCA_CODDESC);
|
||||
da = cache().get("%DPN", d, "S0");
|
||||
TBill tc(g,c,s,cf);
|
||||
add_riga(i, sz, tc, d, da);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TCaus_app::sheet2ini(TSheet_field& sheet,TConfig& ini)
|
||||
{
|
||||
TString16 defpar;
|
||||
for (int i = 0; i < ss().items(); i++)
|
||||
{
|
||||
defpar.format("%d,%d", LF_RCAUSALI, i+1);
|
||||
ini.set_paragraph(defpar);
|
||||
|
||||
TToken_string &riga = ss().row(i);
|
||||
const int g = riga.get_int(3);
|
||||
if (g > 0)
|
||||
{
|
||||
const TString4 sezione = riga.get_char(1);
|
||||
const TString4 tipo_cf = riga.get_char();
|
||||
const int c = riga.get_int(4); // Salta al conto
|
||||
const long s = riga.get_long();
|
||||
const char* coddesc = riga.get(7); // Salta alla descrizione conto
|
||||
ini.set(RCA_CODDESC, coddesc);
|
||||
ini.set(RCA_SEZIONE, sezione);
|
||||
ini.set(RCA_TIPOCF, tipo_cf);
|
||||
ini.set(RCA_GRUPPO, g);
|
||||
ini.set(RCA_CONTO, c);
|
||||
ini.set(RCA_SOTTOCONTO, s);
|
||||
}
|
||||
else
|
||||
ini.remove_all();
|
||||
}
|
||||
}
|
||||
|
||||
void TCaus_app::init_mask(TMask& m)
|
||||
{
|
||||
m.set(F_ANNOES, anno_iva());
|
||||
carica_righe_libere();
|
||||
}
|
||||
|
||||
void TCaus_app::init_query_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
}
|
||||
|
||||
void TCaus_app::on_config_change()
|
||||
{
|
||||
TConfig conf(CONFIG_DITTA, "cg");
|
||||
|
||||
_saldaconto = conf.get_bool("GesSal");
|
||||
_valuta = conf.get_bool("GesVal");
|
||||
_anno_iva = TDate(TODAY).year();
|
||||
_msk->show(F_TIPO_MOV_1, saldaconto());
|
||||
_msk->show(F_TIPO_MOV_2, saldaconto());
|
||||
|
||||
// _msk->enable(F_COD_CAUS_IM, !saldaconto());
|
||||
_msk->enable(F_MOV_VALU, valuta());
|
||||
|
||||
if (saldaconto())
|
||||
{
|
||||
_msk->set_handler(F_TIPO_MOV_1, tipomov_hndl);
|
||||
_msk->set_handler(F_TIPO_MOV_2, tipomov_hndl);
|
||||
}
|
||||
else
|
||||
{
|
||||
_msk->set_handler(F_TIPO_MOV_1, NULL);
|
||||
_msk->set_handler(F_TIPO_MOV_2, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TCaus_app::user_create()
|
||||
{
|
||||
open_files(LF_CAUSALI, LF_RCAUSALI, LF_TABCOM, LF_TAB, 0);
|
||||
|
||||
_rel = new TRelation (LF_CAUSALI);
|
||||
_rcaus_rec = new TRecord_array(LF_RCAUSALI, RCA_NRIGA);
|
||||
_msk = new TMask("cg0500a");
|
||||
_sheet = &_msk->sfield(F_SHEET_GCS);
|
||||
|
||||
_msk->set_handler(F_TIPO_DOC, tipodoc_hndl);
|
||||
_msk->set_handler(F_COD_REG, cod_reg_hndl);
|
||||
_msk->set_handler(F_M_770, m770_hndl);
|
||||
|
||||
TSheet_field& cs = ss();
|
||||
cs.set_notify(ss_notify);
|
||||
cs.sheet_mask().set_handler(SS_SEZIONE, sezione_hndl);
|
||||
cs.sheet_mask().set_handler(SS_CONTO, conto_hndl);
|
||||
cs.sheet_mask().set_handler(SS_SOTTOCONTO, sottoconto_hndl);
|
||||
cs.sheet_mask().set_handler(SS_SOTTOCONTO+100, sottoconto_hndl);
|
||||
cs.sheet_mask().set_handler(SS_SOTTOCONTO+200, sottoconto_hndl);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TCaus_app::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rcaus_rec;
|
||||
delete _rel;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int cg0500(int argc, char* argv[])
|
||||
{
|
||||
TCaus_app a;
|
||||
a.run(argc, argv, TR("Tabella causali"));
|
||||
return 0;
|
||||
}
|
51
src/cg01/cg0500.h
Normal file
51
src/cg01/cg0500.h
Normal file
@ -0,0 +1,51 @@
|
||||
|
||||
// cg0500.h
|
||||
#define F_COD_CAUS 200
|
||||
#define F_DESCR 201
|
||||
#define F_TIPO_DOC 202
|
||||
#define F_COD_REG 203
|
||||
#define F_DATA_DOC 204
|
||||
#define F_NUM_DOC 205
|
||||
#define F_MOV_SEZ 206
|
||||
#define F_TIPO_MOV_1 207
|
||||
#define F_TIPO_MOV_2 208
|
||||
#define F_AUTO_FAT 209
|
||||
#define F_MOV_VALU 210
|
||||
#define F_COD_CAUS_IM 211
|
||||
#define F_FAT_RITARDO 212
|
||||
#define F_OP_INTRACOM 213
|
||||
#define F_ALLEGAT 214
|
||||
#define F_VAL_INTRACOM 215
|
||||
#define F_COLL_CESP 216
|
||||
#define F_M_770 217
|
||||
#define F_COLL_PRIMANOTA 218
|
||||
#define F_SHEET_GCS 219
|
||||
#define F_TIPO_REG 220
|
||||
#define F_ANNOES 221
|
||||
#define F_TIPO_MOV 222
|
||||
#define F_OP_FINE_ANNO 223
|
||||
#define F_VALINTRA 224
|
||||
#define F_CORRISP 225
|
||||
#define F_COD_CAUS2 226
|
||||
#define F_DESCR2 227
|
||||
#define F_DES_DOC 228
|
||||
#define F_DES_REG 229
|
||||
#define F_MOVIND 230
|
||||
#define F_SOLAIVA 231
|
||||
#define F_PROVV 232
|
||||
#define F_CODCAUREG 233
|
||||
#define F_REGSPIVA 234
|
||||
#define F_MOVCGIND 235
|
||||
#define F_RIL_FT_EM_RI 236
|
||||
#define F_DATAREG_PREC 237
|
||||
#define F_TIPO_SDI 238
|
||||
#define F_ESCULDIARC 239
|
||||
|
||||
#define SS_TIPO 101
|
||||
#define SS_SEZIONE 102
|
||||
#define SS_TIPOCF 103
|
||||
#define SS_GRUPPO 104
|
||||
#define SS_CONTO 105
|
||||
#define SS_SOTTOCONTO 106
|
||||
#define SS_DESCAGG 108
|
||||
#define SS_DESCRIPTION 109
|
452
src/cg01/cg0500a.uml
Normal file
452
src/cg01/cg0500a.uml
Normal file
@ -0,0 +1,452 @@
|
||||
#include "cg0500.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <relapbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Righe" 0 0 0 2
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
STRING F_COD_CAUS 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice "
|
||||
FIELD CODCAUS
|
||||
KEY 1
|
||||
FLAGS "UZG"
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_COD_CAUS
|
||||
DISPLAY "Cod." CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Documento" TIPODOC
|
||||
DISPLAY "Registro" REG
|
||||
DISPLAY "Tipo movimento" TIPOMOV
|
||||
DISPLAY "Colleg." CODCAUSIM
|
||||
DISPLAY "770" M770
|
||||
DISPLAY "Cespiti" COLLCESP
|
||||
OUTPUT F_COD_CAUS CODCAUS
|
||||
OUTPUT F_DESCR DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_COD_CAUS2
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 16 1 "Descriz."
|
||||
FIELD DESCR
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DESCR
|
||||
DISPLAY "Descrizione @50" DESCR
|
||||
DISPLAY "Cod." CODCAUS
|
||||
DISPLAY "Documento" TIPODOC
|
||||
DISPLAY "Registro" REG
|
||||
DISPLAY "Movimento" TIPOMOV
|
||||
DISPLAY "Colleg." CODCAUSIM
|
||||
DISPLAY "770" M770
|
||||
DISPLAY "Cespiti" COLLCESP
|
||||
COPY OUTPUT F_COD_CAUS
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 2
|
||||
WARNING "Descrizione assente"
|
||||
MESSAGE COPY,F_DESCR2
|
||||
FLAGS "G"
|
||||
END
|
||||
|
||||
STRING F_TIPO_DOC 2
|
||||
BEGIN
|
||||
PROMPT 2 3 "Tipo documento "
|
||||
FIELD TIPODOC
|
||||
USE %TPD
|
||||
INPUT CODTAB F_TIPO_DOC
|
||||
DISPLAY "Tipo " CODTAB
|
||||
DISPLAY "Descrizione @50" S0
|
||||
OUTPUT F_TIPO_DOC CODTAB
|
||||
OUTPUT F_DES_DOC S0
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "U"
|
||||
ADD NONE
|
||||
MESSAGE EMPTY CLEAR,F_SOLAIVA|ENABLE,F_PROVV|ENABLE,9@
|
||||
MESSAGE ENABLE,F_SOLAIVA|CLEAR,F_PROVV|CLEAR,9@
|
||||
END
|
||||
|
||||
STRING F_DES_DOC 50
|
||||
BEGIN
|
||||
PROMPT 24 3 ""
|
||||
USE %TPD KEY 2
|
||||
INPUT S0 F_DES_DOC
|
||||
DISPLAY "Descrizione @50" S0
|
||||
DISPLAY "Tipo " CODTAB
|
||||
COPY OUTPUT F_TIPO_DOC
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
ADD NONE
|
||||
END
|
||||
|
||||
STRING F_COD_REG 3
|
||||
BEGIN
|
||||
PROMPT 2 4 "Registro "
|
||||
FIELD REG
|
||||
USE REG
|
||||
INPUT CODTAB[1,4] F_ANNOES
|
||||
INPUT CODTAB[5,7] F_COD_REG
|
||||
DISPLAY "Anno" CODTAB[1,4]
|
||||
DISPLAY "Registro" CODTAB[5,7]
|
||||
DISPLAY "Tipo" I0
|
||||
DISPLAY "Corrispettivi" B0
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_COD_REG CODTAB[5,7]
|
||||
OUTPUT F_TIPO_REG I0
|
||||
OUTPUT F_CORRISP B0
|
||||
OUTPUT F_DES_REG S0
|
||||
WARNING "Registro assente o non compatibile col tipo documento"
|
||||
CHECKTYPE SEARCH
|
||||
FLAGS "UZ"
|
||||
END
|
||||
|
||||
STRING F_DES_REG 50
|
||||
BEGIN
|
||||
PROMPT 24 4 ""
|
||||
USE REG KEY 2
|
||||
INPUT S0 F_DES_REG
|
||||
DISPLAY "Descrizione @50" S0
|
||||
DISPLAY "Anno" CODTAB[1,4]
|
||||
DISPLAY "Codice registro " CODTAB[5,7]
|
||||
DISPLAY "Tipo" I0
|
||||
DISPLAY "Corrispettivi" B0
|
||||
COPY OUTPUT F_COD_REG
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Anno liquidaz. "
|
||||
FLAGS "HA"
|
||||
END
|
||||
|
||||
NUMBER F_TIPO_REG 1
|
||||
BEGIN
|
||||
PROMPT 25 5 "Tipo "
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
// Questo rimane quasi sempre nascosto
|
||||
STRING F_TIPO_MOV 1
|
||||
BEGIN
|
||||
PROMPT 2 5 ""
|
||||
FIELD TIPOMOV
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
// Viene mostrato questo se TPD non vuoto e diverso da IN AN PG
|
||||
LISTBOX F_TIPO_MOV_1 1 20
|
||||
BEGIN
|
||||
PROMPT 2 5 "Tipo movimento "
|
||||
FIELD TIPOMOV
|
||||
ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV
|
||||
ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV
|
||||
ITEM "2|Nota credito" MESSAGE COPY,F_TIPO_MOV
|
||||
// GROUP 2
|
||||
END
|
||||
|
||||
// Viene mostrato questo se TPD vuoto o uguale a IN AN PG
|
||||
LISTBOX F_TIPO_MOV_2 1 20
|
||||
BEGIN
|
||||
PROMPT 2 5 "Tipo movimento "
|
||||
FIELD TIPOMOV
|
||||
ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV|ENABLE,F_PROVV
|
||||
ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV|CLEAR,F_PROVV
|
||||
ITEM "3|Incasso/pagamento " MESSAGE COPY,F_TIPO_MOV|CLEAR,F_PROVV
|
||||
ITEM "5|Insoluto" MESSAGE COPY,F_TIPO_MOV|CLEAR,F_PROVV
|
||||
ITEM "6|Pagamento insoluto" MESSAGE COPY,F_TIPO_MOV|CLEAR,F_PROVV
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
BOOLEAN F_CORRISP
|
||||
BEGIN
|
||||
PROMPT 33 5 ""
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
LIST F_TIPO_SDI 40
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo documento SDI "
|
||||
FIELD TIPODOCSDI
|
||||
ITEM "|"
|
||||
ITEM "TD16|TD16 Integraz. fatt. rev.ch. interno"
|
||||
ITEM "TD17|TD17 Integ./autof. acq. servizi estero"
|
||||
ITEM "TD18|TD18 Integ. acq. beni intracomunitari"
|
||||
ITEM "TD19|TD19 Integ./autof. acq. beni ex art. 17"
|
||||
ITEM "TD20|TD20 Autofattura"
|
||||
ITEM "TD28|TD28 Fattura cartacea S.Marino"
|
||||
END
|
||||
|
||||
BOOLEAN F_SOLAIVA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Movimento di sola IVA"
|
||||
FIELD SOLOIVA
|
||||
END
|
||||
|
||||
BOOLEAN F_ESCULDIARC
|
||||
BEGIN
|
||||
PROMPT 30 7 "Escludi causale dall'archiviazione sostitutiva"
|
||||
FILED ESCLUDIARC
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET_GCS
|
||||
BEGIN
|
||||
PROMPT 0 8 "Righe"
|
||||
ITEM "Tipo conto@21F"
|
||||
ITEM "D/A@3"
|
||||
ITEM "C/F@3"
|
||||
ITEM "Gr."
|
||||
ITEM "Co."
|
||||
ITEM "Sottoc."
|
||||
ITEM "Descrizione Conto@50"
|
||||
ITEM "Desc. agg."
|
||||
ITEM "Descrizione Aggiuntiva@50"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Parametri" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
STRING F_COD_CAUS2 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESCR2 50
|
||||
BEGIN
|
||||
PROMPT 16 1 "Descriz."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "@BCampi obbligatori in immissione documenti"
|
||||
END
|
||||
|
||||
BOOLEAN F_DATA_DOC
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data documento"
|
||||
FIELD DATADOC
|
||||
END
|
||||
|
||||
BOOLEAN F_NUM_DOC
|
||||
BEGIN
|
||||
PROMPT 34 4 "Numero documento"
|
||||
FIELD NUMDOC
|
||||
END
|
||||
|
||||
BOOLEAN F_AUTO_FAT
|
||||
BEGIN
|
||||
PROMPT 2 6 "Autofattura art.34"
|
||||
FIELD AUTOFATT
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_ALLEGAT
|
||||
BEGIN
|
||||
PROMPT 34 6 "Doc. non va in allegati fine anno"
|
||||
FIELD ALLEG
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_FAT_RITARDO
|
||||
BEGIN
|
||||
PROMPT 2 8 "Fattura in ritardo"
|
||||
FIELD RITFATT
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_COD_CAUS_IM 3
|
||||
BEGIN
|
||||
PROMPT 34 9 "Codice causale collegata "
|
||||
FLAGS "UZ"
|
||||
FIELD CODCAUSIM
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_COD_CAUS_IM
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Documento" TIPODOC
|
||||
OUTPUT F_COD_CAUS_IM CODCAUS
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_OP_INTRACOM
|
||||
BEGIN
|
||||
PROMPT 2 10 "Operazione intracomunitaria"
|
||||
FIELD INTRACOM
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_VALINTRA
|
||||
BEGIN
|
||||
PROMPT 34 10 "Gestione valuta per operazioni intrac."
|
||||
FIELD VALINTRA
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_MOV_VALU
|
||||
BEGIN
|
||||
PROMPT 2 11 "Movimento in valuta"
|
||||
FIELD MOVVAL
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_MOV_SEZ
|
||||
BEGIN
|
||||
PROMPT 34 11 "Movimento solo sezionale"
|
||||
FIELD MOVSEZ
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
BOOLEAN F_RIL_FT_EM_RI
|
||||
BEGIN
|
||||
PROMPT 2 12 "Rilevazione fatt.da ric./em."
|
||||
FIELD RILFTEMRI
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
BOOLEAN F_DATAREG_PREC
|
||||
BEGIN
|
||||
PROMPT 34 12 "Regis.ril. fatt.da ric./em.a fine esercizio"
|
||||
FIELD DATAREGPR
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
LIST F_PROVV 1 26
|
||||
BEGIN
|
||||
PROMPT 2 13 "Movimento provvisorio "
|
||||
FIELD PROVV
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
ITEM "C|Cespiti"
|
||||
END
|
||||
|
||||
LIST F_OP_FINE_ANNO 1 11
|
||||
BEGIN
|
||||
PROMPT 2 14 "Operazioni di fine anno "
|
||||
ITEM " | "
|
||||
ITEM "C|Chiusura"
|
||||
ITEM "A|Apertura"
|
||||
FIELD MOVAP
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 1 15 "@bCollegamenti"
|
||||
END
|
||||
|
||||
LISTBOX F_M_770 1 48
|
||||
BEGIN
|
||||
PROMPT 2 16 "Modello 770 "
|
||||
FIELD M770
|
||||
ITEM " |Nessuno"
|
||||
ITEM "1|Ricevuta e/o pagamento fattura percipiente"
|
||||
ITEM "2|Versamento ritenute percipiente"
|
||||
ITEM "3|Versamento ritenute dipendente"
|
||||
ITEM "4|Versamento contributi dipendente"
|
||||
ITEM "5|Compensi non soggetti"
|
||||
ITEM "6|Ritenute per prestazioni occasionali"
|
||||
MODULE 77
|
||||
END
|
||||
|
||||
LIST F_COLL_CESP 1 40
|
||||
BEGIN
|
||||
PROMPT 2 17 "Cespiti "
|
||||
FIELD COLLCESP
|
||||
ITEM " |Nessuno"
|
||||
ITEM "A|Acquisto cespite"
|
||||
ITEM "B|Rettifica acquisto"
|
||||
ITEM "C|Sostenimento costi"
|
||||
ITEM "E|Eliminazione dal processo produttivo"
|
||||
ITEM "M|Rivalutazione monetaria"
|
||||
ITEM "P|Reinvestimento plusvalenze"
|
||||
ITEM "R|Rivalutazione economica"
|
||||
ITEM "T|Trasferimento"
|
||||
ITEM "V|Vendita cespite"
|
||||
ITEM "Z|Rettifica vendita"
|
||||
MODULE ce
|
||||
END
|
||||
|
||||
BOOLEAN F_MOVIND
|
||||
BEGIN
|
||||
PROMPT 2 18 "Contabilità analitica"
|
||||
FIELD MOVIND
|
||||
MODULE ca,cm
|
||||
MESSAGE FALSE CLEAR,F_MOVCGIND
|
||||
MESSAGE TRUE ENABLE,F_MOVCGIND
|
||||
END
|
||||
|
||||
BOOLEAN F_MOVCGIND
|
||||
BEGIN
|
||||
PROMPT 34 18 "Contabilità industriale"
|
||||
FIELD MOVCGIND
|
||||
MODULE CI
|
||||
END
|
||||
|
||||
NUMBER F_REGSPIVA 2
|
||||
BEGIN
|
||||
PROMPT 2 19 "Regimi speciali IVA "
|
||||
INPUT F_REGSPIVA
|
||||
SHEET "Codice|Descrizione@75"
|
||||
ITEM "|Nessuno"
|
||||
ITEM "1|Acquisti beni dallo Stato del Vaticano e dalla Repubblica di San Marino"
|
||||
ITEM "2|Estrazione beni da depositi Iva"
|
||||
ITEM "3|Acquisti beni e servizi da soggetti non residenti"
|
||||
ITEM "4|Operazioni di cui all'art.74,c.1,lett.e)"
|
||||
ITEM "5|Provvigioni corrisposte dalle agenzie di viaggio ai loro intermediari"
|
||||
ITEM "6|Acquisti di rottami e mat.di di recupero art. 74, commi 7 e 8"
|
||||
ITEM "7|Acquisti di oro industriale e argento puro (art. 17, comma 5)"
|
||||
ITEM "8|Acquisti di oro da investimento imp.per opzione (art. 17, comma 5)"
|
||||
ITEM "9|Acquisti intrac. di CPU,PC, tablet,cellulari,console,microproc."
|
||||
item "10|Importazioni rottami e altri mat.di recupero imposta non è versata"
|
||||
ITEM "12|Acquisti di tartufi (art.1,c.109,legge 311/2004)"
|
||||
ITEM "13|Subappalti in edilizia (Reverse charge)"
|
||||
ITEM "14|Acquisti di fabbricati (art. 17, comma 6, lett. a-bis)"
|
||||
ITEM "15|Acquisti di telefoni cellulari (art. 17, comma 6, lett. b)"
|
||||
ITEM "16|Acquisti di prodotti elettronici (art. 17, comma 6, lett. c)"
|
||||
ITEM "17|Acquisti di servizi del comp.edile e sett.connessi art. 17, comma 6, lett. a-ter "
|
||||
ITEM "18|Acquisti di beni e servizi del sett.energetico art. 17, c.6 d-bis,ter,d-quater"
|
||||
ITEM "19|Acquisti delle P.A., titolari di partita IVA art. 17-ter"
|
||||
ITEM "50|Importazione di oro o argento (Reverse charge)"
|
||||
ITEM "51|Rottami (Reverse charge)"
|
||||
ITEM "52|Operazioni effettuate nei confronti di condominii"
|
||||
OUTPUT F_REGSPIVA
|
||||
FIELD REGSPIVA
|
||||
END
|
||||
|
||||
STRING F_CODCAUREG 3
|
||||
BEGIN
|
||||
PROMPT 34 19 "Codice causale regolarizzazione IVA "
|
||||
FLAGS "UZ"
|
||||
FIELD CODCAUREG
|
||||
USE LF_CAUSALI SELECT (SOLOIVA="X")&&(CODCAUS!=#F_COD_CAUS)&&((REGSPIVA=="")||(REGSPIVA==#F_REGSPIVA))
|
||||
INPUT CODCAUS F_CODCAUREG
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Registro" REG
|
||||
DISPLAY "Documento" TIPODOC
|
||||
OUTPUT F_CODCAUREG CODCAUS
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
#include "cg0500b.uml"
|
261
src/cg01/cg0500b.uml
Normal file
261
src/cg01/cg0500b.uml
Normal file
@ -0,0 +1,261 @@
|
||||
#include "cg0500.h"
|
||||
|
||||
PAGE "" -1 -1 68 11
|
||||
|
||||
STRING SS_TIPO 21
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipo "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LISTBOX SS_TIPOCF 11
|
||||
BEGIN
|
||||
PROMPT 33 1 "C/F "
|
||||
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307
|
||||
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307
|
||||
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207
|
||||
FLAGS "DGU"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER SS_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Gruppo "
|
||||
HELP "Codice del gruppo"
|
||||
FIELD LF_RCAUSALI->GRUPPO
|
||||
USE LF_PCON KEY 1 SELECT (CONTO="")
|
||||
INPUT GRUPPO SS_GRUPPO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Tipo C/F" TMCF
|
||||
CHECKTYPE NORMAL
|
||||
OUTPUT SS_GRUPPO GRUPPO
|
||||
OUTPUT 107 DESCR
|
||||
WARNING "Gruppo assente"
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
ADD RUN CG0 -0
|
||||
END
|
||||
|
||||
NUMBER SS_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 15 3 "Conto "
|
||||
HELP "Codice del conto"
|
||||
FIELD LF_RCAUSALI->CONTO
|
||||
USE LF_PCON KEY 1 SELECT SOTTOCONTO=""
|
||||
INPUT GRUPPO SS_GRUPPO
|
||||
INPUT CONTO SS_CONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Tipo C/F" TMCF
|
||||
CHECKTYPE NORMAL
|
||||
OUTPUT SS_TIPOCF TMCF
|
||||
OUTPUT SS_CONTO CONTO
|
||||
OUTPUT SS_GRUPPO GRUPPO
|
||||
OUTPUT 107 DESCR
|
||||
OUTPUT 207 DESCR
|
||||
OUTPUT 307 DESCR
|
||||
MESSAGE DIRTY,106|DIRTY,206|DIRTY,306
|
||||
WARNING "Conto assente"
|
||||
ADD RUN CG0 -0
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
// Sottoconto NORMALE
|
||||
NUMBER SS_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 29 3 "Sottoconto "
|
||||
HELP "Codice del sottoconto"
|
||||
FIELD LF_RCAUSALI->SOTTOCONTO
|
||||
USE LF_PCON
|
||||
INPUT GRUPPO SS_GRUPPO
|
||||
INPUT CONTO SS_CONTO
|
||||
INPUT SOTTOCONTO SS_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "C/R" TIPOSPRIC
|
||||
OUTPUT SS_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT 206 SOTTOCONTO
|
||||
OUTPUT 306 SOTTOCONTO
|
||||
OUTPUT SS_GRUPPO GRUPPO
|
||||
OUTPUT SS_CONTO CONTO
|
||||
OUTPUT 107 DESCR
|
||||
ADD RUN CG0 -0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Sottoconto assente"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
// Sottoconto CLIENTI
|
||||
NUMBER 206 6
|
||||
BEGIN
|
||||
PROMPT 29 3 "Cliente "
|
||||
HELP "Codice sottoconto del cliente"
|
||||
FIELD LF_RCAUSALI->SOTTOCONTO
|
||||
USE LF_CLIFO KEY 1
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF 206
|
||||
DISPLAY "Sottoconto" CODCF
|
||||
DISPLAY "Ragione sociale cliente@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT 206 CODCF
|
||||
OUTPUT 106 CODCF
|
||||
OUTPUT 306 CODCF
|
||||
OUTPUT 207 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente assente"
|
||||
ADD RUN CG0 -1
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
// Sottoconto FORNITORI
|
||||
NUMBER 306 6
|
||||
BEGIN
|
||||
PROMPT 29 3 "Fornitore "
|
||||
HELP "Codice sottoconto del cliente"
|
||||
FIELD LF_RCAUSALI->SOTTOCONTO
|
||||
USE LF_CLIFO KEY 1
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF 306
|
||||
DISPLAY "Sottoconto" CODCF
|
||||
DISPLAY "Ragione sociale fornitore@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT 306 CODCF
|
||||
OUTPUT 106 CODCF
|
||||
OUTPUT 206 CODCF
|
||||
OUTPUT 307 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore assente"
|
||||
ADD RUN CG0 -1
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LISTBOX SS_SEZIONE 5
|
||||
BEGIN
|
||||
PROMPT 51 3 "Sezione "
|
||||
HELP "Indicare la sezione del conto"
|
||||
ITEM " | "
|
||||
ITEM "D|Dare"
|
||||
ITEM "A|Avere"
|
||||
FIELD LF_RCAUSALI->SEZIONE
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
// Descrizione normale
|
||||
STRING 107 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Descrizione "
|
||||
HELP "Indicare la descrizione della riga"
|
||||
FIELD LF_RCAUSALI->DESC
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR 107
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "C/R" TIPOSPRIC
|
||||
OUTPUT SS_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT SS_CONTO CONTO
|
||||
OUTPUT SS_GRUPPO GRUPPO
|
||||
OUTPUT 107 DESCR
|
||||
ADD RUN CG0 -0
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
// Descrizione CLIENTE
|
||||
STRING 207 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Rag. Soc. "
|
||||
HELP "Ragione sociale del cliente"
|
||||
FIELD LF_RCAUSALI->DESC
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC 207
|
||||
DISPLAY "Tipo C/F" TIPOCF
|
||||
DISPLAY "Ragione sociale Cliente@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" CODCF
|
||||
OUTPUT 206 CODCF
|
||||
OUTPUT 207 RAGSOC
|
||||
GROUP 1
|
||||
ADD RUN CG0 -1 C
|
||||
END
|
||||
|
||||
// Descrizione FORNITORE
|
||||
STRING 307 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Rag. Soc. "
|
||||
HELP "Ragione sociale del fornitore"
|
||||
FIELD LF_RCAUSALI->DESC
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC 307
|
||||
DISPLAY "Tipo C/F" TIPOCF
|
||||
DISPLAY "Ragione sociale Fornitore@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" CODCF
|
||||
OUTPUT 306 CODCF
|
||||
OUTPUT 307 RAGSOC
|
||||
GROUP 1
|
||||
ADD RUN CG0 -1 F
|
||||
END
|
||||
|
||||
STRING SS_DESCAGG 5
|
||||
BEGIN
|
||||
PROMPT 1 7 "Descrizione aggiuntiva"
|
||||
HELP "Codice della descrizione aggiuntiva"
|
||||
FIELD LF_RCAUSALI->CODDESC
|
||||
FLAGS "UZ"
|
||||
USE %DPN
|
||||
INPUT CODTAB SS_DESCAGG
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione @50" S0
|
||||
OUTPUT SS_DESCAGG CODTAB
|
||||
OUTPUT SS_DESCRIPTION S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice descrizione aggiuntiva errato"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING SS_DESCRIPTION 50
|
||||
BEGIN
|
||||
PROMPT 1 8 ""
|
||||
USE %DPN KEY 2
|
||||
INPUT S0 SS_DESCRIPTION
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT SS_DESCAGG
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Descrizione aggiuntiva errata"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_USER 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "A~zzera"
|
||||
MESSAGE RESET,1@
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
BIN
src/cg01/cg06.gif
Normal file
BIN
src/cg01/cg06.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
404
src/cg01/cg0600.cpp
Normal file
404
src/cg01/cg0600.cpp
Normal file
@ -0,0 +1,404 @@
|
||||
// --------------------------------------------------------------
|
||||
// fv: cg0 -5 <tab>: gestione maschere contabilita'
|
||||
// --------------------------------------------------------------
|
||||
#include <saldi.h>
|
||||
#include <sheet.h>
|
||||
#include <tabapp.h>
|
||||
|
||||
#include "cgtbbnp.h"
|
||||
#include "cgtbesc.h"
|
||||
#include "cgtbnot.h"
|
||||
#include "cgtbvet.h"
|
||||
|
||||
#include "cglib01.h"
|
||||
|
||||
#define TAB_NOTECLI "%NOT"
|
||||
|
||||
class CGTTable_application : public TTable_application
|
||||
{
|
||||
// ------------- specifiche tabella esercizi ----
|
||||
static bool dataini_handler(TMask_field& f, KEY k);
|
||||
static bool checkbut_handler(TMask_field& f, KEY k);
|
||||
void check_sheet();
|
||||
bool check_esercizio(TString& cod, TDate s1, TDate f1);
|
||||
static bool desnot_handler(TMask_field& f, KEY k);
|
||||
void fragment_string();
|
||||
void glue_string();
|
||||
// --------------------------------------------
|
||||
|
||||
protected:
|
||||
virtual void init_query_insert_mode(TMask& m) ;
|
||||
virtual void init_insert_mode(TMask& m) ;
|
||||
virtual void init_modify_mode(TMask& m) ;
|
||||
virtual void init_query_mode (TMask&);
|
||||
|
||||
virtual bool protected_record(TRectype & rec);
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual int read(TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
|
||||
static bool iban_handler(TMask_field& f, KEY k);
|
||||
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
|
||||
virtual bool check_autorization() const
|
||||
{return false;}
|
||||
|
||||
static CGTTable_application& app() { return (CGTTable_application&)main_app(); }
|
||||
|
||||
CGTTable_application() : TTable_application() {}
|
||||
virtual ~CGTTable_application() {}
|
||||
};
|
||||
|
||||
bool CGTTable_application::protected_record(TRectype &rec)
|
||||
{
|
||||
if (get_tabname() == "ESC")
|
||||
{
|
||||
// cerca saldo con questo esercizio
|
||||
const TString16 cod(rec.get("CODTAB"));
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
saldi.put(SLD_ANNOES, cod);
|
||||
// se ce n'e' uno non si puo' cancellare
|
||||
if (saldi.read(_isgteq) == NOERR && cod == rec.get("CODTAB"))
|
||||
return TRUE;
|
||||
}
|
||||
return TTable_application::protected_record(rec);
|
||||
}
|
||||
|
||||
|
||||
void CGTTable_application::init_query_insert_mode(TMask& m)
|
||||
{
|
||||
if (get_tabname() == "BNP")
|
||||
{
|
||||
m.show(F_CODICEABI);
|
||||
m.show(F_CODICECAB);
|
||||
m.field(F_CODICEABI).check_type(CHECK_REQUIRED);
|
||||
m.field(F_CODICECAB).check_type(CHECK_REQUIRED);
|
||||
m.hide(F_ABI);
|
||||
m.hide(F_CAB);
|
||||
m.field(F_ABI).check_type(CHECK_NONE);
|
||||
m.field(F_CAB).check_type(CHECK_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
void CGTTable_application::init_insert_mode(TMask& m)
|
||||
{
|
||||
if (get_tabname() == "BNP")
|
||||
{
|
||||
m.show(F_CODICEABI);
|
||||
m.show(F_CODICECAB);
|
||||
m.field(F_CODICEABI).check_type(CHECK_REQUIRED);
|
||||
m.field(F_CODICECAB).check_type(CHECK_REQUIRED);
|
||||
m.hide(F_ABI);
|
||||
m.hide(F_CAB);
|
||||
m.field(F_ABI).check_type(CHECK_NONE);
|
||||
m.field(F_CAB).check_type(CHECK_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
void CGTTable_application::init_modify_mode(TMask& m)
|
||||
{
|
||||
if (get_tabname() == "BNP")
|
||||
m.efield(F_IBAN_STATO).validate(K_TAB);
|
||||
}
|
||||
|
||||
void CGTTable_application::init_query_mode(TMask& m)
|
||||
{
|
||||
TTable_application::init_query_mode(m);
|
||||
if (get_tabname() == "BNP")
|
||||
{
|
||||
m.show(F_ABI);
|
||||
m.show(F_CAB);
|
||||
m.field(F_ABI).check_type(CHECK_REQUIRED);
|
||||
m.field(F_CAB).check_type(CHECK_REQUIRED);
|
||||
m.hide(F_CODICEABI);
|
||||
m.hide(F_CODICECAB);
|
||||
m.field(F_CODICECAB).check_type(CHECK_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
bool CGTTable_application::iban_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.initial_check(k))
|
||||
{
|
||||
const TString & iban = f.get();
|
||||
|
||||
set_iban_fields(iban, f.mask(), F_BBAN, F_IBAN_STATO, F_IBAN_CHECK, F_BBAN_CIN, F_BBAN_ABI, F_BBAN_CAB, F_BBAN_CONTO, 0, false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CGTTable_application::user_create()
|
||||
{
|
||||
bool ok = TTable_application::user_create();
|
||||
if (ok)
|
||||
{
|
||||
if (get_tabname() == "ESC")
|
||||
{
|
||||
get_mask(MODE_QUERY)->set_handler(F_DATAINI, dataini_handler);
|
||||
get_mask(MODE_QUERY)->set_handler(BUT_CHECK, checkbut_handler);
|
||||
}
|
||||
if (get_tabname() == TAB_NOTECLI)
|
||||
get_mask(MODE_QUERY)->set_handler(F_NOT_DESC, desnot_handler);
|
||||
if (get_tabname() == "BNP")
|
||||
get_mask(MODE_QUERY)->set_handler(F_IBAN, iban_handler);
|
||||
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool CGTTable_application::user_destroy()
|
||||
{
|
||||
return TTable_application::user_destroy();
|
||||
}
|
||||
|
||||
int CGTTable_application::read(TMask& m)
|
||||
{
|
||||
int err = Tab_application::read(m);
|
||||
const TString & table_name = get_tabname();
|
||||
|
||||
if (table_name == TAB_NOTECLI)
|
||||
glue_string();
|
||||
|
||||
else if (table_name == "%VET" && err == NOERR)
|
||||
{
|
||||
// Il campo Albo è stato unito alla p.iva, verifico se vanno separati
|
||||
// Il campo eori è diventato obbligatorio con le nuove modifiche
|
||||
if(m.field(F_EORI).required() && m.get(F_EORI).empty())
|
||||
{
|
||||
// Prendo il vecchio campo dell'albo e metto in quello nuovo
|
||||
TString piva = m.get(F_PAIV);
|
||||
if(piva.len() > 11)
|
||||
{
|
||||
m.set(F_ALBO, piva.smid(12));
|
||||
m.set(F_PAIV, piva.sleft(11));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int CGTTable_application::write(const TMask& m)
|
||||
{
|
||||
const TString & table_name = get_tabname();
|
||||
|
||||
if (table_name == TAB_NOTECLI)
|
||||
fragment_string();
|
||||
|
||||
return Tab_application::write(m);
|
||||
}
|
||||
|
||||
|
||||
int CGTTable_application::rewrite(const TMask& m)
|
||||
{
|
||||
const TString & table_name = get_tabname();
|
||||
|
||||
if (table_name == TAB_NOTECLI)
|
||||
fragment_string();
|
||||
|
||||
return Tab_application::rewrite(m);
|
||||
}
|
||||
|
||||
|
||||
// - note cliente-specific --------------------------------------------------------
|
||||
//folle metodo per suddividere una stringa lunga in piu' stringhe corte da mettere nei campi
|
||||
//stringa delle tabelle (per ora solo tabella %NOT)
|
||||
void CGTTable_application::fragment_string()
|
||||
{
|
||||
TMask& mask = *get_mask(MODE_QUERY);
|
||||
TString stringone = mask.get(F_NOT_DESC);
|
||||
TRectype& rec = get_relation()->curr();
|
||||
TString4 fieldname;
|
||||
int tot_length = 0;
|
||||
|
||||
stringone.replace('\n', (char)0xB6);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
fieldname.format("S%d", i);
|
||||
const int length = rec.length(fieldname);
|
||||
const TString& pezzo = stringone.smid(tot_length, length);
|
||||
rec.put(fieldname, pezzo);
|
||||
tot_length += length;
|
||||
}
|
||||
}
|
||||
|
||||
void CGTTable_application::glue_string()
|
||||
{
|
||||
TMask& mask = *get_mask(MODE_QUERY);
|
||||
TString stringone;
|
||||
TRectype& rec = get_relation()->curr();
|
||||
TString4 fieldname;
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
fieldname.format("S%d", i);
|
||||
stringone << rec.get(fieldname);
|
||||
}
|
||||
stringone.replace((char)0xB6, '\n');
|
||||
mask.set(F_NOT_DESC, stringone);
|
||||
}
|
||||
|
||||
bool CGTTable_application::desnot_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
const TString& stringone = f.get();
|
||||
if (stringone.len() > 320)
|
||||
return f.error_box("La nota non puo' superare i 320 caratteri");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// - esercizi-specific --------------------------------------------------------
|
||||
|
||||
bool CGTTable_application::dataini_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER && f.mask().is_running() && !f.mask().query_mode())
|
||||
{
|
||||
TString16 cod = f.mask().get(F_ANNO);
|
||||
TDate s1 = f.mask().get_date(F_DATAINI);
|
||||
TDate f1 = f.mask().get_date(F_DATAFIN);
|
||||
|
||||
return app().check_esercizio(cod, s1, f1);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CGTTable_application::check_esercizio(TString& cod, TDate s1, TDate f1)
|
||||
{
|
||||
// -----------------------------------------------------------------------------------------
|
||||
// chiamata prima di registrare. Controlla:
|
||||
// - se non ci sono altri esercizi, ok;
|
||||
// - se ce ne sono altri:
|
||||
// 1) controllo non sovrapposizione date
|
||||
// 2) se ci sono es. con date inferiori, datainizio -1 deve essere = data fine altro es;
|
||||
// 3) se ci sono es. con date superiori, datafine +1 deve essere = data inizio altro
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
byte err = 0x00; bool ret = TRUE;
|
||||
TLocalisamfile& esc = get_relation()->lfile();
|
||||
|
||||
bool basta1 = FALSE, basta2 = FALSE;
|
||||
|
||||
for (esc.first(); !esc.eof(); esc.next())
|
||||
{
|
||||
if (esc.get("CODTAB") == cod)
|
||||
continue;
|
||||
|
||||
TDate s2 = esc.get_date("D0");
|
||||
TDate f2 = esc.get_date("D1");
|
||||
TDate s1d = s1; --s1d;
|
||||
TDate s2d = s2; --s2d;
|
||||
|
||||
// check sovrapposizione
|
||||
if (s1 <= f2 && s2 <= f1)
|
||||
err |= 0x01;
|
||||
else
|
||||
{
|
||||
if (!basta1 && f1 < s2 && f1 != s2d)
|
||||
err |= 0x02;
|
||||
if (f1 < s2 && f1 == s2d)
|
||||
{
|
||||
err &= ~0x02;
|
||||
basta1 = TRUE;
|
||||
}
|
||||
if (!basta2 && s1 > f2 && f2 != s1d)
|
||||
err |= 0x04;
|
||||
if (s1 > f2 && f2 == s1d)
|
||||
{
|
||||
err &= ~0x04;
|
||||
basta2 = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (err)
|
||||
{
|
||||
ret = FALSE;
|
||||
TString errstr(120);
|
||||
errstr << TR("Date esercizio errate: \n");
|
||||
// build error string
|
||||
if (err & 0x01)
|
||||
errstr << TR("\n - l'esercizio si sovrappone ad altro gia' esistente");
|
||||
if (err & 0x02)
|
||||
errstr << TR("\n - l'esercizio non e' contiguo ad esercizi successivi");
|
||||
if (err & 0x04)
|
||||
errstr << TR("\n - l'esercizio non e' contiguo ad esercizi precedenti");
|
||||
|
||||
if (!(err & 0x01))
|
||||
{
|
||||
errstr << TR("\nSi desidera registrare ugualmente?");
|
||||
ret = yesno_box(errstr);
|
||||
}
|
||||
else error_box(errstr);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void CGTTable_application::check_sheet()
|
||||
{
|
||||
// crea 'nu bellu shit co'tutte le informazion e un messaggino
|
||||
// di error se ce n'e' bisogn
|
||||
TLocalisamfile& esc = get_relation()->lfile();
|
||||
TArray escarr(10);
|
||||
for (esc.first(); !esc.eof(); esc.next())
|
||||
escarr.add(new TEsercizio(esc.curr()));
|
||||
|
||||
escarr.sort();
|
||||
|
||||
TArray_sheet as(-1,-1,70,20,TR("Esercizi contabili"),
|
||||
FR("Codice|Inizio@10|Fine@10|Scarico@10|Chiusura@10|Note@20"),
|
||||
0x10);
|
||||
TDate s1;
|
||||
|
||||
for (int i = 0; i < escarr.items(); i++)
|
||||
{
|
||||
// sovrapposti non possono essere, perche' non si possono
|
||||
// registrare; possono solo esserci discontinuita'
|
||||
TEsercizio& e = (TEsercizio&)escarr[i];
|
||||
TToken_string* tt = new TToken_string(80);
|
||||
tt->add(e.codice());
|
||||
tt->add(e.inizio().string());
|
||||
tt->add(e.fine().string());
|
||||
tt->add(e.scarico().string());
|
||||
tt->add(e.chiusura().string());
|
||||
|
||||
if (i > 0 && e.inizio() != ++s1)
|
||||
{
|
||||
TString nc; nc << "***" << TR("non contiguo") << "***";
|
||||
tt->add(nc);
|
||||
}
|
||||
|
||||
else tt->add("");
|
||||
|
||||
s1 = e.fine();
|
||||
|
||||
as.add(tt);
|
||||
}
|
||||
|
||||
as.run();
|
||||
}
|
||||
|
||||
bool CGTTable_application::checkbut_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE && f.mask().is_running())
|
||||
app().check_sheet();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------
|
||||
|
||||
int cg0600(int argc, char* argv[])
|
||||
{
|
||||
CGTTable_application a;
|
||||
|
||||
a.run(argc, argv, TR("Gestione tabelle contabili"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
448
src/cg01/cg0700.cpp
Normal file
448
src/cg01/cg0700.cpp
Normal file
@ -0,0 +1,448 @@
|
||||
#include <execp.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
#include "..\ve\velib.h"
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0700a.h"
|
||||
#include "cg0700b.h"
|
||||
|
||||
#include <comuni.h>
|
||||
#include <clifo.h>
|
||||
#include <cfven.h>
|
||||
#include "cfban.h"
|
||||
#include <doc.h>
|
||||
#include <occas.h>
|
||||
#include <pconti.h>
|
||||
#include <postman.h>
|
||||
#include <saldi.h>
|
||||
#include <automask.h>
|
||||
#include <validate.h>
|
||||
|
||||
class TOccasionali_mask;
|
||||
|
||||
class TOccasionali_app : public TRelation_application
|
||||
{
|
||||
TOccasionali_mask * _msk;
|
||||
TRelation * _rel;
|
||||
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
virtual void init_query_mode(TMask&) override;
|
||||
// @cmember Inizializza la maschera per il modo inserimento
|
||||
virtual void init_insert_mode(TMask&) override;
|
||||
// @cmember Inizializza la maschera per il modo modifica
|
||||
virtual void init_modify_mode(TMask&) override;
|
||||
virtual TMask* _get_mask(int mode) { return (TMask *) _msk; }
|
||||
virtual bool changing_mask(int mode) { return false; }
|
||||
virtual void ini2mask(TConfig& ini, TMask& m, bool query) override;
|
||||
virtual void mask2ini(const TMask& m, TConfig& ini) override;
|
||||
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
|
||||
virtual bool check_autorization() const { return false; }
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
};
|
||||
|
||||
HIDDEN inline TOccasionali_app& app() { return (TOccasionali_app&)main_app(); }
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TOccasionali_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TOccasionali_mask : public TAutomask
|
||||
{
|
||||
long _codcf;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
void update_ban(const char * tipo, long codcf, const TRectype & recdoc);
|
||||
void occ2clifor(const char * tipo);
|
||||
long codice() const { return _codcf; }
|
||||
TOccasionali_mask() : TAutomask("cg0700a"), _codcf(0L) { }
|
||||
};
|
||||
|
||||
void TOccasionali_mask::update_ban(const char * tipo, long codcf, const TRectype & recdoc)
|
||||
{
|
||||
TString iban = recdoc.get(DOC_IBAN);
|
||||
|
||||
if (iban.full())
|
||||
{
|
||||
TToken_string key;
|
||||
bool updated = false;
|
||||
|
||||
key.add(tipo);
|
||||
key.add(codcf);
|
||||
key.add(tipo == "C" ? "N" : "V");
|
||||
|
||||
TRecord_array vs_ban(key, LF_CFBAN);
|
||||
const int vsrow = vs_ban.rows();
|
||||
bool found = false;
|
||||
|
||||
for (int i = 1; !found && i <= vsrow; i++)
|
||||
{
|
||||
TRectype & ban = (TRectype &)vs_ban.row(i);
|
||||
|
||||
found = ban.get(CFBAN_IBAN) == recdoc.get(DOC_IBAN);
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
TRectype recban = vs_ban.key();
|
||||
|
||||
recban.put(CFBAN_ABI, recdoc.get(DOC_CODABIA));
|
||||
recban.put(CFBAN_CAB, recdoc.get(DOC_CODCABA));
|
||||
recban.put(CFBAN_NUMCC, recdoc.get(DOC_IBAN).smid(14));
|
||||
recban.put(CFBAN_IBAN, recdoc.get(DOC_IBAN));
|
||||
vs_ban.add_row(recban);
|
||||
vs_ban.write(true);
|
||||
}
|
||||
}
|
||||
|
||||
TString abip = recdoc.get(DOC_CODABIP);
|
||||
|
||||
if (abip.full())
|
||||
{
|
||||
TToken_string key;
|
||||
bool found = false;
|
||||
|
||||
key.add(tipo);
|
||||
key.add(codcf);
|
||||
key.add(tipo == "C" ? "V" : "N");
|
||||
TRecord_array ns_ban(key, LF_CFBAN);
|
||||
const int nsrow = ns_ban.rows();
|
||||
|
||||
for (int i = 1; !found && i < nsrow; i++)
|
||||
{
|
||||
TRectype & ban = (TRectype &) ns_ban.row(i);
|
||||
|
||||
found = ban.get(CFBAN_ABI) == recdoc.get(DOC_CODABIP) &&
|
||||
ban.get(CFBAN_CAB) == recdoc.get(DOC_CODCABP) &&
|
||||
ban.get(CFBAN_PROGPR) == recdoc.get(DOC_PROGBNP);
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
TRectype recban = ns_ban.key();
|
||||
|
||||
recban.put(CFBAN_ABI, recdoc.get(DOC_CODABIP));
|
||||
recban.put(CFBAN_CAB, recdoc.get(DOC_CODCABP));
|
||||
recban.put(CFBAN_PROGPR, recdoc.get(DOC_PROGBNP));
|
||||
key = recdoc.get(DOC_CODABIP);
|
||||
key << recdoc.get(DOC_CODCABP) << recdoc.get(DOC_PROGBNP);
|
||||
|
||||
const TRectype & banp = cache().get("BNP", key);
|
||||
|
||||
recban.put(CFBAN_NUMCC, banp.get("S3").smid(14));
|
||||
recban.put(CFBAN_IBAN, banp.get("S3"));
|
||||
ns_ban.add_row(recban);
|
||||
ns_ban.write(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TOccasionali_mask::occ2clifor(const char * tipo)
|
||||
{
|
||||
TToken_string key = tipo;
|
||||
bool italian = get(O_STATOPAIV).blank();
|
||||
bool found = false;
|
||||
TString ragsoc;
|
||||
|
||||
_codcf = 0L;
|
||||
if (get(O_PAIV).full())
|
||||
{
|
||||
key.add(get(O_STATOPAIV));
|
||||
key.add(get(O_PAIV));
|
||||
|
||||
const TRectype & clifor = cache().get(LF_CLIFO, key, 5);
|
||||
|
||||
ragsoc = clifor.get(CLI_RAGSOC);
|
||||
_codcf = clifor.get_long(CLI_CODCF);
|
||||
found = clifor.full();
|
||||
if (italian && !found)
|
||||
{
|
||||
key.add("IT", 1);
|
||||
const TRectype & clifor = cache().get(LF_CLIFO, key, 5);
|
||||
|
||||
found = clifor.full();
|
||||
ragsoc = clifor.get(CLI_RAGSOC);
|
||||
_codcf = clifor.get_long(CLI_CODCF);
|
||||
}
|
||||
if (found)
|
||||
{
|
||||
TString message = tipo == "C" ? TR("Il cliente ") : TR("Il fornitore "); message << ragsoc << TR(" ha la stessa partita IVA, devo uilizzarlo");
|
||||
|
||||
found = yesno_box(message);
|
||||
}
|
||||
}
|
||||
if (!found && get(O_COFI).full())
|
||||
{
|
||||
key = tipo;
|
||||
key.add(get(O_COFI));
|
||||
|
||||
const TRectype & clifor = cache().get(LF_CLIFO, key, 4);
|
||||
|
||||
found = clifor.full();
|
||||
_codcf = clifor.get_long(CLI_CODCF);
|
||||
ragsoc = clifor.get(CLI_RAGSOC);
|
||||
if (found)
|
||||
{
|
||||
TString message = tipo == "C" ? TR("Il cliente ") : TR("Il fornitore "); message << ragsoc << TR(" ha lo stesso codice fiscale, devo utilizzarlo");
|
||||
|
||||
found = yesno_box(message);
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
TFilename tmp; tmp.temp("occcf", "ini");
|
||||
TTransaction t(tmp);
|
||||
|
||||
_codcf = 0L;
|
||||
t.set_executer(LF_CLIFO);
|
||||
t.set_firm(main_app().get_firm());
|
||||
t.set_user();
|
||||
t.set_hostname();
|
||||
t.set_version();
|
||||
t.set_mode(transaction_mode_automatic);
|
||||
t.set_action(TRANSACTION_INSERT);
|
||||
|
||||
t.set(CLI_RAGSOC, get(O_RAGSOC), -1, LF_CLIFO);
|
||||
t.set(CLI_STATOCF, get(O_STATO), -1, LF_CLIFO);
|
||||
t.set(CLI_COMCF, get(O_COMUNE), -1, LF_CLIFO);
|
||||
t.set(CLI_CAPCF, get(O_CAP), -1, LF_CLIFO);
|
||||
t.set(CLI_INDCF, get(O_INDIRIZZO), -1, LF_CLIFO);
|
||||
t.set(CLI_CIVCF, get(O_NUMERO), -1, LF_CLIFO);
|
||||
t.set(CLI_COFI, get(O_COFI), -1, LF_CLIFO);
|
||||
t.set(CLI_STATOPAIV, get(O_STATOPAIV), -1, LF_CLIFO);
|
||||
t.set(CLI_PAIV, get(O_PAIV), -1, LF_CLIFO);
|
||||
t.set(CLI_SESSO, get(O_SESSO), -1, LF_CLIFO);
|
||||
t.set(CLI_DATANASC, get(O_DATANAS), -1, LF_CLIFO);
|
||||
t.set(CLI_STATONASC, get(O_STATONAS), -1, LF_CLIFO);
|
||||
t.set(CLI_COMNASC, get(O_COMUNENAS), -1, LF_CLIFO);
|
||||
t.set(CLI_LOCCF, get(O_LOCALITA), -1, LF_CLIFO);
|
||||
t.set(CLI_REFERENTE, get(O_REFERENTE), -1, LF_CLIFO);
|
||||
t.set(CLI_BYMAIL, get(O_BYMAIL), -1, LF_CLIFO);
|
||||
t.set(CLI_MAIL, get(O_MAIL), -1, LF_CLIFO);
|
||||
t.set(CLI_DOCMAIL, get(O_DOCMAIL), -1, LF_CLIFO);
|
||||
t.set(CLI_PEC, get(O_PEC), -1, LF_CLIFO);
|
||||
t.set(CLI_PTEL, get(O_PTEL), -1, LF_CLIFO);
|
||||
t.set(CLI_TEL, get(O_TEL), -1, LF_CLIFO);
|
||||
t.set(CLI_PTEL2, get(O_PTEL2), -1, LF_CLIFO);
|
||||
t.set(CLI_TEL2, get(O_TEL2), -1, LF_CLIFO);
|
||||
t.set(CLI_PTEL3, get(O_PTEL3), -1, LF_CLIFO);
|
||||
t.set(CLI_TEL3, get(O_TEL3), -1, LF_CLIFO);
|
||||
t.set(CLI_TIPOPERS, get(O_TIPOPERS), -1, LF_CLIFO);
|
||||
t.set(CLI_ALLEG, get(O_ALLEG), -1, LF_CLIFO);
|
||||
t.set(CLI_PFAX, get(O_PFAX), -1, LF_CLIFO);
|
||||
t.set(CLI_FAX, get(O_FAX), -1, LF_CLIFO);
|
||||
t.set(CFV_PADESTIN, get(O_PADESTIN), -1, LF_CFVEN);
|
||||
t.write();
|
||||
if (t.execute())
|
||||
{
|
||||
t.read();
|
||||
_codcf = t.get_long(CLI_CODCF, -1, LF_CLIFO);
|
||||
}
|
||||
tmp.fremove();
|
||||
}
|
||||
if (_codcf > 0L)
|
||||
{
|
||||
TMask m("cg0700b");
|
||||
TDate from = today;
|
||||
|
||||
m.set(F_CODICE, get(O_CODICE));
|
||||
m.set(F_CODCF, _codcf);
|
||||
m.set(F_RAGSOC, ragsoc);
|
||||
from.set_start_year();
|
||||
m.set(F_FROM, from);
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
TString query("USE ");
|
||||
|
||||
query << LF_DOC << " SELECT " << DOC_OCFPI << "==\"" << get(O_CODICE) << "\"\n";
|
||||
query << "FROM " << DOC_ANNO << "=" << from.year();
|
||||
|
||||
TISAM_recordset clifor_recset(query);
|
||||
const int items = clifor_recset.items();
|
||||
|
||||
clifor_recset.freeze();
|
||||
if (items == 0)
|
||||
message_box(TR("Nessun documento trovato"));
|
||||
else
|
||||
{
|
||||
TProgress_monitor p(items, "Aggiornamento documenti");
|
||||
const TRectype & recdoc = clifor_recset.curr();
|
||||
|
||||
for (clifor_recset.move_first(); p.addstatus() && !clifor_recset.eof(); clifor_recset.move_next())
|
||||
{
|
||||
TDocumento doc(recdoc);
|
||||
|
||||
doc.put(DOC_CODCF, _codcf);
|
||||
doc.zero(DOC_OCFPI);
|
||||
doc.zero(DOC_OCCAS);
|
||||
doc.rewrite();
|
||||
}
|
||||
key = tipo;
|
||||
key.add(_codcf);
|
||||
TRectype & clifor = (TRectype &) cache().get(LF_CLIFO, key);
|
||||
|
||||
clifor_recset.move_last();
|
||||
clifor.put(CLI_CODVAL, recdoc.get(DOC_CODVAL));
|
||||
clifor.put(CLI_CODLIN, recdoc.get(DOC_CODLIN));
|
||||
clifor.put(CLI_CODPAG, recdoc.get(DOC_CODPAG));
|
||||
clifor.rewrite();
|
||||
update_ban(tipo, _codcf, recdoc);
|
||||
|
||||
TRectype & cfven = (TRectype &)cache().get(LF_CFVEN, key);
|
||||
|
||||
cfven.put(CFV_CATVEN, recdoc.get(DOC_CATVEN));
|
||||
cfven.put(CFV_CODLIST, recdoc.get(DOC_CODLIST));
|
||||
cfven.put(CFV_CODZONA, recdoc.get(DOC_ZONA));
|
||||
cfven.put(CFV_CODAG, recdoc.get(DOC_CODAG));
|
||||
cfven.put(CFV_CODAG1, recdoc.get(DOC_CODAGVIS));
|
||||
cfven.put(CFV_CODSPMEZZO, recdoc.get(DOC_CODSPMEZZO));
|
||||
cfven.put(CFV_CODPORTO, recdoc.get(DOC_CODPORTO));
|
||||
cfven.put(CFV_CODVETT1, recdoc.get(DOC_CODVETT1));
|
||||
cfven.put(CFV_CODVETT2, recdoc.get(DOC_CODVETT2));
|
||||
cfven.put(CFV_CODVETT3, recdoc.get(DOC_CODVETT3));
|
||||
cfven.write_rewrite();
|
||||
}
|
||||
}
|
||||
if (app().is_transaction())
|
||||
stop_run(K_SAVE);
|
||||
}
|
||||
}
|
||||
|
||||
bool TOccasionali_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case O_COFI:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TString16 cofi = m.get(O_COFI);
|
||||
|
||||
if (cofi.blank())
|
||||
cofi = m.get(O_CODICE);
|
||||
if (cf_check(m.get(O_STATONAS), cofi))
|
||||
{
|
||||
int giorno = atoi(cofi.smid(9,2));
|
||||
m.set(O_SESSO, giorno > 40 ? "F" : "M");
|
||||
|
||||
if (m.field(O_COMUNENAS).empty())
|
||||
m.set(O_COMUNENAS, cofi.smid(11,4), 0x2);
|
||||
|
||||
if (m.field(O_DATANAS).empty())
|
||||
{
|
||||
const TFixed_string mesi("ABCDEHLMPRST");
|
||||
const int mese = mesi.find(cofi[8])+1;
|
||||
int anno = atoi(cofi.smid(6,2));
|
||||
|
||||
if (giorno > 0 && mese > 0 && anno > 0)
|
||||
{
|
||||
giorno %= 40;
|
||||
anno += anno < 5 ? 2000 : 1900;
|
||||
m.set(O_DATANAS, TDate(giorno, mese, anno));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DLG_CLI:
|
||||
if (e == fe_button)
|
||||
occ2clifor("C");
|
||||
break;
|
||||
case DLG_FOR:
|
||||
if (e == fe_button)
|
||||
occ2clifor("F");
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void TOccasionali_app::init_query_mode(TMask& m)
|
||||
{
|
||||
m.disable(DLG_CLI);
|
||||
m.disable(DLG_FOR);
|
||||
TRelation_application::init_query_mode(m);
|
||||
}
|
||||
|
||||
void TOccasionali_app::init_insert_mode(TMask& m)
|
||||
{
|
||||
m.disable(DLG_CLI);
|
||||
m.disable(DLG_FOR);
|
||||
}
|
||||
|
||||
void TOccasionali_app::init_modify_mode(TMask& m)
|
||||
{
|
||||
m.enable(DLG_CLI);
|
||||
m.enable(DLG_FOR);
|
||||
}
|
||||
|
||||
bool TOccasionali_app::user_create()
|
||||
{
|
||||
open_files(LF_OCCAS, LF_CLIFO, LF_CFVEN, LF_DOC, LF_RIGHEDOC, LF_CFBAN, 0);
|
||||
_rel = new TRelation(LF_OCCAS);
|
||||
_msk = new TOccasionali_mask() ;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TOccasionali_app::user_destroy()
|
||||
{
|
||||
safe_delete(_rel);
|
||||
safe_delete(_msk);
|
||||
return true;
|
||||
}
|
||||
|
||||
void TOccasionali_app::ini2mask(TConfig& ini, TMask& m, bool query)
|
||||
{
|
||||
message_box("stop");
|
||||
TString istat = ini.get_int(COM_CODISTAT);
|
||||
|
||||
if (istat.full())
|
||||
{
|
||||
const TRectype & com = cache().get(LF_COMUNI, istat);
|
||||
|
||||
ini.set(OCC_STATO, com.get(COM_STATO));
|
||||
ini.set(OCC_COM, com.get(COM_COM));
|
||||
}
|
||||
|
||||
istat = ini.get_int("CODISTATNASC");
|
||||
|
||||
if (istat.full())
|
||||
{
|
||||
const TRectype & com = cache().get(LF_COMUNI, istat);
|
||||
|
||||
ini.set(OCC_STATONASC, com.get(COM_STATO));
|
||||
ini.set(OCC_COMNASC, com.get(COM_COM));
|
||||
}
|
||||
|
||||
TRelation_application::ini2mask(ini, m, query);
|
||||
|
||||
const TString4 tipo = ini.get(CLI_TIPOCF, TOSTRING(LF_CLIFO));
|
||||
|
||||
if (tipo == "F")
|
||||
m.disable(DLG_CLI);
|
||||
else
|
||||
if (tipo == "C")
|
||||
m.disable(DLG_FOR);
|
||||
}
|
||||
|
||||
void TOccasionali_app::mask2ini(const TMask& m, TConfig& ini)
|
||||
{
|
||||
const long codice = _msk->codice();
|
||||
|
||||
TRelation_application::mask2ini(m, ini);
|
||||
if (codice > 0L)
|
||||
ini.set(CLI_CODCF, codice, TOSTRING(LF_CLIFO));
|
||||
}
|
||||
|
||||
int cg0700(int argc, char* argv[])
|
||||
{
|
||||
TOccasionali_app a ;
|
||||
a.run(argc, argv, TR("Clienti/Fornitori Occasionali"));
|
||||
return 0;
|
||||
}
|
40
src/cg01/cg0700a.h
Normal file
40
src/cg01/cg0700a.h
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
// Maschera clienti/fornitori occasionali
|
||||
#define O_CODICE 100
|
||||
#define O_RAGSOC 101
|
||||
#define O_STATO 102
|
||||
#define O_COMUNE 103
|
||||
#define O_DENCOM 104
|
||||
#define O_CAP 105
|
||||
#define O_INDIRIZZO 106
|
||||
#define O_NUMERO 107
|
||||
#define O_COFI 108
|
||||
#define O_PAIV 109
|
||||
#define O_SESSO 110
|
||||
#define O_DATANAS 111
|
||||
#define O_STATONAS 112
|
||||
#define O_COMUNENAS 113
|
||||
#define O_DENCOMNAS 114
|
||||
#define O_LOCALITA 115
|
||||
#define O_STATOPAIV 116
|
||||
#define O_REFERENTE 117
|
||||
#define O_BYMAIL 118
|
||||
#define O_MAIL 119
|
||||
#define O_DOCMAIL 120
|
||||
#define O_PEC 121
|
||||
#define O_PTEL 122
|
||||
#define O_TEL 123
|
||||
#define O_PTEL2 124
|
||||
#define O_TEL2 125
|
||||
#define O_PTEL3 126
|
||||
#define O_TEL3 127
|
||||
#define O_TIPOPERS 128
|
||||
#define O_ALLEG 129
|
||||
#define O_PADESTIN 130
|
||||
#define O_PFAX 131
|
||||
#define O_FAX 132
|
||||
|
||||
#define DLG_CLI 200
|
||||
#define DLG_FOR 201
|
||||
|
||||
#include <occas.h>
|
365
src/cg01/cg0700a.uml
Normal file
365
src/cg01/cg0700a.uml
Normal file
@ -0,0 +1,365 @@
|
||||
#include "cg0700a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <relapbar.h>
|
||||
|
||||
BUTTON DLG_CLI 2 2
|
||||
BEGIN
|
||||
PROMPT 13 1 "->~Cliente"
|
||||
PICTURE TOOL_EDIT
|
||||
END
|
||||
|
||||
BUTTON DLG_FOR 2 2
|
||||
BEGIN
|
||||
PROMPT 13 1 "->~Fornitore"
|
||||
PICTURE TOOL_EDIT
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Clienti/Fornitori occasionali" 0 0 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 71 5
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
STRING O_CODICE 16
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice "
|
||||
FLAGS "U"
|
||||
USE LF_OCCAS
|
||||
INPUT CFPI O_CODICE
|
||||
DISPLAY "Codice@16" CFPI
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT O_CODICE CFPI
|
||||
OUTPUT O_RAGSOC RAGSOC
|
||||
FIELD OCC_CFPI
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING O_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ragione sociale "
|
||||
FIELD OCC_RAGSOC
|
||||
USE LF_OCCAS KEY 2
|
||||
INPUT RAGSOC O_RAGSOC
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice@16" CFPI
|
||||
OUTPUT O_CODICE CFPI
|
||||
OUTPUT O_RAGSOC RAGSOC
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
KEY 2
|
||||
END
|
||||
|
||||
STRING O_COFI 16
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice fiscale "
|
||||
FIELD OCC_COFI
|
||||
FLAGS "U"
|
||||
VALIDATE XTZCF_FUNC O_STATONAS O_SESSO O_DATANAS O_COMUNENAS
|
||||
END
|
||||
|
||||
STRING O_STATOPAIV 2
|
||||
BEGIN
|
||||
PROMPT 37 3 "Partita IVA "
|
||||
FIELD OCC_STATOPAIV
|
||||
HELP "Codice ISO dello stato"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB O_STATOPAIV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT O_STATOPAIV CODTAB
|
||||
//CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_PAIV 12
|
||||
BEGIN
|
||||
PROMPT 56 3 ""
|
||||
FIELD OCC_PAIV
|
||||
VALIDATE PI_FUNC O_STATOPAIV
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 5
|
||||
BEGIN
|
||||
PROMPT 1 5 "@bDati residenza"
|
||||
END
|
||||
|
||||
STRING O_INDIRIZZO 40
|
||||
BEGIN
|
||||
PROMPT 2 6 "Indirizzo "
|
||||
FIELD OCC_INDIR
|
||||
END
|
||||
|
||||
STRING O_NUMERO 6
|
||||
BEGIN
|
||||
PROMPT 55 6 "Numero "
|
||||
FIELD OCC_CIV
|
||||
END
|
||||
|
||||
STRING O_STATO 3
|
||||
BEGIN
|
||||
PROMPT 2 7 "Stato "
|
||||
HELP "Stato di residenza della persona"
|
||||
FIELD OCC_STATO
|
||||
FLAGS "U"
|
||||
USE %STA
|
||||
INPUT CODTAB O_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Denominazione@50" S0
|
||||
OUTPUT O_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_COMUNE 4
|
||||
BEGIN
|
||||
PROMPT 15 7 "Comune "
|
||||
FIELD OCC_COM
|
||||
FLAGS "U"
|
||||
USE LF_COMUNI
|
||||
INPUT STATO O_STATO
|
||||
INPUT COM O_COMUNE
|
||||
DISPLAY "Stato" STATO
|
||||
DISPLAY "Codice" COM
|
||||
DISPLAY "Denominazione@50" DENCOM
|
||||
OUTPUT O_STATO STATO
|
||||
OUTPUT O_COMUNE COM
|
||||
OUTPUT O_DENCOM DENCOM
|
||||
OUTPUT O_CAP CAPCOM
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
END
|
||||
|
||||
STRING O_DENCOM 50 45
|
||||
BEGIN
|
||||
PROMPT 30 7 ""
|
||||
HELP "Nome del comune di residenza della persona"
|
||||
USE LF_COMUNI KEY 2
|
||||
INPUT STATO O_STATO
|
||||
INPUT DENCOM O_DENCOM
|
||||
DISPLAY "Denominazione@50" DENCOM
|
||||
DISPLAY "Stato" STATO
|
||||
DISPLAY "Codice@10" COM
|
||||
COPY OUTPUT O_COMUNE
|
||||
//CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
END
|
||||
|
||||
STRING O_LOCALITA 35
|
||||
BEGIN
|
||||
PROMPT 2 8 "Localita' "
|
||||
FIELD OCC_LOCALITA
|
||||
HELP "Localita' del recapito"
|
||||
END
|
||||
|
||||
NUMBER O_CAP 5
|
||||
BEGIN
|
||||
PROMPT 56 8 "C.A.P. "
|
||||
HELP "CAP della residenza della persona"
|
||||
FIELD OCC_CAP
|
||||
FLAGS "ZF"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bDati nascita"
|
||||
END
|
||||
|
||||
LIST O_SESSO 1 7
|
||||
BEGIN
|
||||
PROMPT 2 11 "Sesso "
|
||||
ITEM "M|Maschio"
|
||||
ITEM "F|Femmina"
|
||||
FIELD OCC_SESSO
|
||||
END
|
||||
|
||||
DATE O_DATANAS
|
||||
BEGIN
|
||||
PROMPT 23 11 "Data "
|
||||
FIELD OCC_DNASC
|
||||
END
|
||||
|
||||
STRING O_STATONAS 3
|
||||
BEGIN
|
||||
PROMPT 41 11 "Stato "
|
||||
FIELD OCC_STATONASC
|
||||
FLAGS "U"
|
||||
COPY USE O_STATO
|
||||
INPUT CODTAB O_STATONAS
|
||||
COPY DISPLAY O_STATO
|
||||
OUTPUT O_STATONAS CODTAB
|
||||
//CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_COMUNENAS 4
|
||||
BEGIN
|
||||
PROMPT 57 11 "Comune "
|
||||
FIELD OCC_COMNASC
|
||||
FLAGS "U"
|
||||
COPY USE O_COMUNE
|
||||
INPUT STATO O_STATONAS
|
||||
INPUT COM O_COMUNENAS
|
||||
COPY DISPLAY O_COMUNE
|
||||
OUTPUT O_COMUNENAS COM
|
||||
OUTPUT O_DENCOMNAS DENCOM
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_DENCOMNAS 50
|
||||
BEGIN
|
||||
PROMPT 2 12 "Denominazione "
|
||||
COPY USE O_DENCOM
|
||||
INPUT DENCOM O_DENCOMNAS
|
||||
COPY DISPLAY O_DENCOM
|
||||
COPY OUTPUT O_COMUNENAS
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING O_REFERENTE 50
|
||||
BEGIN
|
||||
PROMPT 2 14 "Referente "
|
||||
FIELD OCC_REFERENTE
|
||||
END
|
||||
|
||||
LIST O_TIPOPERS 1 12
|
||||
BEGIN
|
||||
PROMPT 2 15 "Tipo persona "
|
||||
FIELD OCC_TIPOPERS
|
||||
HELP "Tipo anagrafico del cliente/fornitore"
|
||||
ITEM "F|Fisica"
|
||||
ITEM "G|Giuridica"
|
||||
END
|
||||
|
||||
STRING O_ALLEG 1
|
||||
BEGIN
|
||||
PROMPT 30 15 "Tipo "
|
||||
FIELD OCC_ALLEG
|
||||
SHEET "Codice|Descrizione@50"
|
||||
HELP "Codice per l'inserimento negli allegati IVA"
|
||||
INPUT O_ALLEG
|
||||
ITEM " |Valido per allegato IVA"
|
||||
ITEM "1|Non valido per allegato IVA"
|
||||
ITEM "2|Occasionale"
|
||||
ITEM "3|Documenti riepilogativi"
|
||||
ITEM "4|Codice fiscale già inserito"
|
||||
ITEM "5|Estero CEE"
|
||||
ITEM "6|Privato"
|
||||
ITEM "7|Ente pubblico"
|
||||
ITEM "8|Fallimento/proc.concorsuale"
|
||||
ITEM "9|Estero NON CEE"
|
||||
ITEM "C|Scheda carburante"
|
||||
ITEM "G|Gruppo IVA"
|
||||
OUTPUT O_ALLEG
|
||||
END
|
||||
|
||||
STRING O_PADESTIN 7
|
||||
BEGIN
|
||||
PROMPT 40 15 "Destinatario "
|
||||
MODULES PA,FP
|
||||
HELP "Codice ufficio dell destinatario della fattura elettronica"
|
||||
FIELD OCC_PADESTIN
|
||||
END
|
||||
|
||||
STRING O_MAIL 50 25
|
||||
BEGIN
|
||||
PROMPT 2 16 "E-Mail Normale "
|
||||
FIELD OCC_MAIL
|
||||
END
|
||||
|
||||
BOOLEAN O_BYMAIL
|
||||
BEGIN
|
||||
PROMPT 47 16 "Consenso spedizione doc tramite email"
|
||||
FIELD OCC_BYMAIL
|
||||
MESSAGE FALSE CLEAR,O_DOCMAIL
|
||||
MESSAGE TRUE ENABLE,O_DOCMAIL
|
||||
END
|
||||
|
||||
STRING O_DOCMAIL 50 25
|
||||
BEGIN
|
||||
PROMPT 2 17 "E-Mail Documenti "
|
||||
FIELD OCC_DOCMAIL
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING O_PEC 80 45
|
||||
BEGIN
|
||||
PROMPT 2 18 "Pec "
|
||||
FIELD OCC_PEC
|
||||
END
|
||||
|
||||
STRING O_PTEL 5
|
||||
BEGIN
|
||||
PROMPT 2 19 "Telefono "
|
||||
FIELD OCC_PTEL
|
||||
HELP "Prefisso telefonico primo recapito"
|
||||
END
|
||||
|
||||
STRING O_TEL 20 15
|
||||
BEGIN
|
||||
PROMPT 18 19 "/"
|
||||
FIELD OCC_TEL
|
||||
HELP "Numero telefonico primo recapito"
|
||||
END
|
||||
|
||||
STRING O_PTEL2 5
|
||||
BEGIN
|
||||
PROMPT 11 20 " "
|
||||
FIELD OCC_PTEL2
|
||||
HELP "Prefisso telefonico secondo recapito"
|
||||
END
|
||||
|
||||
STRING O_TEL2 20 15
|
||||
BEGIN
|
||||
PROMPT 18 20 "/"
|
||||
FIELD OCC_TEL2
|
||||
HELP "Numero telefonico secondo recapito"
|
||||
END
|
||||
|
||||
STRING O_PTEL3 5
|
||||
BEGIN
|
||||
PROMPT 11 21 " "
|
||||
FIELD OCC_PTEL3
|
||||
HELP "Prefisso telefonico terzo recapito"
|
||||
END
|
||||
|
||||
STRING O_TEL3 20 15
|
||||
BEGIN
|
||||
PROMPT 18 21 "/"
|
||||
FIELD OCC_TEL3
|
||||
HELP "Numero telefonico terzo recapito"
|
||||
END
|
||||
|
||||
STRING O_PFAX 5
|
||||
BEGIN
|
||||
PROMPT 2 22 "FAX "
|
||||
FIELD OCC_PFAX
|
||||
HELP "Prefisso telefonico fax"
|
||||
END
|
||||
|
||||
STRING O_FAX 23 15
|
||||
BEGIN
|
||||
PROMPT 18 22 "/"
|
||||
FIELD OCC_FAX
|
||||
HELP "Numero telefonico fax"
|
||||
END
|
||||
|
||||
STRING DLG_NULL 50 32
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Ultimo aggiornamento "
|
||||
FLAGS "D"
|
||||
FIELD OCC_UTENTE
|
||||
END
|
||||
|
||||
DATE DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 60 -1 ""
|
||||
FLAGS "D"
|
||||
FIELD OCC_DATAAGG
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
6
src/cg01/cg0700b.h
Normal file
6
src/cg01/cg0700b.h
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
// Maschera clienti/fornitori occasionali
|
||||
#define F_CODICE 100
|
||||
#define F_CODCF 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_FROM 103
|
42
src/cg01/cg0700b.uml
Normal file
42
src/cg01/cg0700b.uml
Normal file
@ -0,0 +1,42 @@
|
||||
#include "cg0700b.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <stdbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Occasionale --> Cliente/Fornitore" -1 -1 76 9
|
||||
|
||||
STRING F_CODICE 16
|
||||
BEGIN
|
||||
PROMPT 2 1 "Occasionale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CODCF 6 0
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 3 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX 300 71 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "@BConverti documenti"
|
||||
END
|
||||
|
||||
DATE F_FROM
|
||||
BEGIN
|
||||
PROMPT 2 5 "Dal "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
194
src/cg01/cg0800.cpp
Normal file
194
src/cg01/cg0800.cpp
Normal file
@ -0,0 +1,194 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <reprint.h>
|
||||
#include <variant.h>
|
||||
|
||||
#include "cglib.h"
|
||||
#include "cg0800a.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TRiepilogoIVA_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TRiepilogoIVA_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TRiepilogoIVA_mask() : TAutomask("cg0800a") { }
|
||||
};
|
||||
|
||||
bool TRiepilogoIVA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
TRiepilogoIVA_mask & m = (TRiepilogoIVA_mask &) o.mask();
|
||||
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DAMESE:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (atoi(o.get()) > m.get_int(F_AMESE))
|
||||
m.set(F_AMESE, o.get());
|
||||
}
|
||||
break;
|
||||
case F_AMESE:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (atoi(o.get()) < m.get_int(F_DAMESE))
|
||||
o.set(m.get(F_DAMESE));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TRiepilogoIVA_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TRiepilogoIVA_app : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
void execute_print(TAutomask & m, TReport & rep, KEY k);
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TRiepilogoIVA_app::execute_print(TAutomask & m, TReport & rep, KEY k)
|
||||
{
|
||||
TReport_book b;
|
||||
export_type type = _export_printer;
|
||||
|
||||
switch (k)
|
||||
{
|
||||
case K_ENTER:
|
||||
case K_PRINT:
|
||||
type = _export_printer;
|
||||
break;
|
||||
case K_EXCEL:
|
||||
type = _export_excel;
|
||||
break;
|
||||
case K_EXPORT:
|
||||
type = _export_generic;
|
||||
break;
|
||||
case K_PDF:
|
||||
type = _export_pdf;
|
||||
break;
|
||||
case K_TEXT:
|
||||
type = _export_text;
|
||||
break;
|
||||
break;
|
||||
case K_VISUALIZE:
|
||||
type = _export_visualize;
|
||||
break;
|
||||
default:
|
||||
type = _export_user;
|
||||
break;
|
||||
}
|
||||
|
||||
TFilename name = m.get(DLG_OUTPUTD);
|
||||
TString fname = m.get(DLG_OUTPUTF);
|
||||
|
||||
if (name.blank())
|
||||
name.tempdir();
|
||||
if (!dexist(name))
|
||||
if (!make_dir(name))
|
||||
{
|
||||
error_box(FR("Non posso creare %s uso il direttorio temporaneo"), (const char *)name);
|
||||
name.cut(0);
|
||||
name.tempdir();
|
||||
}
|
||||
if (fname.blank())
|
||||
{
|
||||
TString t(20);
|
||||
|
||||
fname = "cg0800";
|
||||
_strtime_s(t.get_buffer(), t.size());
|
||||
t.strip(":");
|
||||
fname << '_' << today.date2ansi() << '_' << t;
|
||||
}
|
||||
name.add(fname);
|
||||
rep.set_export_sections(type);
|
||||
b.add(rep, type);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case _export_printer:
|
||||
b.print_or_preview();
|
||||
break;
|
||||
case _export_generic:
|
||||
b.esporta();
|
||||
break;
|
||||
case _export_excel:
|
||||
b.export_excel(name, false, true, false, '\t');
|
||||
break;
|
||||
case _export_pdf:
|
||||
b.export_pdf(name, false, true);
|
||||
break;
|
||||
case _export_text:
|
||||
b.export_text(name, 0, false, true);
|
||||
break;
|
||||
case _export_visualize:
|
||||
b.preview();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TRiepilogoIVA_app::main_loop()
|
||||
{
|
||||
TRiepilogoIVA_mask m;
|
||||
KEY k;
|
||||
|
||||
while ((k = m.run()) != K_QUIT)
|
||||
{
|
||||
TRiepilogoIVA_report rep;
|
||||
TFilename repname = m.get(DLG_REPORT);
|
||||
TRiepilogoIVA_recordset * recset = new TRiepilogoIVA_recordset;
|
||||
|
||||
if (repname.blank())
|
||||
repname = "cg0800a";
|
||||
|
||||
rep.load(repname);
|
||||
if (recset != nullptr)
|
||||
{
|
||||
int anno = m.get_int(F_ANNO);
|
||||
int damese = m.get_int(F_DAMESE);
|
||||
int amese = m.get_int(F_AMESE);
|
||||
|
||||
recset->freeze();
|
||||
recset->set_anno(anno);
|
||||
|
||||
if (damese == 13)
|
||||
{
|
||||
damese = 1;
|
||||
amese = 12;
|
||||
recset->set_annual(true);
|
||||
}
|
||||
recset->set_da_mese(damese);
|
||||
recset->set_a_mese(amese);
|
||||
|
||||
const TDate da(1, damese, anno);
|
||||
TDate a(1, amese, anno);
|
||||
|
||||
rep.set_report_month(amese, anno);
|
||||
if (m.get_long(F_DAMESE) == 13)
|
||||
a.addyear();
|
||||
a.set_end_month();
|
||||
recset->set_from(da);
|
||||
recset->set_to(a);
|
||||
rep.set_recordset(recset);
|
||||
execute_print(m, rep, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int cg0800(int argc, char* argv[])
|
||||
{
|
||||
TRiepilogoIVA_app app;
|
||||
app.run(argc, argv, TR("Stampa progressivi IVA avanzata"));
|
||||
return 0;
|
||||
}
|
5
src/cg01/cg0800a.h
Normal file
5
src/cg01/cg0800a.h
Normal file
@ -0,0 +1,5 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ANNO 103
|
||||
#define F_DAMESE 104
|
||||
#define F_AMESE 105
|
157
src/cg01/cg0800a.rep
Normal file
157
src/cg01/cg0800a.rep
Normal file
@ -0,0 +1,157 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report libraries="" page_merge="" save_printer="" name="cg0800a" use_printer_font="" orientation="2" page_split="" lpi="6" command="cg0 -7" class="cg0800a">
|
||||
<description>Riepilogo progressivi IVA</description>
|
||||
<font face="Arial" size="7" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="" hidden="" page_break="" can_break="" pattern="1">
|
||||
<field x="4" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>#SYSTEM.DATE</source>
|
||||
</field>
|
||||
<field x="48.5" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="Ditta">
|
||||
<source>#SYSTEM.RAGSOC</source>
|
||||
</field>
|
||||
<field x="51.5" deactivated="" type="Stringa" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="50" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>#SYSTEM.RAGSOC</source>
|
||||
</field>
|
||||
<field x="154" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="Pag.">
|
||||
<source>#PAGE</source>
|
||||
</field>
|
||||
<field x="158.5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>#PAGE</source>
|
||||
</field>
|
||||
<field x="33.5" y="1" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="25" codval="" id="" pattern="1" hide_zero="" text="Progressivi IVA">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
</field>
|
||||
<field x="59.5" y="1" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>#ANNO</source>
|
||||
</field>
|
||||
<field x="69.5" y="1" deactivated="" type="Array" hidden="" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>#DAMESE</source>
|
||||
<list>
|
||||
<li Value="da gennaio" Code="1" />
|
||||
<li Value="da febbraio" Code="2" />
|
||||
<li Value="da marzo" Code="3" />
|
||||
<li Value="da aprile" Code="4" />
|
||||
<li Value="da maggio" Code="5" />
|
||||
<li Value="da giugno" Code="6" />
|
||||
<li Value="da luglio" Code="7" />
|
||||
<li Value="da agosto" Code="8" />
|
||||
<li Value="da settembre" Code="9" />
|
||||
<li Value="da ottobre" Code="10" />
|
||||
<li Value="da novembre" Code="11" />
|
||||
<li Value="da dicembre" Code="12" />
|
||||
<li Value="annuale" Code="13" />
|
||||
</list>
|
||||
</field>
|
||||
<field x="86.5" y="1" deactivated="" type="Array" hidden="" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>#AMESE</source>
|
||||
<list>
|
||||
<li Value="a gennaio" Code="1" />
|
||||
<li Value="a febbraio" Code="2" />
|
||||
<li Value="a marzo" Code="3" />
|
||||
<li Value="ad aprile" Code="4" />
|
||||
<li Value="a maggio" Code="5" />
|
||||
<li Value="a giugno" Code="6" />
|
||||
<li Value="a luglio" Code="7" />
|
||||
<li Value="ad agosto" Code="8" />
|
||||
<li Value="a settembre" Code="9" />
|
||||
<li Value="a ottobre" Code="10" />
|
||||
<li Value="a novembre" Code="11" />
|
||||
<li Value="a dicembre" Code="12" />
|
||||
<li Value="" Code="13" />
|
||||
</list>
|
||||
</field>
|
||||
<field x="63.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="Vendite">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="87.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="18" codval="" id="" pattern="1" hide_zero="" text="Corrispettivi">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="119.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="1" hide_zero="" text="Acquisti">
|
||||
<font face="Courier New" size="10" />
|
||||
</field>
|
||||
<field x="141.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="20" codval="" id="" pattern="1" hide_zero="" text="Acquisti indetraibili">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="53.5" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="81.5" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="110" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="138.5" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="25" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field border="2" y="4.75" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="165" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
||||
</section>
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="1" hidden="" page_break="" can_break="" pattern="1" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||
<field x="4" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>COD</source>
|
||||
</field>
|
||||
<field x="9" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="45" codval="" height="2" id="" pattern="1" hide_zero="" text="">
|
||||
<source>DESC</source>
|
||||
</field>
|
||||
<field x="55" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPVEN</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.102 +!</postscript>
|
||||
</field>
|
||||
<field x="68.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVAVEN</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.103 +!</postscript>
|
||||
</field>
|
||||
<field x="82" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPCORR</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.104 +!</postscript>
|
||||
</field>
|
||||
<field x="95.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVACORR</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.105 +!</postscript>
|
||||
</field>
|
||||
<field x="109" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPACQ</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.106 +!</postscript>
|
||||
</field>
|
||||
<field x="122.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVAACQ</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.107 +!</postscript>
|
||||
</field>
|
||||
<field x="136" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPACQIND</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.108 +!</postscript>
|
||||
</field>
|
||||
<field x="149.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVAACQIND</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F1.109 +!</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||
<field border="2" y="0.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="165" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
||||
<field x="9" y="1" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="20" codval="" height="2" id="101" pattern="1" hide_zero="" text="Totale">
|
||||
<source>DESC</source>
|
||||
</field>
|
||||
<field x="55" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="68.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="103" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="82" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="104" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="95.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="105" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="109" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="106" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="122.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="107" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="136.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="108" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="149.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="109" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
</section>
|
||||
</report>
|
66
src/cg01/cg0800a.uml
Normal file
66
src/cg01/cg0800a.uml
Normal file
@ -0,0 +1,66 @@
|
||||
#include "cg0800a.h"
|
||||
|
||||
#define EXPORT_EXCEL
|
||||
#define EXPORT_PDF
|
||||
#define EXPORT_TEXT
|
||||
#define REPORT
|
||||
#define CLASS_NAME "cg0800a"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <aprintbar.h>
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "bottombar" 0 -3 0 1
|
||||
#include <bprintbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Stampa Riepilogo IVA" -1 -1 62 5
|
||||
|
||||
GROUPBOX DLG_NULL 74 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 15 1 "Ragione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Anno "
|
||||
FLAGS "AP"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST F_DAMESE 20
|
||||
BEGIN
|
||||
PROMPT 2 5 "Da mese "
|
||||
ITEM "13|13a liquid."
|
||||
FLAGS "MP"
|
||||
MESSAGE COPY,F_AMESE
|
||||
END
|
||||
|
||||
LIST F_AMESE 20
|
||||
BEGIN
|
||||
PROMPT 35 5 " A mese "
|
||||
ITEM "13|13a liquid."
|
||||
FLAGS "MP"
|
||||
WARINIG "Il mese di inizio non può essere successico al mese di fine"
|
||||
VALIDATE F_DAMESE<=F_AMESE
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
211
src/cg01/cg0900.cpp
Normal file
211
src/cg01/cg0900.cpp
Normal file
@ -0,0 +1,211 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <reprint.h>
|
||||
#include <variant.h>
|
||||
|
||||
#include "cglib.h"
|
||||
#include "cg0900a.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TRiepilogoIVAatt_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TRiepilogoIVAatt_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TRiepilogoIVAatt_mask() : TAutomask("cg0900a") { }
|
||||
};
|
||||
|
||||
bool TRiepilogoIVAatt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
TRiepilogoIVAatt_mask & m = (TRiepilogoIVAatt_mask &) o.mask();
|
||||
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DAMESE:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (atoi(o.get()) > m.get_int(F_AMESE))
|
||||
m.set(F_AMESE, o.get());
|
||||
}
|
||||
break;
|
||||
case F_AMESE:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (atoi(o.get()) < m.get_int(F_DAMESE))
|
||||
o.set(m.get(F_DAMESE));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TRiepilogoIVAatt_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TRiepilogoIVAatt_app : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
void execute_print(TAutomask & m, TReport & rep, KEY k);
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TRiepilogoIVAatt_app::execute_print(TAutomask & m, TReport & rep, KEY k)
|
||||
{
|
||||
TReport_book b;
|
||||
export_type type = _export_printer;
|
||||
|
||||
switch (k)
|
||||
{
|
||||
case K_ENTER:
|
||||
case K_PRINT:
|
||||
type = _export_printer;
|
||||
break;
|
||||
case K_EXCEL:
|
||||
type = _export_excel;
|
||||
rep.section('B', 1).find_field(90)->show(true);
|
||||
break;
|
||||
case K_EXPORT:
|
||||
type = _export_generic;
|
||||
break;
|
||||
case K_PDF:
|
||||
type = _export_pdf;
|
||||
break;
|
||||
case K_TEXT:
|
||||
type = _export_text;
|
||||
break;
|
||||
break;
|
||||
case K_VISUALIZE:
|
||||
type = _export_visualize;
|
||||
break;
|
||||
default:
|
||||
type = _export_user;
|
||||
break;
|
||||
}
|
||||
|
||||
TFilename name = m.get(DLG_OUTPUTD);
|
||||
TString fname = m.get(DLG_OUTPUTF);
|
||||
|
||||
if (name.blank())
|
||||
name.tempdir();
|
||||
if (!dexist(name))
|
||||
if (!make_dir(name))
|
||||
{
|
||||
error_box(FR("Non posso creare %s uso il direttorio temporaneo"), (const char *)name);
|
||||
name.cut(0);
|
||||
name.tempdir();
|
||||
}
|
||||
if (fname.blank())
|
||||
{
|
||||
TString t(20);
|
||||
|
||||
fname = "cg0800";
|
||||
_strtime_s(t.get_buffer(), t.size());
|
||||
t.strip(":");
|
||||
fname << '_' << today.date2ansi() << '_' << t;
|
||||
}
|
||||
name.add(fname);
|
||||
rep.set_report_month(m.get_int(F_AMESE), m.get_int(F_ANNO));
|
||||
rep.set_export_sections(type);
|
||||
b.add(rep, type);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case _export_printer:
|
||||
b.print_or_preview();
|
||||
break;
|
||||
case _export_generic:
|
||||
b.esporta();
|
||||
break;
|
||||
case _export_excel:
|
||||
b.export_excel(name, false, true, false, '\t');
|
||||
break;
|
||||
case _export_pdf:
|
||||
b.export_pdf(name, false, true);
|
||||
break;
|
||||
case _export_text:
|
||||
b.export_text(name, 0, false, true);
|
||||
break;
|
||||
case _export_visualize:
|
||||
b.preview();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TRiepilogoIVAatt_app::main_loop()
|
||||
{
|
||||
TRiepilogoIVAatt_mask m;
|
||||
KEY k;
|
||||
|
||||
while ((k = m.run()) != K_QUIT)
|
||||
{
|
||||
TRiepilogoIVA_report rep;
|
||||
TFilename repname = m.get(DLG_REPORT);
|
||||
TRiepilogoIVAatt_recordset * recset = new TRiepilogoIVAatt_recordset;
|
||||
|
||||
if (repname.blank())
|
||||
repname = "cg0900a";
|
||||
|
||||
rep.load(repname);
|
||||
if (recset != nullptr)
|
||||
{
|
||||
int anno = m.get_int(F_ANNO);
|
||||
int damese = m.get_int(F_DAMESE);
|
||||
int amese = m.get_int(F_AMESE);
|
||||
|
||||
recset->freeze();
|
||||
recset->set_anno(anno);
|
||||
|
||||
if (damese == 13)
|
||||
{
|
||||
damese = 1;
|
||||
amese = 12;
|
||||
recset->set_annual(true);
|
||||
}
|
||||
recset->set_da_mese(damese);
|
||||
recset->set_a_mese(amese);
|
||||
|
||||
const TDate da(1, damese, anno);
|
||||
TDate a(1, amese, anno);
|
||||
|
||||
if (m.get_long(F_DAMESE) == 13)
|
||||
a.addyear();
|
||||
a.set_end_month();
|
||||
recset->set_from(da);
|
||||
recset->set_to(a);
|
||||
|
||||
const TString & codatt = m.get(F_CODATT);
|
||||
|
||||
recset->set_codatt(codatt);
|
||||
rep.set_recordset(recset);
|
||||
if (codatt.full())
|
||||
{
|
||||
TReport_section * f1 = rep.find_section('F', 1);
|
||||
|
||||
if (f1 != nullptr)
|
||||
{
|
||||
const int fields = f1->items();
|
||||
|
||||
for (int i = 0; i < fields; i++)
|
||||
f1->field(i).hide();
|
||||
}
|
||||
}
|
||||
execute_print(m, rep, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int cg0900(int argc, char* argv[])
|
||||
{
|
||||
TRiepilogoIVAatt_app app;
|
||||
app.run(argc, argv, TR("Stampa progressivi IVA avanzata per attività"));
|
||||
return 0;
|
||||
}
|
7
src/cg01/cg0900a.h
Normal file
7
src/cg01/cg0900a.h
Normal file
@ -0,0 +1,7 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ANNO 103
|
||||
#define F_DAMESE 104
|
||||
#define F_AMESE 105
|
||||
#define F_CODATT 106
|
||||
#define F_DESATT 107
|
217
src/cg01/cg0900a.rep
Normal file
217
src/cg01/cg0900a.rep
Normal file
@ -0,0 +1,217 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report libraries="" page_merge="" save_printer="" name="cg0900a" use_printer_font="" orientation="2" page_split="1" lpi="6" command="cg0 -8" class="cg0900a">
|
||||
<description>Riepilogo progressivi IVA per attivita'</description>
|
||||
<font face="Arial" size="7" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="" hidden="" page_break="" can_break="" pattern="1">
|
||||
<field x="4" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>#SYSTEM.DATE</source>
|
||||
</field>
|
||||
<field x="48.5" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="Ditta">
|
||||
<source>#SYSTEM.RAGSOC</source>
|
||||
</field>
|
||||
<field x="54.5" deactivated="" type="Stringa" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="50" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>#SYSTEM.RAGSOC</source>
|
||||
</field>
|
||||
<field x="154" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="Pag.">
|
||||
<source>#PAGE</source>
|
||||
</field>
|
||||
<field x="158.5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>#PAGE</source>
|
||||
</field>
|
||||
<field x="33.5" y="1" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="25" codval="" id="" pattern="1" hide_zero="" text="Progressivi IVA per registro">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
</field>
|
||||
<field x="59.5" y="1" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>#ANNO</source>
|
||||
</field>
|
||||
<field x="69.5" y="1" deactivated="" type="Array" hidden="" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>#DAMESE</source>
|
||||
<list>
|
||||
<li Value="da gennaio" Code="1" />
|
||||
<li Value="da febbraio" Code="2" />
|
||||
<li Value="da marzo" Code="3" />
|
||||
<li Value="da aprile" Code="4" />
|
||||
<li Value="da maggio" Code="5" />
|
||||
<li Value="da giugno" Code="6" />
|
||||
<li Value="da luglio" Code="7" />
|
||||
<li Value="da agosto" Code="8" />
|
||||
<li Value="da settembre" Code="9" />
|
||||
<li Value="da ottobre" Code="10" />
|
||||
<li Value="da novembre" Code="11" />
|
||||
<li Value="da dicembre" Code="12" />
|
||||
<li Value="annuale" Code="13" />
|
||||
</list>
|
||||
</field>
|
||||
<field x="86.5" y="1" deactivated="" type="Array" hidden="" link="" dynamic_height="" shade_offset="" width="16" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
<source>#AMESE</source>
|
||||
<list>
|
||||
<li Value="a gennaio" Code="1" />
|
||||
<li Value="a febbraio" Code="2" />
|
||||
<li Value="a marzo" Code="3" />
|
||||
<li Value="ad aprile" Code="4" />
|
||||
<li Value="a maggio" Code="5" />
|
||||
<li Value="a giugno" Code="6" />
|
||||
<li Value="a luglio" Code="7" />
|
||||
<li Value="ad agosto" Code="8" />
|
||||
<li Value="a settembre" Code="9" />
|
||||
<li Value="a ottobre" Code="10" />
|
||||
<li Value="a novembre" Code="11" />
|
||||
<li Value="a dicembre" Code="12" />
|
||||
<li Value="" Code="13" />
|
||||
</list>
|
||||
</field>
|
||||
<field x="105" y="1" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="28" codval="" id="" pattern="1" hide_zero="" text="per attivit&#E0;">
|
||||
<font face="Courier New" bold="1" size="10" />
|
||||
</field>
|
||||
<field x="63.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="Vendite">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="87.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="18" codval="" id="" pattern="1" hide_zero="" text="Corrispettivi">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="119.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="1" hide_zero="" text="Acquisti">
|
||||
<font face="Courier New" size="10" />
|
||||
</field>
|
||||
<field x="141.5" y="2.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="20" codval="" id="" pattern="1" hide_zero="" text="Acquisti indetraibili">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="53.5" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="81.5" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="110" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="30" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field x="138.5" y="3" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="25" codval="" id="" pattern="1" hide_zero="" text=" Imponibile Imposta">
|
||||
<font face="Arial" size="10" />
|
||||
</field>
|
||||
<field border="2" y="4.75" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="165" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
||||
</section>
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="1" hidden="" page_break="" can_break="" pattern="1" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="2" hidden="" page_break="" can_break="" pattern="1">
|
||||
<groupby>COD[1,5]</groupby>
|
||||
<field deactivated="" type="Numero" hidden="1" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="99" pattern="1" hide_zero="" text="">
|
||||
<source>#SYSTEM.FIRM</source>
|
||||
</field>
|
||||
<field x="14" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="100" pattern="1" hide_zero="" text="">
|
||||
<source>COD[1,5]</source>
|
||||
<postscript description="H2.100 POSTSCRIPT">MESSAGE COPY,F2.100</postscript>
|
||||
</field>
|
||||
<field x="21" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="50" codval="" id="101" pattern="1" hide_zero="" text="">
|
||||
<prescript description="H2.101 PRESCRIPT">MESSAGE ISAMREAD,10,CODDITTA=#99!CODATT=#100,DESCR</prescript>
|
||||
<postscript description="H2.101 POSTSCRIPT">MESSAGE COPY,F2.101</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||
<field x="4" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
|
||||
<source>COD[6,9]</source>
|
||||
</field>
|
||||
<field x="9" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="45" codval="" height="2" id="" pattern="1" hide_zero="" text="">
|
||||
<source>DESC</source>
|
||||
</field>
|
||||
<field x="55" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPVEN</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.102 +!</postscript>
|
||||
</field>
|
||||
<field x="68.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVAVEN</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.103 +!</postscript>
|
||||
</field>
|
||||
<field x="82" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPCORR</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.104 +!</postscript>
|
||||
</field>
|
||||
<field x="95.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVACORR</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.105 +!</postscript>
|
||||
</field>
|
||||
<field x="109.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPACQ</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.106 +!</postscript>
|
||||
</field>
|
||||
<field x="123" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVAACQ</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.107 +!</postscript>
|
||||
</field>
|
||||
<field x="137" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IMPACQIND</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.108 +!</postscript>
|
||||
</field>
|
||||
<field x="150.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<source>IVAACQIND</source>
|
||||
<postscript description="B1.0 POSTSCRIPT">#THIS @
|
||||
#F2.109 +!</postscript>
|
||||
</field>
|
||||
<field deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="5" codval="" id="90" pattern="1" hide_zero="" text="">
|
||||
<source>COD[1,5]</source>
|
||||
</field>
|
||||
</section>
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||
<field border="2" y="0.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="165" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
||||
<field x="9" y="1" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="20" codval="" height="2" id="101" pattern="1" hide_zero="" text="Totale">
|
||||
<source>DESC</source>
|
||||
</field>
|
||||
<field x="55" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="102" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="68.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="103" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="82.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="104" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="96" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="105" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="110" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="106" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="123.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="107" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="137" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="108" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
<field x="151.5" y="1" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="109" pattern="1" hide_zero="1" text="###.###.###,@@" />
|
||||
</section>
|
||||
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="2" hidden="" height="4" page_break="" can_break="" pattern="1">
|
||||
<field border="2" y="0.25" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="165" codval="" height="0" id="" pattern="1" hide_zero="" text="" />
|
||||
<field x="14" y="0.75" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="100" pattern="1" hide_zero="" text="" />
|
||||
<field x="9" y="0.75" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="101" pattern="1" hide_zero="" text="Totale">
|
||||
<source>DESC</source>
|
||||
</field>
|
||||
<field x="21" y="0.75" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="33" codval="" height="2" id="101" pattern="1" hide_zero="" text="" />
|
||||
<field x="55" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="102" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.102 POSTSCRIPT">#THIS @
|
||||
#F1.102 +!</postscript>
|
||||
</field>
|
||||
<field x="68.5" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="103" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.103 POSTSCRIPT">#THIS @
|
||||
#F1.103 +!</postscript>
|
||||
</field>
|
||||
<field x="82.5" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.104 POSTSCRIPT">#THIS @
|
||||
#F1.104 +!</postscript>
|
||||
</field>
|
||||
<field x="96" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.105 POSTSCRIPT">#THIS @
|
||||
#F1.105 +!</postscript>
|
||||
</field>
|
||||
<field x="110" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="106" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.106 POSTSCRIPT">#THIS @
|
||||
#F1.106 +!</postscript>
|
||||
</field>
|
||||
<field x="123.5" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="107" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.107 POSTSCRIPT">#THIS @
|
||||
#F1.107 +!</postscript>
|
||||
</field>
|
||||
<field x="137" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="108" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.108 POSTSCRIPT">#THIS @
|
||||
#F1.108 +!</postscript>
|
||||
</field>
|
||||
<field x="151.5" y="0.75" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="13" codval="" id="109" pattern="1" hide_zero="1" text="###.###.###,@@">
|
||||
<postscript description="F2.109 POSTSCRIPT">#THIS @
|
||||
#F1.109 +!</postscript>
|
||||
</field>
|
||||
</section>
|
||||
</report>
|
95
src/cg01/cg0900a.uml
Normal file
95
src/cg01/cg0900a.uml
Normal file
@ -0,0 +1,95 @@
|
||||
#include "cg0900a.h"
|
||||
|
||||
#define EXPORT_EXCEL
|
||||
#define EXPORT_PDF
|
||||
#define EXPORT_TEXT
|
||||
#define REPORT
|
||||
#define CLASS_NAME "cg0900a"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <aprintbar.h>
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "bottombar" 0 -3 0 1
|
||||
#include <bprintbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Stampa Riepilogo IVA per attività" -1 -1 62 5
|
||||
|
||||
GROUPBOX DLG_NULL 74 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 15 1 "Ragione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Anno "
|
||||
FLAGS "AP"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST F_DAMESE 20
|
||||
BEGIN
|
||||
PROMPT 2 5 "Da mese "
|
||||
ITEM "13|13a liquid."
|
||||
FLAGS "MP"
|
||||
MESSAGE COPY,F_AMESE
|
||||
END
|
||||
|
||||
LIST F_AMESE 20
|
||||
BEGIN
|
||||
PROMPT 35 5 " A mese "
|
||||
ITEM "13|13a liquid."
|
||||
FLAGS "MP"
|
||||
WARINIG "Il mese di inizio non può essere successico al mese di fine"
|
||||
VALIDATE F_DAMESE<=F_AMESE
|
||||
END
|
||||
|
||||
STRING F_CODATT 5
|
||||
BEGIN
|
||||
PROMPT 2 7 "Codice Attivita'"
|
||||
FLAGS "UZ"
|
||||
USE LF_ATTIV KEY 1
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT CODATT F_CODATT
|
||||
DISPLAY "Attivita'" CODATT
|
||||
DISPLAY "Prevalente" ATTPREV
|
||||
DISPLAY " @50" DESCR
|
||||
OUTPUT F_CODATT CODATT
|
||||
OUTPUT F_DESATT DESCR
|
||||
WARNING "Attivita' assente"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESATT 50
|
||||
BEGIN
|
||||
PROMPT 2 9 "Codice Attivita'"
|
||||
FLAGS "UZ"
|
||||
USE LF_ATTIV KEY 2
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT DESCR F_DESATT
|
||||
DISPLAY " @50" DESCR
|
||||
DISPLAY "Attivita'" CODATT
|
||||
DISPLAY "Prevalente" ATTPREV
|
||||
COPY OUTPUT F_CODATT
|
||||
WARNING "Attivita' assente"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
ENDMASK
|
21
src/cg01/cg1.cpp
Normal file
21
src/cg01/cg1.cpp
Normal file
@ -0,0 +1,21 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "cg1.h"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int n = argc > 1 ? argv[1][1]-'0' : 0;
|
||||
switch(n)
|
||||
{
|
||||
case 1: cg1200(argc,argv); break; // Stampa clienti/fornitori
|
||||
case 2: cg1300(argc,argv); break; // Aggiornamenti
|
||||
case 3: cg1400(argc,argv); break; // Stampa deleghe iva
|
||||
case 4: cg1500(argc,argv); break; // Stampa bilanci
|
||||
case 5: cg1600(argc,argv); break; // Stampa bilancio IV direttiva
|
||||
case 6: cg1700(argc,argv); break; // Stampa causali
|
||||
default: cg1100(argc,argv); break; // Stampa Piano dei conti
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
19
src/cg01/cg1.h
Normal file
19
src/cg01/cg1.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef __CG1_H
|
||||
#define __CG1_H
|
||||
|
||||
int cg1100(int argc, char* argv[]);
|
||||
int cg1200(int argc, char* argv[]);
|
||||
int cg1300(int argc, char* argv[]);
|
||||
int cg1400(int argc, char* argv[]);
|
||||
int cg1500(int argc, char* argv[]);
|
||||
int cg1600(int argc, char* argv[]);
|
||||
int cg1700(int argc, char* argv[]);
|
||||
//int cg1800(int argc, char* argv[]);
|
||||
|
||||
|
||||
|
||||
#endif // __CG1_H
|
||||
|
||||
|
||||
|
||||
|
1201
src/cg01/cg1100.cpp
Normal file
1201
src/cg01/cg1100.cpp
Normal file
File diff suppressed because it is too large
Load Diff
11
src/cg01/cg1100.h
Normal file
11
src/cg01/cg1100.h
Normal file
@ -0,0 +1,11 @@
|
||||
#ifndef __CG1100_H
|
||||
#define __CG1100_H
|
||||
|
||||
#define F_DATA_STAMPA 100
|
||||
#define F_SCELTA_STAMPA 101
|
||||
#define F_SALTO_PAGINA 102
|
||||
#define F_CODDITTA 103
|
||||
#define F_RAGSOC 104
|
||||
|
||||
#endif
|
||||
|
55
src/cg01/cg1100a.uml
Normal file
55
src/cg01/cg1100a.uml
Normal file
@ -0,0 +1,55 @@
|
||||
#include "cg1100.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <printbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Stampa piano dei conti" -1 -1 70 18
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione sociale @50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DATA_STAMPA
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data di stampa "
|
||||
HELP "Data da riportare sui fogli"
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SCELTA_STAMPA 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo di stampa "
|
||||
HELP "Scegliere il tipo di stampa desiderata"
|
||||
ITEM "1|Completa per IV direttiva"
|
||||
ITEM "2|Conti riclassificati per IV direttiva"
|
||||
ITEM "3|Conti non collegati per IV direttiva"
|
||||
ITEM "4|Completa per analisi di bilancio"
|
||||
ITEM "5|Conti riclassificati per analisi di bilancio"
|
||||
ITEM "6|Conti non collegati per analisi di bilancio"
|
||||
END
|
||||
|
||||
BOOLEAN F_SALTO_PAGINA
|
||||
BEGIN
|
||||
PROMPT 3 14 "Salto pagina per cambio gruppo "
|
||||
HELP "Indicare se si desidera un salto pagina ogni volta che cambia il gruppo"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
989
src/cg01/cg1200.cpp
Normal file
989
src/cg01/cg1200.cpp
Normal file
@ -0,0 +1,989 @@
|
||||
#include <config.h>
|
||||
#include <execp.h>
|
||||
#include <mask.h>
|
||||
#include <mailbox.h>
|
||||
#include <printapp.h>
|
||||
#include <recarray.h>
|
||||
#include <tabutil.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <comuni.h>
|
||||
#include <cfven.h>
|
||||
#include <clifo.h>
|
||||
#include <indsp.h>
|
||||
#include <mov.h>
|
||||
#include <nditte.h>
|
||||
#include <pconti.h>
|
||||
|
||||
#include "cg1.h"
|
||||
#include "cg1200a.h"
|
||||
#include "cg1200b.h"
|
||||
|
||||
#define COMRF_ALIAS 50
|
||||
#define COMNASC_ALIAS 51
|
||||
|
||||
enum pt { undefined = 0, elenco = 1, rubriche = 2, etichette = 3, vendite = 4 };
|
||||
enum pw { clienti = 1, fornitori = 2, both = 3 };
|
||||
|
||||
bool mask2_reset_fields(TMask_field& mf, KEY k);
|
||||
|
||||
class TPrintclifo_app : public TPrintapp
|
||||
{
|
||||
friend bool mask2_reset_fields(TMask_field& mf, KEY k);
|
||||
|
||||
pt _pr_type;
|
||||
pw _pr_what;
|
||||
TRelation* _rel;
|
||||
int _cur_1, _cur_2;
|
||||
int _sort;
|
||||
int _interline;
|
||||
bool _mov_only;
|
||||
TLocalisamfile* _mov;
|
||||
TLocalisamfile* _comuni;
|
||||
|
||||
// etichette
|
||||
int _startrow, _rows_et, _cols_et, _startcol;
|
||||
|
||||
// variable field slots
|
||||
TString _piva,_cpercip,_fax,_telex,_email,_name,_telefono,_indir,_localita;
|
||||
int _ges_ven;
|
||||
TString _cod_from,_cod_to,_data_stampa,_cofi,_d_c_ric,_d_alleg;
|
||||
TString _datanas,_comprov,_comnasc,_comune,_prov,_descpag;
|
||||
long _codice;
|
||||
char _tipocf,_tipoaper;
|
||||
bool _gia_iniziati_fornitori;
|
||||
|
||||
TString tmp; // Stringa per porcate galattiche
|
||||
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
|
||||
virtual bool check_autorization() const
|
||||
{return FALSE;}
|
||||
|
||||
virtual void on_firm_change();
|
||||
virtual bool preprocess_page(int file, int counter);
|
||||
virtual bool preprocess_print(int file, int counter);
|
||||
virtual print_action postprocess_print(int file, int counter);
|
||||
virtual void preprocess_header();
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual bool set_print(int);
|
||||
|
||||
int ccur() { return _sort == 1 ? _cur_1 : _cur_2; }
|
||||
|
||||
const char* look_tab(const char* tabname, TString& cod,
|
||||
const char* fld = "S0");
|
||||
const char* get_field(int ln, const char* fn)
|
||||
{ return current_cursor()->curr(ln).get(fn); }
|
||||
|
||||
virtual void set_page (int file, int counter);
|
||||
|
||||
bool ges_ven();
|
||||
void set_elenco();
|
||||
void set_rubriche();
|
||||
void set_etichette();
|
||||
void set_vendite(int f, int c) ;
|
||||
virtual bool process_link(int id, const char* txt);
|
||||
void ultimo_codice(char tipo);
|
||||
const char* compatta_ragsoc(TString& ragsoc,char tipoaper);
|
||||
void header_elenco();
|
||||
void header_rubriche();
|
||||
TRectype& look_comuni(const TString&, const TString&);
|
||||
const char* descrizione_conto_ric(int,int,long);
|
||||
const char* descrizione_allegato(char,long);
|
||||
|
||||
TPrintclifo_app() : TPrintapp(),_piva(18), _cpercip(10), _fax(50), _telex(50),
|
||||
_name(60), _telefono(90), _indir(70), _localita(90), _ges_ven(-1)
|
||||
{
|
||||
_rel = NULL; _pr_type = undefined; _startrow = 2; _startcol = 3;
|
||||
_rows_et = 9; _cols_et = 40;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* ---------------------------- Code ---------------------------------- */
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
|
||||
bool TPrintclifo_app::process_link(int id, const char* txt)
|
||||
{
|
||||
/*
|
||||
TString ss = "1|";
|
||||
ss << txt;
|
||||
TMessage fs("cg0 -1", MSG_LN, ss);
|
||||
TMailbox m;
|
||||
m.send(fs);
|
||||
TExternal_app cg0("cg0 -1");
|
||||
if (cg0.run()) beep();
|
||||
*/
|
||||
TToken_string str(txt);
|
||||
TRectype clifo(LF_CLIFO);
|
||||
clifo.put(CLI_TIPOCF, str.get(0));
|
||||
clifo.put(CLI_CODCF, str.get());
|
||||
return clifo.edit(LF_CLIFO, NULL, "cg0 -1");
|
||||
}
|
||||
|
||||
const char* TPrintclifo_app::look_tab(const char* tabname, TString& cod,
|
||||
const char* fld)
|
||||
{
|
||||
TTable tab(tabname);
|
||||
tab.curr().zero();
|
||||
tab.curr().put("CODTAB",cod);
|
||||
tab.read();
|
||||
if (tab.bad()) tab.curr().zero();
|
||||
return tab.curr().get(fld);
|
||||
}
|
||||
|
||||
const char* TPrintclifo_app::descrizione_conto_ric(int gruppo, int conto, long sottoc)
|
||||
{
|
||||
TLocalisamfile pconti(LF_PCON);
|
||||
|
||||
pconti.setkey(1);
|
||||
pconti.zero();
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
pconti.put(PCN_SOTTOCONTO, sottoc);
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
pconti.zero();
|
||||
tmp = pconti.get(PCN_DESCR);
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
const char* TPrintclifo_app::descrizione_allegato(char tipocf,long cod)
|
||||
{
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
|
||||
clifo.setkey(1);
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, tipocf);
|
||||
clifo.put(CLI_CODCF , cod);
|
||||
clifo.read();
|
||||
if (clifo.bad())
|
||||
clifo.zero();
|
||||
_tipoaper = clifo.get_char(CLI_TIPOAPER);
|
||||
tmp = clifo.get(CLI_RAGSOC);
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
TRectype& TPrintclifo_app::look_comuni(const TString& stato, const TString& cod)
|
||||
{
|
||||
_comuni->zero();
|
||||
_comuni->put(COM_COM, cod);
|
||||
_comuni->put(COM_STATO, stato);
|
||||
_comuni->read();
|
||||
if (_comuni->bad())
|
||||
_comuni->zero();
|
||||
|
||||
return _comuni->curr();
|
||||
}
|
||||
|
||||
bool TPrintclifo_app::preprocess_page(int file, int counter)
|
||||
{
|
||||
TString s;
|
||||
int g_ric,c_ric;
|
||||
long s_ric,codall;
|
||||
|
||||
switch (file)
|
||||
{
|
||||
case LF_CLIFO:
|
||||
{
|
||||
if (_mov_only)
|
||||
{
|
||||
const TString16 tipocf(get_field(LF_CLIFO,CLI_TIPOCF));
|
||||
const TString16 codice(get_field(LF_CLIFO,CLI_CODCF));
|
||||
|
||||
_mov->curr().zero();
|
||||
_mov->curr().put(MOV_TIPO, tipocf);
|
||||
_mov->curr().put(MOV_CODCF, codice);
|
||||
_mov->read();
|
||||
if (_mov->get(MOV_TIPO) != tipocf ||
|
||||
_mov->get(MOV_CODCF) != codice)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
_tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
|
||||
// set variable fields
|
||||
_cofi = get_field(LF_CLIFO, CLI_COFI);
|
||||
//_piva = get_field(LF_CLIFO, CLI_COFI);
|
||||
//if (_piva.empty()) _piva = get_field(LF_CLIFO, CLI_PAIV);
|
||||
_piva = get_field(LF_CLIFO, CLI_PAIV);
|
||||
_telefono = get_field(LF_CLIFO, CLI_PTEL);
|
||||
if (!_telefono.empty()) _telefono << "/";
|
||||
_telefono << get_field(LF_CLIFO, CLI_TEL) << " ";
|
||||
s = get_field(LF_CLIFO, CLI_PTEL2);
|
||||
if (!s.empty()) s << "/";
|
||||
_telefono << s << get_field(LF_CLIFO, CLI_TEL2) << " ";
|
||||
s = get_field(LF_CLIFO, CLI_PTEL3);
|
||||
if (!s.empty()) s << "/";
|
||||
_telefono << s << get_field(LF_CLIFO, CLI_TEL3);
|
||||
_fax = get_field(LF_CLIFO, CLI_PFAX);
|
||||
if (!_fax.empty()) _fax << "/";
|
||||
_fax << get_field(LF_CLIFO, CLI_FAX);
|
||||
_telex = get_field(LF_CLIFO, CLI_PTELEX);
|
||||
if (!_telex.empty()) _telex << "/";
|
||||
_telex << get_field(LF_CLIFO, CLI_TELEX);
|
||||
_email = get_field(LF_CLIFO, CLI_MAIL);
|
||||
const int at = _email.find('@');
|
||||
if (at > 0) _email.insert("@", at); // Raddoppia la chiocciola!
|
||||
_indir = get_field(LF_CLIFO, CLI_INDCF);
|
||||
g_ric = atoi(get_field(LF_CLIFO, CLI_GRUPPORIC));
|
||||
c_ric = atoi(get_field(LF_CLIFO, CLI_CONTORIC));
|
||||
s_ric = atol(get_field(LF_CLIFO, CLI_SOTTOCRIC));
|
||||
codall = atol(get_field(LF_CLIFO, CLI_CODALLEG));
|
||||
_datanas = get_field(LF_CLIFO, CLI_DATANASC);
|
||||
const TString16 tipoaper(get_field(LF_CLIFO, CLI_TIPOAPER));
|
||||
|
||||
_d_alleg = "";
|
||||
if (codall != 0)
|
||||
{
|
||||
_d_alleg = descrizione_allegato(_tipocf,codall);
|
||||
if (_tipoaper == 'F')
|
||||
{
|
||||
TString surname = _d_alleg.mid(30,50); surname.trim();
|
||||
_d_alleg = _d_alleg.mid(0,30); _d_alleg.trim();
|
||||
_d_alleg << " " << surname;
|
||||
}
|
||||
}
|
||||
|
||||
_d_c_ric = descrizione_conto_ric(g_ric,c_ric,s_ric);
|
||||
|
||||
_d_c_ric = _d_c_ric.mid(0,31);
|
||||
_d_alleg = _d_alleg.mid(0,26);
|
||||
|
||||
if (!_indir.empty()) _indir << " ";
|
||||
_indir << get_field(LF_CLIFO, CLI_CIVCF);
|
||||
|
||||
_localita = get_field(LF_CLIFO, CLI_LOCCF);
|
||||
if (!_localita.empty())
|
||||
_localita.trim();
|
||||
|
||||
//modifica del 27/04/1995
|
||||
TString16 comcf = get_field(LF_CLIFO, CLI_COMCF);
|
||||
TString16 stacf = get_field(LF_CLIFO, CLI_STATOCF);
|
||||
TRectype com = look_comuni(stacf,comcf);
|
||||
_comune.cut(0);
|
||||
_comprov.cut(0);
|
||||
if (_localita.not_empty())
|
||||
{
|
||||
_comune << _localita << " ";
|
||||
_comprov = _comune;
|
||||
}
|
||||
if (com.empty())
|
||||
_prov = "";
|
||||
else
|
||||
{
|
||||
_comprov << com.get(COM_DENCOM);
|
||||
_comprov << " ";
|
||||
_comprov << com.get(COM_PROVCOM);
|
||||
_comune << (com.get(COM_DENCOM));
|
||||
_comune = _comune.left(20);
|
||||
_prov = com.get(COM_PROVCOM);
|
||||
}
|
||||
TString16 comnasc = get_field(LF_CLIFO, CLI_COMNASC);
|
||||
TString16 stanasc = get_field(LF_CLIFO, CLI_STATONASC);
|
||||
TRectype comn = look_comuni(stanasc, comnasc);
|
||||
_comnasc = (comn.get(COM_DENCOM)).left(29);
|
||||
_comnasc << " ";
|
||||
_comnasc << comn.get(COM_PROVCOM);
|
||||
//fine modifica
|
||||
|
||||
_name = get_field(LF_CLIFO, CLI_RAGSOC);
|
||||
s = get_field(LF_CLIFO, CLI_CODANAGPER);
|
||||
_cpercip = "";
|
||||
|
||||
if (s.not_empty()) _cpercip << tipoaper << " " << s;
|
||||
|
||||
if (tipoaper == "F")
|
||||
{
|
||||
TString surname = _name.mid(30,50); surname.trim();
|
||||
_name = _name.mid(0,30); _name.trim();
|
||||
_name << " " << surname;
|
||||
}
|
||||
|
||||
switch(_pr_type)
|
||||
{
|
||||
case elenco:
|
||||
case rubriche:
|
||||
if (_pr_what == both)
|
||||
if (_tipocf == 'F' && !_gia_iniziati_fornitori)
|
||||
{
|
||||
_gia_iniziati_fornitori = TRUE;
|
||||
printer().formfeed();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
_descpag = get_field(LF_CLIFO, CLI_CODPAG);
|
||||
_descpag = cache().get("%CPG", _descpag, "S0");
|
||||
}
|
||||
break;
|
||||
case LF_INDSP:
|
||||
current_cursor()->items();
|
||||
if (atoi(get_field(LF_INDSP,IND_CODIND)) == 0)
|
||||
return FALSE;
|
||||
_telefono = get_field(LF_INDSP, IND_PTEL);
|
||||
if (!_telefono.empty()) _telefono << "/";
|
||||
_telefono << get_field(LF_INDSP, IND_TEL);
|
||||
_fax = get_field(LF_INDSP, IND_PFAX);
|
||||
if (!_fax.empty()) _fax << "/";
|
||||
_fax << get_field(LF_INDSP, IND_FAX);
|
||||
_localita = get_field(LF_INDSP,IND_LOCALITA);
|
||||
if (!_localita.empty())
|
||||
_localita << " - ";
|
||||
_comuni->curr().zero();
|
||||
_comuni->curr().put(COM_STATO,get_field(LF_INDSP,IND_STATO));
|
||||
_comuni->curr().put(COM_COM,get_field(LF_INDSP,IND_COM));
|
||||
_comuni->read();
|
||||
_localita << _comuni->curr().get(COM_DENCOM);
|
||||
_localita << " ";
|
||||
_localita << _comuni->curr().get(COM_PROVCOM);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
print_action TPrintclifo_app::postprocess_print(int file, int counter)
|
||||
{
|
||||
return NEXT_PAGE;
|
||||
}
|
||||
|
||||
bool rdbtype_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB)
|
||||
//every time that change focus or value, check flag to enable button
|
||||
{
|
||||
TPrintclifo_app& a = (TPrintclifo_app&)main_app();
|
||||
if (a.ges_ven())
|
||||
f.mask().enable(BUT_CG12_VENDITE);
|
||||
else
|
||||
f.mask().disable(BUT_CG12_VENDITE);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool mask_ctrl_handler(TMask_field& mf, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
mf.set_focusdirty(FALSE);
|
||||
return mf.mask().stop_run(mf.dlg());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// set printrows
|
||||
|
||||
void TPrintclifo_app::set_page(int file, int counter)
|
||||
{
|
||||
switch(_pr_type)
|
||||
{
|
||||
case elenco:
|
||||
if (file == LF_CLIFO)
|
||||
set_elenco();
|
||||
break;
|
||||
case rubriche:
|
||||
if (file == LF_CLIFO)
|
||||
set_rubriche();
|
||||
break;
|
||||
case etichette:
|
||||
if (file == LF_CLIFO)
|
||||
set_etichette();
|
||||
break;
|
||||
case vendite:
|
||||
set_vendite(file, counter);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TPrintclifo_app::ultimo_codice(char tipocf)
|
||||
{
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
|
||||
char tipopr = tipocf;
|
||||
|
||||
clifo.setkey(1);
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF,tipocf);
|
||||
|
||||
for (clifo.read();!clifo.eof();clifo.next())
|
||||
{
|
||||
char tipo = clifo.get_char(CLI_TIPOCF);
|
||||
|
||||
if (tipo != tipopr) break;
|
||||
|
||||
_codice = clifo.get_long(CLI_CODCF);
|
||||
}
|
||||
}
|
||||
|
||||
const char* TPrintclifo_app::compatta_ragsoc(TString& ragsoc,char tipoa)
|
||||
{
|
||||
if (tipoa == 'F')
|
||||
{
|
||||
TString80 cognome, nome;
|
||||
cognome = ragsoc.mid(0,30);
|
||||
nome = ragsoc.mid(30,20);
|
||||
cognome.trim(); nome.trim();
|
||||
|
||||
ragsoc = cognome;
|
||||
ragsoc << " " << nome;
|
||||
}
|
||||
|
||||
tmp = ragsoc;
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
void TPrintclifo_app::preprocess_header()
|
||||
{
|
||||
switch(_pr_type)
|
||||
{
|
||||
case elenco:
|
||||
header_elenco();
|
||||
break;
|
||||
case rubriche:
|
||||
header_rubriche();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TPrintclifo_app::header_elenco()
|
||||
{
|
||||
reset_header();
|
||||
// intestazione
|
||||
const long firm = get_firm();
|
||||
TString var;
|
||||
int j = 1;
|
||||
char tipocf;
|
||||
TLocalisamfile ditte(LF_NDITTE);
|
||||
ditte.zero();
|
||||
ditte.put(NDT_CODDITTA, firm);
|
||||
ditte.read();
|
||||
if (ditte.bad()) ditte.zero();
|
||||
TString s(ditte.get(NDT_RAGSOC));
|
||||
|
||||
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
||||
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
||||
|
||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
|
||||
if (tipocf == 'C')
|
||||
var = TR("Clienti");
|
||||
else
|
||||
if (tipocf == 'F')
|
||||
var = TR("Fornitori");
|
||||
|
||||
set_header(j, FR("Elenco %s"),(const char*) var);
|
||||
|
||||
if (_sort == 1)
|
||||
var = TR("Ordine di codice");
|
||||
else
|
||||
var = TR("Ordine alfabetico");
|
||||
|
||||
set_header(j, "@30g%s", (const char*) var);
|
||||
|
||||
if (_mov_only)
|
||||
set_header(j, FR("@55gSolo i movimentati"));
|
||||
|
||||
ultimo_codice(_tipocf);
|
||||
|
||||
set_header(j++, FR("@102gUltimo cod.utilizzato %ld") , _codice);
|
||||
|
||||
if (_pr_what != both)
|
||||
{
|
||||
if (_cod_from.not_empty() || _cod_to.not_empty())
|
||||
{
|
||||
set_header(j, TR("Estremi selezione"));
|
||||
if (_cod_from.not_empty())
|
||||
set_header(j, FR(" da %s"), (const char*) _cod_from);
|
||||
if (_cod_to.not_empty())
|
||||
set_header(j, FR(" a %s"), (const char*) _cod_to);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||
set_header(j++, TR(" Codice Ragione sociale"));
|
||||
set_header(j++, FR("@9gIndirizzo@56gC.A.P.@63gLocalita'"));
|
||||
set_header(j++, FR("@9gTelefoni@90gFAX @115gTelex"));
|
||||
set_header(j++, FR("@9gIndirizzo posta elettronica"));
|
||||
set_header(j++, FR("@9gLuogo di nascita@45gData@56gPartita IVA Codice fiscale"));
|
||||
set_header(j++, FR("@9gConto di costo/ricavo@56gCodice allegato@90gPercipiente 770"));
|
||||
set_header(j, (const char *)(TString(132).fill('-')));
|
||||
|
||||
}
|
||||
|
||||
void TPrintclifo_app::header_rubriche()
|
||||
{
|
||||
reset_header();
|
||||
// intestazione
|
||||
const long firm = get_firm();
|
||||
TString var;
|
||||
int j = 1;
|
||||
char tipocf;
|
||||
TLocalisamfile ditte(LF_NDITTE);
|
||||
ditte.zero();
|
||||
ditte.put(NDT_CODDITTA, firm);
|
||||
ditte.read();
|
||||
if (ditte.bad()) ditte.zero();
|
||||
TString s(ditte.get(NDT_RAGSOC));
|
||||
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
||||
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
||||
|
||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
|
||||
if (tipocf == 'C')
|
||||
var = TR("Clienti");
|
||||
else
|
||||
if (tipocf == 'F')
|
||||
var = TR("Fornitori");
|
||||
|
||||
set_header(j, FR("Rubrica %s"),(const char*) var);
|
||||
|
||||
if (_sort == 1)
|
||||
var = TR("Ordine di codice");
|
||||
else
|
||||
var = TR("Ordine alfabetico");
|
||||
|
||||
set_header(j, "@30g%s", (const char*) var);
|
||||
|
||||
if (_mov_only)
|
||||
set_header(j, FR("@55gSolo i movimentati"));
|
||||
|
||||
ultimo_codice(_tipocf);
|
||||
|
||||
set_header(j++, FR("@102gUltimo cod.utilizzato %ld") , _codice);
|
||||
|
||||
if (_pr_what != both)
|
||||
{
|
||||
if (_cod_from.not_empty() || _cod_to.not_empty())
|
||||
{
|
||||
set_header(j, TR("Estremi selezione"));
|
||||
if (_cod_from.not_empty())
|
||||
set_header(j, FR(" da %s"), (const char*) _cod_from);
|
||||
if (_cod_to.not_empty())
|
||||
set_header(j, FR(" a %s"), (const char*) _cod_to);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||
set_header(j++, FR(" Codice Ragione sociale@60gIndirizzo@100gC.A.P.@106gLocalita'@127gProv."));
|
||||
set_header(j++, FR("@9gPartita iva@25gTelefoni"));
|
||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void TPrintclifo_app::set_elenco()
|
||||
{
|
||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
|
||||
set_row(2,"@9g#t@56g@s@63g#t", &_indir, FLD(LF_CLIFO, CLI_CAPCF),&_comprov);
|
||||
set_row(3,"@9g#t@90g#t@115g#t", &_telefono, &_fax, &_telex);
|
||||
set_row(4,"@9g#t", &_email);
|
||||
set_row(5,"@9g#t@45g#t@56g#t@69g#t",&_comnasc, &_datanas, &_piva,&_cofi);
|
||||
set_row(6,"@9g@3n @3n @6n #t@56g@t #t@90g#t",FLD(LF_CLIFO,CLI_GRUPPORIC),
|
||||
FLD(LF_CLIFO,CLI_CONTORIC), FLD(LF_CLIFO, CLI_SOTTOCRIC),&_d_c_ric,
|
||||
FLD(LF_CLIFO, CLI_CODALLEG), &_d_alleg, &_cpercip);
|
||||
set_row(7,"@9g@s@15g#t",FLD(LF_CLIFO, CLI_CODPAG),&_descpag);
|
||||
|
||||
for(int i = 0; i < _interline; i++)
|
||||
set_row(i+7,"");
|
||||
}
|
||||
|
||||
void TPrintclifo_app::set_rubriche()
|
||||
{
|
||||
// body
|
||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO,CLI_TIPOCF),
|
||||
FLD(LF_CLIFO,CLI_CODCF,"@@@@@@"), &_name);
|
||||
set_row(1,"@60g#t@100g@s@106g#t@127g#t", &_indir, FLD(LF_CLIFO, CLI_CAPCF), &_comune, &_prov);
|
||||
set_row(2,"@9g#t@25g#t", &_piva,&_telefono);
|
||||
|
||||
for(int i = 0; i < _interline; i++)
|
||||
set_row(i+4,"");
|
||||
}
|
||||
|
||||
bool mask2_reset_fields(TMask_field& mf, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TPrintclifo_app& a = (TPrintclifo_app&)main_app();
|
||||
TMask& m = mf.mask();
|
||||
m.set(FLD_CGB_STARTROW, a._startrow);
|
||||
m.set(FLD_CGB_STARTCOL, a._startcol);
|
||||
m.set(FLD_CGB_ROWSET,a._rows_et);
|
||||
m.set(FLD_CGB_COLSET, a._cols_et);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TPrintclifo_app::set_etichette()
|
||||
{
|
||||
int r=_startrow;
|
||||
TString loccf=get_field(LF_CLIFO,CLI_LOCCF);
|
||||
|
||||
reset_header();
|
||||
int i;
|
||||
|
||||
for (i = 1; i < _startrow; i++)
|
||||
set_row(i,"");
|
||||
|
||||
set_row(r++, format("@%dg#-%dt",_startcol, _cols_et - _startcol),
|
||||
&_name);
|
||||
set_row(r++, format("@%dg#-%dt",_startcol, _cols_et - _startcol),
|
||||
&_indir);
|
||||
if (!loccf.empty())
|
||||
set_row(r++,format("@%dg#-%dt",_startcol, _cols_et - _startcol), &_localita);
|
||||
set_row(r++, format("@%dg@5s @%ds @2s",_startcol,
|
||||
_cols_et - _startcol - 9),
|
||||
FLD(LF_CLIFO, CLI_CAPCF),
|
||||
FLD(-COMRF_ALIAS, COM_DENCOM),
|
||||
FLD(-COMRF_ALIAS, COM_PROVCOM));
|
||||
|
||||
for (i = r; i <= _rows_et; i++)
|
||||
set_row(i,"");
|
||||
}
|
||||
|
||||
void TPrintclifo_app::set_vendite(int f, int c)
|
||||
|
||||
{ TString* rigs = new TString(132);
|
||||
|
||||
rigs->fill('-');
|
||||
|
||||
reset_header();
|
||||
// intestazione
|
||||
const long firm = get_firm();
|
||||
TLocalisamfile ditte(LF_NDITTE);
|
||||
ditte.zero();
|
||||
ditte.put(NDT_CODDITTA, firm);
|
||||
ditte.read();
|
||||
if (ditte.bad()) ditte.zero();
|
||||
TString s(ditte.get(NDT_RAGSOC));
|
||||
|
||||
switch (f)
|
||||
{
|
||||
case LF_CFVEN:
|
||||
/////////////////////////////////
|
||||
// Prints CFVEN information //
|
||||
/////////////////////////////////
|
||||
set_header(1, FR("Ditta %ld %s @102gData @<@125gPag @#"), firm, (const char*) s);
|
||||
set_header(2, FR("Dati Clienti/Fornitori per Vendite"));
|
||||
set_header(3, (const char *)(TString(132).fill('-')));
|
||||
set_header(4,FR(" Codice Ragione sociale"));
|
||||
set_header(5,FR("@9gNote Cli/For @25gLegale per contenz. @46gCat.Finanziaria @63gCat.Vendita @76gAss.Fiscale @93gZona @101gAgente @112gProvvigione"));
|
||||
set_header(6,FR("@9gCod.Listino @25gCod. Magazzino @46gSpese da Addeb. @63gBolli @76gSpese incasso") );
|
||||
set_header(7,FR("@9gCli/For ass. @25gCod. Meccanografico @46gGest. Contratto @63gRid. Iva @76gUltimo sollecito @93gUltimo estr. conto @112gTitolo onorifico"));
|
||||
set_header(8,FR("@9gSconto @46gSconto Cliente@63gFatt. Sosp. @76gVs. Lettera Esenzione @112gNs. Lettera Esenz."));
|
||||
set_header(9,FR("@9gCod. ABI p.e. @25gCod. CAB p.e. @46gInd. Effetti @63gEmiss. Eff. @76gImporto Minimo @93gEffetti non acc. @112gScadenza effetti"));
|
||||
set_header(10,FR("@9gInd.Documento @25gInd. Spedizione @46gNote Documento @63gCod.Mezzo @76gPorto @93gVettori"));
|
||||
set_header(11,FR("@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione"));
|
||||
set_header(12, (const char *)(TString(132).fill('-')));
|
||||
|
||||
|
||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
|
||||
|
||||
set_row(2,"@9g@2s @25g@2s @46g@2s @63g@2s @76g@2s @93g@2s @101g@3s @112g@n",
|
||||
FLD(LF_CFVEN, CFV_CODNOTE),FLD(LF_CFVEN,CFV_CODLEG),
|
||||
FLD(LF_CFVEN,CFV_CATFIN),FLD(LF_CFVEN,CFV_CATVEN),
|
||||
FLD(LF_CFVEN,CFV_ASSFIS),FLD(LF_CFVEN,CFV_CODZONA),
|
||||
FLD(LF_CFVEN,CFV_CODAG),FLD(LF_CFVEN,CFV_PERCPROVV));
|
||||
|
||||
set_row(3,"@9g@5s @25g@3s @46g@3s @3s @3s @3s @63g@f @76g@n ",
|
||||
FLD(LF_CFVEN,CFV_CODLIST),FLD(LF_CFVEN,CFV_CODMAG),
|
||||
FLD(LF_CFVEN,CFV_CODSP1),FLD(LF_CFVEN,CFV_CODSP2),
|
||||
FLD(LF_CFVEN,CFV_CODSP3),FLD(LF_CFVEN,CFV_CODSP4),
|
||||
FLD(LF_CFVEN,CFV_ADDBOLLI),
|
||||
FLD(LF_CFVEN,CFV_PERCSPINC));
|
||||
|
||||
set_row(4,"@9g@pn @25g@s @46g@f @63g@f @76g@d @93g@d @112g@2s",
|
||||
FLD(LF_CLIFO,CLI_CODCFASS,"@@@@@@"),
|
||||
FLD(LF_CFVEN,CFV_CODPRCF),FLD(LF_CFVEN,CFV_GESTCONTR),
|
||||
FLD(LF_CFVEN,CFV_IVARID),FLD(LF_CFVEN,CFV_DATAESC),
|
||||
FLD(LF_CFVEN,CFV_DATASOLL),FLD(LF_CFVEN,CFV_TITOLO));
|
||||
|
||||
set_row(5,"@9g@25s @46g@4s @63g@f @76g@s del @d @112g@s del @d",
|
||||
FLD(LF_CFVEN,CFV_SCONTO),
|
||||
FLD(LF_CFVEN,CFV_CODSCC),FLD(LF_CFVEN,CFV_FATTSOSP),
|
||||
FLD(LF_CFVEN,CFV_VSNRPROT),FLD(LF_CFVEN,CFV_VSDATAREG),
|
||||
FLD(LF_CFVEN,CFV_NSNPROT),FLD(LF_CFVEN,CFV_NSDATAREG));
|
||||
|
||||
set_row(6,"@9g@5pn @25g@5pn @46g@3,rn @63g@f @76g@pn @93g@s @112g@s",
|
||||
FLD(LF_CFVEN,CFV_CODABIPR,"@@@@@"),
|
||||
FLD(LF_CFVEN,CFV_CODCABPR,"@@@@@"),
|
||||
FLD(LF_CFVEN,CFV_CODINDEFF),FLD(LF_CFVEN,CFV_EMEFFRICH),
|
||||
FLD(LF_CFVEN,CFV_IMPMINEFF,"."),
|
||||
FLD(LF_CFVEN,CFV_NONACCEFF),
|
||||
FLD(LF_CFVEN,CFV_NONSCADEFF));
|
||||
|
||||
set_row(7,"@9g@3,rn @25g@3,rn @46g@2s @53g@2s @63g@2s @76g@2s @93g@3pn @96g@3pn @103g@3pn",
|
||||
FLD(LF_CFVEN,CFV_CODINDDOC),FLD(LF_CFVEN,CFV_CODINDSP),
|
||||
FLD(LF_CFVEN,CFV_CODNOTESP1),FLD(LF_CFVEN,CFV_CODNOTESP2),
|
||||
FLD(LF_CFVEN,CFV_CODSPMEZZO),FLD(LF_CFVEN,CFV_CODPORTO),
|
||||
FLD(LF_CFVEN,CFV_CODVETT1,"@@@"),
|
||||
FLD(LF_CFVEN,CFV_CODVETT2,"@@@"),
|
||||
FLD(LF_CFVEN,CFV_CODVETT3,"@@@"));
|
||||
|
||||
set_row(8,"@9g@s @25g@15,rpn @46g@15,rpn @63g@n @76g@2s",
|
||||
FLD(LF_CFVEN,CFV_RAGGOR),FLD(LF_CFVEN,CFV_MINORD,"."),
|
||||
FLD(LF_CFVEN,CFV_MAXORD,"."),FLD(LF_CFVEN,CFV_PREVORD),
|
||||
FLD(LF_CFVEN,CFV_TIPOEVORD));
|
||||
if (current_cursor()->is_first_match(LF_INDSP))
|
||||
{ // Test whether there are any Addresses. If so, prints
|
||||
// the header.
|
||||
set_row(9,"");
|
||||
set_row(10,FR("@9gIndirizzi di Spedizione"));
|
||||
set_row(11,"@9g%t",rigs);
|
||||
set_row(12,FR("@9gCodice @17gRagione Sociale"));
|
||||
set_row(13,FR("@17gIndirizzo @65gC.A.P. @72gLocalita"));
|
||||
set_row(14,FR("@17gIndirizzo aggiuntivo"));
|
||||
set_row(15,FR("@17gTelefono @60gFax @102gRiduzione IVA"));
|
||||
set_row(16,"@9g%t",rigs);
|
||||
} else
|
||||
for (int i=0;i<_interline;i++)
|
||||
set_row(i+9,"");
|
||||
break;
|
||||
/////////////////////////////////////////
|
||||
// End of printing CFVEN information //
|
||||
/////////////////////////////////////////
|
||||
case LF_INDSP:
|
||||
//////////////////////////////////////////////////
|
||||
// Prints INDSP information for each customer //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
{
|
||||
int row = 1;
|
||||
|
||||
set_row(row++,"@9g@pn @17g@s",FLD(LF_INDSP,IND_CODIND,"@@@"),
|
||||
FLD(LF_INDSP,IND_RAGSOC));
|
||||
set_row(row++,"@17g@s @s @65g@s @72g#t",FLD(LF_INDSP,IND_INDIR),
|
||||
FLD(LF_INDSP,IND_CIV),FLD(LF_INDSP,IND_CAP), &_localita);
|
||||
set_row(row++,"@17g@s",FLD(LF_INDSP,IND_INDIR2));
|
||||
set_row(row++,"@17g#t @60g#t @102g@f",&_telefono,&_fax,
|
||||
FLD(LF_INDSP,IND_IVARID));
|
||||
current_cursor()->save_status();
|
||||
if (!current_cursor()->next_match(LF_INDSP))
|
||||
for (int i=0;i<_interline;i++)
|
||||
set_row(i+4,"");
|
||||
else
|
||||
set_row(4,"");
|
||||
current_cursor()->restore_status();
|
||||
}
|
||||
/////////////////////////////////////////
|
||||
// End of printing INDSP information //
|
||||
/////////////////////////////////////////
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
delete rigs;
|
||||
}
|
||||
|
||||
bool TPrintclifo_app::set_print(int)
|
||||
{
|
||||
disable_links();
|
||||
set_multiple_link(FALSE);
|
||||
|
||||
TMask mask("cg1200a.msk");
|
||||
|
||||
mask.set_handler(RDB_CG12_TYPE, rdbtype_handler);
|
||||
mask.set_handler(BUT_CG12_ELENCO, mask_ctrl_handler);
|
||||
mask.set_handler(BUT_CG12_RUBRICHE, mask_ctrl_handler);
|
||||
mask.set_handler(BUT_CG12_ETICHETTE, mask_ctrl_handler);
|
||||
mask.run();
|
||||
|
||||
force_setpage(FALSE);
|
||||
// set print type
|
||||
switch (mask.last_key())
|
||||
{
|
||||
case K_ESC:
|
||||
case K_QUIT:
|
||||
return FALSE;
|
||||
break;
|
||||
case BUT_CG12_ELENCO:
|
||||
_pr_type = elenco;
|
||||
break;
|
||||
case BUT_CG12_ETICHETTE:
|
||||
{
|
||||
TMask mask2("cg1200b.msk");
|
||||
|
||||
/* TBI read/save from - to config file */
|
||||
_pr_type = etichette;
|
||||
|
||||
mask2.set_handler(BUT_CGB_RESET, mask2_reset_fields);
|
||||
|
||||
mask2.field(FLD_CGB_ROWSET).set(format("%d",_rows_et));
|
||||
mask2.field(FLD_CGB_COLSET).set(format("%d",_cols_et));
|
||||
|
||||
mask2.field(FLD_CGB_STARTROW).set(format("%d",_startrow));
|
||||
mask2.field(FLD_CGB_STARTCOL).set(format("%d",_startcol));
|
||||
|
||||
// set defaults
|
||||
|
||||
if (mask2.run() == K_ESC)
|
||||
return FALSE;
|
||||
|
||||
_startrow = atoi(mask2.get(FLD_CGB_STARTROW));
|
||||
_startcol = atoi(mask2.get(FLD_CGB_STARTCOL));
|
||||
_rows_et = atoi(mask2.get(FLD_CGB_ROWSET));
|
||||
_cols_et = atoi(mask2.get(FLD_CGB_COLSET));
|
||||
force_setpage();
|
||||
break;
|
||||
}
|
||||
case BUT_CG12_RUBRICHE:
|
||||
_pr_type = rubriche;
|
||||
break;
|
||||
case BUT_CG12_VENDITE:
|
||||
_pr_type = vendite;
|
||||
force_setpage();
|
||||
break;
|
||||
}
|
||||
|
||||
if (_pr_type != etichette)
|
||||
{
|
||||
set_multiple_link(TRUE);
|
||||
enable_link(TR("Collegamento clienti e fornitori : "), 'b');
|
||||
}
|
||||
|
||||
_sort = mask.get_int(RDB_CG12_SORT);
|
||||
_pr_what = (pw) mask.get_int(RDB_CG12_TYPE);
|
||||
_interline = mask.get_int(LST_CG12_INTERLINE);
|
||||
_mov_only = mask.get_bool(CHK_CG12_MOVIM);
|
||||
char tipoafr = mask.get(F_TIPOAPERFR)[0];
|
||||
char tipoato = mask.get(F_TIPOAPERTO)[0];
|
||||
TDate data_stampa (mask.get(F_DATA_STAMPA));
|
||||
_data_stampa = data_stampa.string();
|
||||
_codice = 0;
|
||||
|
||||
select_cursor(ccur());
|
||||
|
||||
TRectype tr1(current_cursor()->curr());
|
||||
tr1.zero();
|
||||
TRectype tr2(tr1);
|
||||
|
||||
if (_pr_what != both)
|
||||
{
|
||||
// filter
|
||||
tr1.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F");
|
||||
tr2.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F");
|
||||
short fromid, toid;
|
||||
TString16 nome_campo;
|
||||
|
||||
if (_sort == 1)
|
||||
{
|
||||
fromid = (_pr_what == clienti) ? FLD_CLI_CODFR : FLD_FOR_CODFR;
|
||||
toid = (_pr_what == clienti) ? FLD_CLI_CODTO : FLD_FOR_CODTO;
|
||||
nome_campo = CLI_CODCF;
|
||||
}
|
||||
else
|
||||
{
|
||||
fromid = (_pr_what == clienti) ? FLD_CLI_RAGSOCFR : FLD_FOR_RAGSOCFR;
|
||||
toid = (_pr_what == clienti) ? FLD_CLI_RAGSOCTO : FLD_FOR_RAGSOCTO;
|
||||
nome_campo = CLI_RAGSOC;
|
||||
}
|
||||
TString cod_from(mask.get(fromid));
|
||||
TString cod_to(mask.get(toid));
|
||||
|
||||
if (cod_from.not_empty()) tr1.put(nome_campo, cod_from);
|
||||
if (cod_to.not_empty()) tr2.put(nome_campo, cod_to);
|
||||
|
||||
if (_sort == 1)
|
||||
{
|
||||
_cod_from = cod_from;
|
||||
_cod_to = cod_to;
|
||||
}
|
||||
else
|
||||
{
|
||||
_cod_from = compatta_ragsoc(cod_from,tipoafr);
|
||||
_cod_to = compatta_ragsoc(cod_to,tipoato);
|
||||
}
|
||||
}
|
||||
current_cursor()->setregion(tr1, tr2);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool TPrintclifo_app::preprocess_print(int file, int counter)
|
||||
{
|
||||
reset_print();
|
||||
if (_pr_type == undefined)
|
||||
return set_print(counter);
|
||||
|
||||
if (file == LF_CLIFO)
|
||||
if (_pr_what == both)
|
||||
_gia_iniziati_fornitori = FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TPrintclifo_app::on_firm_change()
|
||||
{
|
||||
TConfig c(CONFIG_DITTA, "cg");
|
||||
_ges_ven = c.get_bool("GesVen");
|
||||
}
|
||||
|
||||
bool TPrintclifo_app::ges_ven()
|
||||
{
|
||||
if (_ges_ven < 0)
|
||||
on_firm_change();
|
||||
return _ges_ven != 0;
|
||||
}
|
||||
|
||||
bool TPrintclifo_app::user_create()
|
||||
{
|
||||
// set relation and cursors
|
||||
_rel = new TRelation(LF_CLIFO);
|
||||
_rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF", 1, 0, COMRF_ALIAS);
|
||||
_rel->add(LF_COMUNI, "STATO==STATONASC|COM==COMNASC", 1, 0, COMNASC_ALIAS);
|
||||
if (ges_ven())
|
||||
{
|
||||
_rel->add(LF_CFVEN,"TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
_rel->add(LF_INDSP,"TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
}
|
||||
|
||||
_mov = new TLocalisamfile(LF_MOV); _mov->setkey(3);
|
||||
_comuni = new TLocalisamfile(LF_COMUNI);
|
||||
_cur_1 = add_cursor(new TCursor(_rel,"",1));
|
||||
_cur_2 = add_cursor(new TCursor(_rel,"",2));
|
||||
add_file(LF_CLIFO);
|
||||
if (ges_ven())
|
||||
{
|
||||
add_file(LF_CFVEN,LF_CLIFO);
|
||||
add_file(LF_INDSP,LF_CLIFO);
|
||||
}
|
||||
set_magic_currency(TRUE);
|
||||
enable_print_menu();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TPrintclifo_app::user_destroy()
|
||||
{
|
||||
if (_rel)
|
||||
delete _rel;
|
||||
delete _mov;
|
||||
delete _comuni;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg1200(int argc, char* argv[])
|
||||
{
|
||||
TPrintclifo_app app;
|
||||
app.run(argc, argv, TR("Stampa Clienti/Fornitori"));
|
||||
return 0;
|
||||
}
|
23
src/cg01/cg1200a.h
Normal file
23
src/cg01/cg1200a.h
Normal file
@ -0,0 +1,23 @@
|
||||
#define RDB_CG12_TYPE 100
|
||||
#define RDB_CG12_SORT 101
|
||||
#define FLD_CLI_CODFR 102
|
||||
#define FLD_CLI_CODTO 103
|
||||
#define FLD_CLI_RAGSOCFR 104
|
||||
#define FLD_CLI_RAGSOCTO 105
|
||||
#define FLD_FOR_CODFR 106
|
||||
#define FLD_FOR_CODTO 107
|
||||
#define FLD_FOR_RAGSOCFR 109
|
||||
#define FLD_FOR_RAGSOCTO 110
|
||||
#define CHK_CG12_MOVIM 111
|
||||
#define LST_CG12_INTERLINE 112
|
||||
#define CHK_CG12_INCLDI 113
|
||||
#define BUT_CG12_ELENCO 115
|
||||
#define BUT_CG12_RUBRICHE 116
|
||||
#define BUT_CG12_ETICHETTE 117
|
||||
#define BUT_CG12_VENDITE 118
|
||||
#define F_CODDITTA 119
|
||||
#define F_RAGSOC 120
|
||||
#define F_DATA_STAMPA 121
|
||||
#define F_TIPOAPERFR 122
|
||||
#define F_TIPOAPERTO 123
|
||||
|
265
src/cg01/cg1200a.uml
Normal file
265
src/cg01/cg1200a.uml
Normal file
@ -0,0 +1,265 @@
|
||||
#include "cg1200a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 0 0 2
|
||||
|
||||
BUTTON BUT_CG12_ELENCO 10 2
|
||||
BEGIN
|
||||
PROMPT 4 14 "~Elenco"
|
||||
PICTURE TOOL_PRINTELENCO
|
||||
MESSAGE EXIT,BUT_CG12_ELENCO
|
||||
END
|
||||
|
||||
BUTTON BUT_CG12_RUBRICHE 10 2
|
||||
BEGIN
|
||||
PROMPT 16 14 "~Rubriche"
|
||||
PICTURE TOOL_PRINTRUBRICA
|
||||
MESSAGE EXIT,BUT_CG12_RUBRICHE
|
||||
END
|
||||
|
||||
BUTTON BUT_CG12_ETICHETTE 10 2
|
||||
BEGIN
|
||||
PROMPT 28 14 "E~tichette"
|
||||
PICTURE TOOL_PRINTETICH
|
||||
MESSAGE EXIT,BUT_CG12_ETICHETTE
|
||||
END
|
||||
|
||||
BUTTON BUT_CG12_VENDITE 10 2
|
||||
BEGIN
|
||||
PROMPT 40 14 "~Vendite"
|
||||
PICTURE TOOL_PRINTSCHEDE
|
||||
MESSAGE EXIT,BUT_CG12_VENDITE
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
PICTURE 0
|
||||
END
|
||||
|
||||
BUTTON DLG_SETPRINT 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Imposta"
|
||||
PICTURE TOOL_SETPRINT
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
PICTURE 0
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Selezione" -1 -1 70 19
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione sociale @50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DATA_STAMPA
|
||||
BEGIN
|
||||
PROMPT 42 1 "Data di stampa "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
RADIOBUTTON RDB_CG12_TYPE 24
|
||||
BEGIN
|
||||
PROMPT 4 4 "Oggetto"
|
||||
HELP "Selezionare l'archivio che si desidera stampare"
|
||||
ITEM "1|Clienti" MESSAGE RESET,2@|SHOW,1@|HIDE,2@
|
||||
ITEM "2|Fornitori" MESSAGE RESET,1@|SHOW,2@|HIDE,1@
|
||||
ITEM "3|Entrambi" MESSAGE HIDE,1@|HIDE,2@|RESET,1@|RESET,2@
|
||||
END
|
||||
|
||||
RADIOBUTTON RDB_CG12_SORT 24
|
||||
BEGIN
|
||||
PROMPT 4 9 "Ordinamento"
|
||||
HELP "Selezionare il tipo di ordinamento dei record stampati"
|
||||
ITEM "1|per Codice" MESSAGE CLEAR,4@|ENABLE,3@
|
||||
ITEM "2|per Ragione Sociale" MESSAGE CLEAR,3@|ENABLE,4@
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 35 10
|
||||
BEGIN
|
||||
PROMPT 32 4 "Selezione "
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 34 8 "da Ragione Sociale/Nominativo"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 34 10 "a Ragione Sociale/Nominativo"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 34 5 "da Codice"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 48 5 "a Codice"
|
||||
END
|
||||
|
||||
STRING FLD_CLI_CODFR 6
|
||||
BEGIN
|
||||
PROMPT 34 6 ""
|
||||
USE LF_CLIFO KEY 1
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF FLD_CLI_CODFR
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
OUTPUT FLD_CLI_CODFR CODCF
|
||||
GROUP 1 3
|
||||
HELP "Codice di inizio stampa: vuoto = inizio archivio"
|
||||
END
|
||||
|
||||
STRING FLD_CLI_CODTO 6
|
||||
BEGIN
|
||||
PROMPT 48 6 ""
|
||||
COPY USE FLD_CLI_CODFR
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF FLD_CLI_CODTO
|
||||
COPY DISPLAY FLD_CLI_CODFR
|
||||
OUTPUT FLD_CLI_CODTO CODCF
|
||||
GROUP 1 3
|
||||
HELP "Codice di fine stampa: vuoto = fine archivio"
|
||||
NUM_EXPR {(#THIS_FIELD == 0) || (#THIS_FIELD >= #FLD_CLI_CODFR)}
|
||||
WARNING "Limite superiore errato"
|
||||
END
|
||||
|
||||
STRING FLD_CLI_RAGSOCFR 50 29
|
||||
BEGIN
|
||||
PROMPT 34 9 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC FLD_CLI_RAGSOCFR
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
OUTPUT FLD_CLI_RAGSOCFR RAGSOC
|
||||
OUTPUT F_TIPOAPERFR TIPOAPER
|
||||
GROUP 1 4
|
||||
HELP "Ragione sociale di inizio stampa: vuoto = inizio archivio"
|
||||
END
|
||||
|
||||
STRING FLD_CLI_RAGSOCTO 50 29
|
||||
BEGIN
|
||||
PROMPT 34 11 ""
|
||||
COPY USE FLD_CLI_RAGSOCFR
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC FLD_CLI_RAGSOCTO
|
||||
COPY DISPLAY FLD_CLI_RAGSOCFR
|
||||
OUTPUT FLD_CLI_RAGSOCTO RAGSOC
|
||||
OUTPUT F_TIPOAPERTO TIPOAPER
|
||||
GROUP 1 4
|
||||
HELP "Ragione sociale di fine stampa: vuoto = fine archivio"
|
||||
STR_EXPR {(#THIS_FIELD == "") || (#THIS_FIELD >= #FLD_CLI_RAGSOCFR)}
|
||||
WARNING "Limite superiore errato"
|
||||
END
|
||||
|
||||
STRING FLD_FOR_CODFR 6
|
||||
BEGIN
|
||||
PROMPT 34 6 ""
|
||||
COPY USE FLD_CLI_CODFR
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF FLD_FOR_CODFR
|
||||
COPY DISPLAY FLD_CLI_CODFR
|
||||
OUTPUT FLD_FOR_CODFR CODCF
|
||||
GROUP 2 3
|
||||
HELP "Codice C/F di inizio stampa: vuoto = inizio archivio"
|
||||
END
|
||||
|
||||
STRING FLD_FOR_CODTO 6
|
||||
BEGIN
|
||||
PROMPT 48 6 ""
|
||||
COPY USE FLD_FOR_CODFR
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF FLD_FOR_CODTO
|
||||
COPY DISPLAY FLD_CLI_CODFR
|
||||
OUTPUT FLD_FOR_CODTO CODCF
|
||||
GROUP 2 3
|
||||
HELP "Codice C/F di fine stampa: vuoto = fine archivio"
|
||||
NUM_EXPR {(#THIS_FIELD == 0) || (#THIS_FIELD >= #FLD_FOR_CODFR)}
|
||||
WARNING "Limite superiore errato"
|
||||
END
|
||||
|
||||
STRING FLD_FOR_RAGSOCFR 50 29
|
||||
BEGIN
|
||||
PROMPT 34 9 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC FLD_FOR_RAGSOCFR
|
||||
COPY DISPLAY FLD_CLI_RAGSOCFR
|
||||
OUTPUT FLD_FOR_RAGSOCFR RAGSOC
|
||||
OUTPUT F_TIPOAPERFR TIPOAPER
|
||||
GROUP 2 4
|
||||
HELP "Ragione sociale di inizio stampa: vuoto = inizio archivio"
|
||||
END
|
||||
|
||||
STRING FLD_FOR_RAGSOCTO 50 29
|
||||
BEGIN
|
||||
PROMPT 34 11 ""
|
||||
COPY USE FLD_FOR_RAGSOCFR
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC FLD_FOR_RAGSOCTO
|
||||
COPY DISPLAY FLD_CLI_RAGSOCFR
|
||||
OUTPUT FLD_FOR_RAGSOCTO RAGSOC
|
||||
OUTPUT F_TIPOAPERTO TIPOAPER
|
||||
GROUP 2 4
|
||||
HELP "Ragione sociale di fine stampa: vuoto = fine archivio"
|
||||
STR_EXPR {(#THIS_FIELD == "") || (#THIS_FIELD >= #FLD_FOR_RAGSOCFR)}
|
||||
WARNING "Limite superiore errato"
|
||||
END
|
||||
|
||||
STRING F_TIPOAPERFR 1
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
FLAGS "HD"
|
||||
END
|
||||
|
||||
STRING F_TIPOAPERTO 1
|
||||
BEGIN
|
||||
PROMPT 2 2 ""
|
||||
FLAGS "HD"
|
||||
END
|
||||
|
||||
BOOLEAN CHK_CG12_MOVIM
|
||||
BEGIN
|
||||
PROMPT 4 13 "Solo movimentati"
|
||||
HELP "Indicare se stampare solo inclusi archivio movimenti"
|
||||
END
|
||||
|
||||
LIST LST_CG12_INTERLINE 2
|
||||
BEGIN
|
||||
PROMPT 4 14 "Righe interlinea "
|
||||
ITEM "0|0"
|
||||
ITEM "1|1"
|
||||
ITEM "2|2"
|
||||
HELP "Indicare il numero di righe di interlinea tra i nominativi"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
5
src/cg01/cg1200b.h
Normal file
5
src/cg01/cg1200b.h
Normal file
@ -0,0 +1,5 @@
|
||||
#define FLD_CGB_STARTROW 100
|
||||
#define FLD_CGB_STARTCOL 101
|
||||
#define FLD_CGB_ROWSET 102
|
||||
#define FLD_CGB_COLSET 103
|
||||
#define BUT_CGB_RESET 104
|
53
src/cg01/cg1200b.uml
Normal file
53
src/cg01/cg1200b.uml
Normal file
@ -0,0 +1,53 @@
|
||||
#include "cg1200b.h"
|
||||
PAGE "Impostazione etichette" -1 -1 45 12
|
||||
|
||||
NUMBER FLD_CGB_STARTROW 4
|
||||
BEGIN
|
||||
PROMPT 2 1 "Riga di inizio in etichetta "
|
||||
FLAGS "R"
|
||||
HELP "Prima riga da stampare nell'etichetta"
|
||||
END
|
||||
|
||||
NUMBER FLD_CGB_STARTCOL 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Colonna di inizio in etichetta "
|
||||
FLAGS "R"
|
||||
HELP "Margine sinistro desiderato"
|
||||
END
|
||||
|
||||
NUMBER FLD_CGB_ROWSET 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "N. totale di righe etichetta "
|
||||
FLAGS "R"
|
||||
HELP "Numero totale di righe per etichetta (altezza)"
|
||||
END
|
||||
|
||||
NUMBER FLD_CGB_COLSET 4
|
||||
BEGIN
|
||||
PROMPT 2 7 "N. totale colonne etichetta "
|
||||
FLAGS "R"
|
||||
HELP "Numero totale di colonne per etichetta (larghezza)"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON BUT_CGB_RESET 2 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 "~Reset"
|
||||
PICTURE TOOL_RESET
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "Annulla"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
160
src/cg01/cg1300.cpp
Normal file
160
src/cg01/cg1300.cpp
Normal file
@ -0,0 +1,160 @@
|
||||
//********************************
|
||||
//* Aggiornamento Tipo Attivita' *
|
||||
//********************************
|
||||
#include <applicat.h>
|
||||
#include <isam.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
|
||||
#include "cg1.h"
|
||||
#include "cg1301.h"
|
||||
#include "cg1302.h"
|
||||
#include "cg1303.h"
|
||||
#include "cg1304.h"
|
||||
#include "cg1305.h"
|
||||
#include "cg1306.h"
|
||||
#include "cg1313.h"
|
||||
#include "cg1314.h"
|
||||
|
||||
#include "cglib.h"
|
||||
|
||||
#include <mov.h>
|
||||
|
||||
|
||||
class TAgg_attiv : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
void elabora_mov();
|
||||
};
|
||||
|
||||
// HIDDEN TAgg_attiv& app() { return (TAgg_attiv&)main_app(); }
|
||||
|
||||
void TAgg_attiv::main_loop()
|
||||
{
|
||||
TMask msk("cg1300a");
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
elabora_mov();
|
||||
message_box(TR("Aggiornamento completato"));
|
||||
}
|
||||
}
|
||||
|
||||
void TAgg_attiv::elabora_mov()
|
||||
{
|
||||
TRelation rel (LF_MOV);
|
||||
rel.add(LF_RMOVIVA, "NUMREG=NUMREG",1);
|
||||
TCursor cursor(&rel,"",1);
|
||||
|
||||
TLocalisamfile& mov = rel.lfile();
|
||||
TLocalisamfile& rmoviva = rel.lfile(LF_RMOVIVA);
|
||||
|
||||
//- long ditta = get_firm();
|
||||
cursor = 0L;
|
||||
const long nitems = cursor.items();
|
||||
|
||||
TProgind p(nitems ? nitems : 1, TR("Aggiornamento in corso...") , TRUE, TRUE, 70);
|
||||
|
||||
for (; cursor.pos() < cursor.items(); ++cursor)
|
||||
{
|
||||
p.addstatus(1);
|
||||
const TString16 reg(mov.get(MOV_REG));
|
||||
if (reg.empty()) continue;
|
||||
|
||||
const int annoiva = mov.get_int(MOV_ANNOIVA);
|
||||
TRegistro registro(reg, annoiva);
|
||||
const bool att_mista = registro.attivita_mista();
|
||||
|
||||
if (att_mista)
|
||||
{
|
||||
bool ok = rel.is_first_match(LF_RMOVIVA);
|
||||
while (ok)
|
||||
{
|
||||
const char tipo = rmoviva.get_char("TIPOC");
|
||||
if (tipo <= ' ')
|
||||
{
|
||||
TBill c(rmoviva.get_int("GRUPPO"), rmoviva.get_int("CONTO"), rmoviva.get_long("SOTTOCONTO"));
|
||||
int tipoatt = c.tipo_att();
|
||||
rmoviva.put("TIPOATT", tipoatt);
|
||||
rmoviva.rewrite();
|
||||
}
|
||||
ok = rel.next_match(LF_RMOVIVA);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int cg1300(int argc, char* argv[])
|
||||
{
|
||||
switch (toupper(*argv[2]))
|
||||
{
|
||||
case 'A':
|
||||
{
|
||||
TAgg_attiv a;
|
||||
a.run(argc, argv, TR("Aggiornamento tipo attività su movimenti IVA"));
|
||||
}
|
||||
break;
|
||||
case 'B': agg_iban(argc, argv); break; // cg1310
|
||||
case 'C':
|
||||
{
|
||||
TAgg_codatt a;
|
||||
a.run(argc, argv,TR("Aggiornamento codice attività"));
|
||||
}
|
||||
break;
|
||||
case 'D':
|
||||
{
|
||||
TAgg_datacomp a;
|
||||
a.run(argc, argv,TR("Aggiornamento data competenza"));
|
||||
}
|
||||
break;
|
||||
case 'E':
|
||||
{
|
||||
TAgg_codes a;
|
||||
a.run(argc, argv,TR("Aggiornamento codice esercizio"));
|
||||
}
|
||||
break;
|
||||
case 'F':
|
||||
{
|
||||
TAgg_tipodoc a;
|
||||
a.run(argc, argv,TR("Aggiornamento Tipo documento"));
|
||||
}
|
||||
break;
|
||||
case 'I': agg_opintra(argc, argv); break;
|
||||
case 'L': controlla_PIVA(argc, argv); break; // cg1309
|
||||
case 'P':
|
||||
{
|
||||
TAgg_nprot a;
|
||||
a.run(argc, argv,TR("Rinumerazione protocollo IVA"));
|
||||
}
|
||||
break;
|
||||
case 'T':
|
||||
{
|
||||
TAgg_tconto a;
|
||||
a.run(argc, argv, TR("Aggiornamento tipo conto")); // cg1302
|
||||
}
|
||||
break;
|
||||
case 'U':
|
||||
{
|
||||
TAgg_tcontoCF a;
|
||||
a.run(argc, argv, TR("Aggiornamento tipo conto cliente/fornitore")); // cg1314
|
||||
}
|
||||
break;
|
||||
case 'M':
|
||||
setta_meseliq(argc, argv);
|
||||
break;
|
||||
case 'X':
|
||||
xref_check(argc, argv);
|
||||
break;
|
||||
case 'V':
|
||||
controlla_ivadiff(argc, argv);
|
||||
break;
|
||||
case 'Z':
|
||||
elimina_zoppi(argc, argv);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
31
src/cg01/cg1300.h
Normal file
31
src/cg01/cg1300.h
Normal file
@ -0,0 +1,31 @@
|
||||
#ifndef __CG1300_H
|
||||
#define __CG1300_H
|
||||
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ANNO 103
|
||||
#define F_REG 104
|
||||
#define F_PROT 105
|
||||
#define F_PASS 106
|
||||
#define F_DA 107
|
||||
#define F_A 108
|
||||
#define F_DENATTV 109
|
||||
#define F_DENATTN 110
|
||||
#define F_MODE 111
|
||||
#endif // __CG1300_H
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
35
src/cg01/cg1300a.uml
Normal file
35
src/cg01/cg1300a.uml
Normal file
@ -0,0 +1,35 @@
|
||||
#include "cg1300.h"
|
||||
|
||||
PAGE "" -1 -1 70 8
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
93
src/cg01/cg1300b.uml
Normal file
93
src/cg01/cg1300b.uml
Normal file
@ -0,0 +1,93 @@
|
||||
#include "cg1300.h"
|
||||
|
||||
PAGE "Rinumerazione numero protocollo" -1 -1 62 12
|
||||
|
||||
GROUPBOX DLG_NULL 60 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bDitta"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 ""
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 9 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 60 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "@bRegistro IVA"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Anno "
|
||||
FLAGS "A"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_REG 3
|
||||
BEGIN
|
||||
PROMPT 31 4 "Codice "
|
||||
USE REG SELECT (I0<"3") && (CODTAB[1,4]==#F_ANNO)
|
||||
INPUT CODTAB[1,4] F_ANNO SELECT
|
||||
INPUT CODTAB[5,7] F_REG
|
||||
DISPLAY "Anno " CODTAB[1,4]
|
||||
DISPLAY "Codice " CODTAB[5,7]
|
||||
DISPLAY "Descrizione @40" S0
|
||||
OUTPUT F_ANNO CODTAB[1,4]
|
||||
OUTPUT F_REG CODTAB[5,7]
|
||||
OUTPUT F_DA D3
|
||||
FLAGS "U"
|
||||
VALIDATE ZEROFILL_FUNC 3
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
RADIOBUTTON F_MODE 1 24
|
||||
BEGIN
|
||||
PROMPT 1 6 "@bRipartire da "
|
||||
ITEM "U|Ultima stampa"
|
||||
MESSAGE CLEAR,F_PROT
|
||||
ITEM "N|Numero specificato"
|
||||
MESSAGE ENABLE,F_PROT
|
||||
ITEM "A|Inizio anno"
|
||||
MESSAGE CLEAR,F_PROT
|
||||
ITEM "P|Uguale a num. doc."
|
||||
MESSAGE CLEAR,F_PROT
|
||||
END
|
||||
|
||||
DATE F_DA
|
||||
BEGIN
|
||||
PROMPT 31 7 "Data "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_PROT 5
|
||||
BEGIN
|
||||
PROMPT 31 8 "Numero "
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <elabar.h>
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
105
src/cg01/cg1300c.uml
Normal file
105
src/cg01/cg1300c.uml
Normal file
@ -0,0 +1,105 @@
|
||||
#include "cg1300.h"
|
||||
|
||||
PAGE "Aggiornamento codice attivita'" -1 -1 72 12
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_PASS
|
||||
BEGIN
|
||||
PROMPT 1 4 "Passaggio dati iva a nuova attivita' "
|
||||
HELP "Indicare se richiedere o no il passaggio dati dalla vecchia alla nuova attivita'"
|
||||
//MESSAGE TRUE ENABLE,F_DA|ENABLE,F_A|REQUIRED,F_ANNO
|
||||
MESSAGE TRUE SHOW,1@
|
||||
//MESSAGE FALSE DISABLE,F_DA|DISABLE,F_A|NORMAL,F_ANNO
|
||||
MESSAGE FALSE HIDE,1@|RESET,1@
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 1 5 "Anno liquidazione iva "
|
||||
HELP "Introdurre l'anno di liquidazione iva"
|
||||
GROUP 1
|
||||
FLAGS "A"
|
||||
VALIDATE FIXLEN_FUNC 4
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DA 5
|
||||
BEGIN
|
||||
PROMPT 1 7 "DA "
|
||||
HELP "Introdurre il codice della vecchia attivita'"
|
||||
GROUP 1
|
||||
FLAGS "RZ"
|
||||
USE LF_ATTIV
|
||||
JOIN LF_NDITTE TO LF_ATTIV INTO CODDITTA=CODDITTA
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT CODATT F_DA
|
||||
DISPLAY "Codice attivita'" LF_ATTIV->CODATT
|
||||
DISPLAY "Descrizione @40" LF_ATTIV->DESCR
|
||||
OUTPUT F_DA LF_ATTIV->CODATT
|
||||
OUTPUT F_DENATTV LF_ATTIV->DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Attivita' assente"
|
||||
END
|
||||
|
||||
STRING F_DENATTV 40
|
||||
BEGIN
|
||||
PROMPT 12 7 ""
|
||||
GROUP 1
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_A 5
|
||||
BEGIN
|
||||
PROMPT 1 8 "A "
|
||||
HELP "Introdurre il codice della nuova attivita'"
|
||||
GROUP 1
|
||||
FLAGS "RZ"
|
||||
USE LF_ATTIV
|
||||
JOIN LF_NDITTE TO LF_ATTIV INTO CODDITTA=CODDITTA
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT CODATT F_A
|
||||
DISPLAY "Codice attivita'" LF_ATTIV->CODATT
|
||||
DISPLAY "Descrizione @40" LF_ATTIV->DESCR
|
||||
OUTPUT F_A LF_ATTIV->CODATT
|
||||
OUTPUT F_DENATTN LF_ATTIV->DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Attivita' assente"
|
||||
END
|
||||
|
||||
STRING F_DENATTN 40
|
||||
BEGIN
|
||||
PROMPT 12 8 ""
|
||||
GROUP 1
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
36
src/cg01/cg1300d.uml
Normal file
36
src/cg01/cg1300d.uml
Normal file
@ -0,0 +1,36 @@
|
||||
PAGE "Aggiornamento codice esercizio" -1 -1 72 12
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT -11 1 "ATTENZIONE!"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT -11 2 "Questa procedura ricalcola il codice esercizio"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT -11 3 "di tutti i movimenti di prima nota."
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT -11 4 "Si desidera continuare?"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
63
src/cg01/cg1300e.uml
Normal file
63
src/cg01/cg1300e.uml
Normal file
@ -0,0 +1,63 @@
|
||||
#include "cg1300.h"
|
||||
|
||||
PAGE "Impostazione mese liquidazione" -1 -1 78 10
|
||||
|
||||
GROUPBOX DLG_NULL 77 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bRegistro"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Anno "
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
STRING F_REG 3
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice registro "
|
||||
USE REG SELECT (I0=1)
|
||||
FLAGS "UZ"
|
||||
INPUT CODTAB[1,4] F_ANNO
|
||||
INPUT CODTAB[5,7] F_REG
|
||||
DISPLAY "Anno" CODTAB[1,4]
|
||||
DISPLAY "Codice" CODTAB[5,7]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Tipo" I0
|
||||
OUTPUT F_ANNO CODTAB[1,4]
|
||||
OUTPUT F_REG CODTAB[5,7]
|
||||
OUTPUT F_RAGSOC S0
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Registro inesistente"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 25 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_DA 5
|
||||
BEGIN
|
||||
PROMPT 2 5 "Da nr. protocollo "
|
||||
END
|
||||
|
||||
NUMBER F_A 5
|
||||
BEGIN
|
||||
PROMPT 2 6 "A nr. protocollo "
|
||||
END
|
||||
|
||||
LISTBOX F_PASS 12
|
||||
BEGIN
|
||||
PROMPT 27 5 "Mese da impostare "
|
||||
ITEM "0|<Normale>"
|
||||
FLAGS "M"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
15
src/cg01/cg1300l.h
Normal file
15
src/cg01/cg1300l.h
Normal file
@ -0,0 +1,15 @@
|
||||
#define F_TIPO 201
|
||||
#define F_CLIFO 202
|
||||
#define F_SORT 203
|
||||
#define F_RESET 204
|
||||
|
||||
#define S_DIRTY 101
|
||||
#define S_CODCF 102
|
||||
#define S_RAGSOC 103
|
||||
#define S_SOSPESO 104
|
||||
#define S_PAIV 105
|
||||
#define S_COFI 106
|
||||
#define S_ALLEG 107
|
||||
#define S_CODALLEG 108
|
||||
#define S_TIPOPERS 109
|
||||
#define S_ERROR 110
|
153
src/cg01/cg1300l.uml
Normal file
153
src/cg01/cg1300l.uml
Normal file
@ -0,0 +1,153 @@
|
||||
#include "cg1300l.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON F_RESET 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -11 "Deselezione"
|
||||
END
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -11 ""
|
||||
PICTURE TOOL_SAVEREC
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Controllo Partita IVA" 0 0 0 2
|
||||
|
||||
RADIOBUTTON F_TIPO 1 28
|
||||
BEGIN
|
||||
PROMPT 1 0 "Tipo"
|
||||
ITEM "C|Clienti"
|
||||
ITEM "F|Fornitori"
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
LISTBOX F_SORT 1 14
|
||||
BEGIN
|
||||
PROMPT 31 1 "Ordinamento "
|
||||
ITEM "1|Partita IVA"
|
||||
ITEM "2|Codice fiscale"
|
||||
ITEM "3|Codice"
|
||||
END
|
||||
|
||||
SPREADSHEET F_CLIFO 0 -1
|
||||
BEGIN
|
||||
PROMPT 0 3 ""
|
||||
ITEM "@1"
|
||||
ITEM "Codice@7"
|
||||
ITEM "Ragione Sociale@50"
|
||||
ITEM "Sospeso"
|
||||
ITEM "Partita IVA"
|
||||
ITEM "Codice Fiscale@16"
|
||||
ITEM "Allegato@28"
|
||||
ITEM "Codice allegato"
|
||||
ITEM "Tipo persona"
|
||||
ITEM "Problema riscontrato@50"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Dati" -1 -1 52 14
|
||||
|
||||
BOOLEAN S_DIRTY
|
||||
BEGIN
|
||||
PROMPT 1 0 "Modificato"
|
||||
END
|
||||
|
||||
NUMBER S_CODCF 7
|
||||
BEGIN
|
||||
PROMPT 21 0 "Codice "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S_SOSPESO
|
||||
BEGIN
|
||||
PROMPT 1 3 "Sospeso"
|
||||
END
|
||||
|
||||
STRING S_PAIV 12
|
||||
BEGIN
|
||||
PROMPT 1 4 "Partita IVA "
|
||||
END
|
||||
|
||||
STRING S_COFI 16
|
||||
BEGIN
|
||||
PROMPT 1 5 "Codice Fiscale "
|
||||
END
|
||||
|
||||
BUTTON DLG_USER 10 2
|
||||
BEGIN
|
||||
PROMPT -1 4 "Allinea"
|
||||
END
|
||||
|
||||
LISTBOX S_ALLEG 1 28
|
||||
BEGIN
|
||||
PROMPT 1 6 "Allegato "
|
||||
ITEM "0|Valido per allegato IVA"
|
||||
ITEM "1|Non valido per allegato IVA"
|
||||
ITEM "2|Occasionale"
|
||||
ITEM "3|Documenti riepilogativi"
|
||||
ITEM "4|Codice fiscale già inserito"
|
||||
ITEM "5|Estero CEE"
|
||||
ITEM "6|Privato"
|
||||
ITEM "7|Ente pubblico"
|
||||
ITEM "8|Fallimento/proc.concorsuale"
|
||||
ITEM "9|Estero NON CEE"
|
||||
ITEM "C|Scheda carburante"
|
||||
ITEM "G|Gruppo IVA"
|
||||
END
|
||||
|
||||
NUMBER S_CODALLEG 7
|
||||
BEGIN
|
||||
PROMPT 1 7 "Codice allegato"
|
||||
END
|
||||
|
||||
LISTBOX S_TIPOPERS 1 9
|
||||
BEGIN
|
||||
PROMPT 1 8 "Allegato "
|
||||
ITEM "F|Fisica"
|
||||
ITEM "1|Giuridica"
|
||||
END
|
||||
|
||||
MEMO S_ERROR 50 3
|
||||
BEGIN
|
||||
PROMPT 1 9 "Problema riscontrato"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_LINK 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
PICTURE TOOL_LINK
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
3
src/cg01/cg1300m.h
Normal file
3
src/cg01/cg1300m.h
Normal file
@ -0,0 +1,3 @@
|
||||
#define F_CODDITTA 201
|
||||
#define F_RAGSOC 202
|
||||
|
43
src/cg01/cg1300m.uml
Normal file
43
src/cg01/cg1300m.uml
Normal file
@ -0,0 +1,43 @@
|
||||
#include "cg1300m.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
|
||||
BUTTON DLG_ELABORA 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -11 "~Elabora"
|
||||
PICTURE TOOL_ELABORA
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Controllo IVA Differita" 0 0 0 2
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
4
src/cg01/cg1300n.h
Normal file
4
src/cg01/cg1300n.h
Normal file
@ -0,0 +1,4 @@
|
||||
#define F_CODDITTA 201
|
||||
#define F_RAGSOC 202
|
||||
#define F_UPDCAUS 203
|
||||
#define F_UPDMOV 204
|
53
src/cg01/cg1300n.uml
Normal file
53
src/cg01/cg1300n.uml
Normal file
@ -0,0 +1,53 @@
|
||||
#include "cg1300n.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
|
||||
BUTTON DLG_ELABORA 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -11 "~Elabora"
|
||||
PICTURE TOOL_ELABORA
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Aggiornamento tipo conto clienti/fornitori" 0 0 0 2
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ditta "
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Ragione sociale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_UPDCAUS
|
||||
BEGIN
|
||||
PROMPT 2 6 "Aggiorno le causali"
|
||||
END
|
||||
|
||||
BOOLEAN F_UPDMOV
|
||||
BEGIN
|
||||
PROMPT 2 8 "Aggiorno i movimenti"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
111
src/cg01/cg1301.cpp
Normal file
111
src/cg01/cg1301.cpp
Normal file
@ -0,0 +1,111 @@
|
||||
//**************************************************
|
||||
//* Aggiornamento Flag Operazioni Intracomunitarie *
|
||||
//**************************************************
|
||||
|
||||
#include <applicat.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmoviva.h>
|
||||
#include <causali.h>
|
||||
|
||||
|
||||
class TAgg_opintra : public TApplication
|
||||
{
|
||||
TLocalisamfile* _causali;
|
||||
|
||||
public:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
|
||||
void look_mov();
|
||||
|
||||
TAgg_opintra() {};
|
||||
virtual ~TAgg_opintra() {};
|
||||
};
|
||||
|
||||
bool TAgg_opintra::create()
|
||||
{
|
||||
const bool ok = TApplication::create();
|
||||
if (ok)
|
||||
{
|
||||
_causali = new TLocalisamfile(LF_ATTIV);
|
||||
dispatch_e_menu (BAR_ITEM_ID(1));
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TAgg_opintra::destroy()
|
||||
{
|
||||
delete _causali;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
bool TAgg_opintra::menu(MENU_TAG m)
|
||||
{
|
||||
TMask msk("cg1300a");
|
||||
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
look_mov();
|
||||
message_box(TR("Aggiornamento completato"));
|
||||
//return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void TAgg_opintra::look_mov()
|
||||
{
|
||||
TLocalisamfile caus(LF_CAUSALI);
|
||||
|
||||
TRelation rel (LF_MOV);
|
||||
rel.add(LF_RMOVIVA, "NUMREG=NUMREG",1);
|
||||
TCursor cursor(&rel,"",1);
|
||||
|
||||
TLocalisamfile& mov = rel.lfile();
|
||||
TLocalisamfile& rmoviva = rel.lfile(LF_RMOVIVA);
|
||||
|
||||
// long ditta = get_firm();
|
||||
cursor = 0L;
|
||||
const long nitems = cursor.items();
|
||||
|
||||
TProgind p(nitems ? nitems : 1, TR("Aggiornamento in corso...") , TRUE, TRUE, 70);
|
||||
|
||||
for (; cursor.pos() < cursor.items(); ++cursor)
|
||||
{
|
||||
p.addstatus(1);
|
||||
const TString16 reg(mov.get(MOV_REG));
|
||||
if (reg.empty()) continue;
|
||||
|
||||
const TDate& datareg = mov.get_date(MOV_DATAREG);
|
||||
if (datareg.year() < 1993) continue; // Meglio cosi'
|
||||
|
||||
const TString16 codcaus(mov.get(MOV_CODCAUS));
|
||||
if (codcaus.not_empty())
|
||||
{
|
||||
caus.setkey(1);
|
||||
caus.put(CAU_CODCAUS, codcaus);
|
||||
if (caus.read() == NOERR)
|
||||
{
|
||||
bool intra = caus.get_bool(CAU_INTRACOM);
|
||||
bool ok = rel.is_first_match(LF_RMOVIVA);
|
||||
while (ok)
|
||||
{
|
||||
rmoviva.put(RMI_INTRA, intra);
|
||||
rmoviva.rewrite();
|
||||
ok = rel.next_match(LF_RMOVIVA);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void agg_opintra(int argc, char* argv[])
|
||||
{
|
||||
TAgg_opintra aoi;
|
||||
aoi.run(argc, argv, TR("Aggiornamento flag op. intracomunitarie"));
|
||||
}
|
7
src/cg01/cg1301.h
Normal file
7
src/cg01/cg1301.h
Normal file
@ -0,0 +1,7 @@
|
||||
void agg_opintra(int argc, char* argv[]);
|
||||
void elimina_zoppi(int argc, char* argv[]);
|
||||
void setta_meseliq(int argc, char* argv[]);
|
||||
void controlla_PIVA(int argc, char* argv[]);
|
||||
void agg_iban(int argc, char* argv[]);
|
||||
void xref_check(int argc, char* argv[]);
|
||||
void controlla_ivadiff(int argc, char* argv[]);
|
149
src/cg01/cg1302.cpp
Normal file
149
src/cg01/cg1302.cpp
Normal file
@ -0,0 +1,149 @@
|
||||
//****************************
|
||||
//* Aggiornamento Tipo Conto *
|
||||
//****************************
|
||||
#include <mask.h>
|
||||
#include <recarray.h>
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmoviva.h>
|
||||
#include <nditte.h>
|
||||
|
||||
#include "cg1302.h"
|
||||
#include "cglib.h"
|
||||
|
||||
const int TAgg_tconto::look_reg (const char* cod, int anno)
|
||||
{
|
||||
TString8 codtab;
|
||||
codtab.format("%4d%-3s", anno, cod);
|
||||
int tipo_reg = cache().get("REG", codtab).get_int("I0");
|
||||
return tipo_reg;
|
||||
}
|
||||
|
||||
bool TAgg_tconto::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_MOV);
|
||||
_rel->add(LF_RMOVIVA, "NUMREG=NUMREG",1);
|
||||
add_cursor(new TCursor(_rel,"",1));
|
||||
|
||||
add_file (LF_MOV);
|
||||
add_file (LF_RMOVIVA);
|
||||
open_files(LF_PCON, LF_NDITTE, LF_TAB, 0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TAgg_tconto::user_destroy()
|
||||
{
|
||||
delete _rel;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TAgg_tconto::set_print(int)
|
||||
{
|
||||
TMask msk("cg1300a");
|
||||
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
setta_intestazione();
|
||||
printer().footerlen(5);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void TAgg_tconto::postclose_print()
|
||||
{
|
||||
message_box(TR("Aggiornamento tipo conto completato:\nE' necessario ricalcolare la liquidazione."));
|
||||
}
|
||||
|
||||
bool TAgg_tconto::preprocess_page(int file,int counter)
|
||||
{
|
||||
if (counter) return TRUE;
|
||||
|
||||
TCursor* cur = current_cursor();
|
||||
if (file == LF_MOV)
|
||||
{
|
||||
const TString& reg = cur->curr().get(MOV_REG);
|
||||
if (reg.empty()) return FALSE;
|
||||
}
|
||||
else if (file == LF_RMOVIVA)
|
||||
{
|
||||
TRectype pcon(LF_PCON);
|
||||
int gruppo = cur->curr(LF_RMOVIVA).get_int(RMI_GRUPPO);
|
||||
int conto = cur->curr(LF_RMOVIVA).get_int(RMI_CONTO);
|
||||
long sottoconto = cur->curr(LF_RMOVIVA).get_long(RMI_SOTTOCONTO);
|
||||
long numreg = cur->curr(LF_RMOVIVA).get_long(RMI_NUMREG);
|
||||
int nrigimp = cur->curr(LF_RMOVIVA).get_int("RIGAIMP");
|
||||
|
||||
TBill tc (gruppo,conto,0L);
|
||||
tc.read(pcon);
|
||||
if (!pcon.empty())
|
||||
if (pcon.get_char("TMCF") != '\0')
|
||||
return FALSE;
|
||||
|
||||
tc.set(gruppo,conto,sottoconto);
|
||||
tc.read(pcon);
|
||||
if (!pcon.empty())
|
||||
{
|
||||
if (tc.sospeso())
|
||||
{
|
||||
set_row(1, FR("@4g%7ld@23g%3d@31g%3d@37g%3d@45g%6ld ** Conto sospeso **"),
|
||||
numreg, nrigimp, gruppo, conto, sottoconto);
|
||||
return TRUE;
|
||||
}
|
||||
int t = tc.tipo_cr();
|
||||
TString16 reg = cur->curr().get(MOV_REG);
|
||||
int annoiva = cur->curr().get_int(MOV_ANNOIVA);
|
||||
const int tipo = look_reg(reg, annoiva); //cerca il tipo del registro
|
||||
//aggiorno sul movimento iva il tipo costo/ricavo
|
||||
//con quello letto dal piano conti
|
||||
_rel->lfile(LF_RMOVIVA).put(RMI_TIPOCR, t);
|
||||
if (tipo == 1 && (t == 2 || t == 3))
|
||||
_rel->lfile(LF_RMOVIVA).put(RMI_TIPOCR, 4);
|
||||
_rel->lfile(LF_RMOVIVA).rewrite();
|
||||
}
|
||||
else
|
||||
{
|
||||
set_row(1, FR("@4g%7ld@23g%3d@31g%3d@37g%3d@45g%6ld ** Conto inesistente **"),
|
||||
numreg, nrigimp, gruppo, conto, sottoconto);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TAgg_tconto::setta_intestazione()
|
||||
{
|
||||
int soh = 1;
|
||||
TString sep(132);
|
||||
TString ragsoc(50);
|
||||
|
||||
TLocalisamfile nditte(LF_NDITTE);
|
||||
nditte.zero();
|
||||
nditte.put(NDT_CODDITTA, get_firm());
|
||||
if (nditte.read() == NOERR)
|
||||
ragsoc = nditte.get(NDT_RAGSOC);
|
||||
|
||||
reset_header();
|
||||
|
||||
sep << TR("Ditta ") << get_firm();
|
||||
sep << " " << ragsoc;
|
||||
|
||||
sep.left_just(132);
|
||||
|
||||
set_header (soh++, (const char*) sep);
|
||||
|
||||
sep = "";
|
||||
sep << FR("Data @> Pag. @#");
|
||||
sep.right_just(127);
|
||||
|
||||
sep.overwrite (TR("AGGIORNAMENTO TIPO CONTO SU MOVIMENTI IVA - Lista errori"));
|
||||
set_header (soh++, (const char*)sep);
|
||||
sep.fill('-');
|
||||
set_header (soh++, (const char *) sep);
|
||||
set_header (soh++, TR("Numero Registrazione Riga Gruppo Conto Sottoconto"));
|
||||
set_header (soh++, (const char *) sep);
|
||||
set_header (soh, "");
|
||||
}
|
19
src/cg01/cg1302.h
Normal file
19
src/cg01/cg1302.h
Normal file
@ -0,0 +1,19 @@
|
||||
#include <printapp.h>
|
||||
|
||||
class TAgg_tconto : public TPrintapp
|
||||
{
|
||||
TRelation* _rel;
|
||||
|
||||
public:
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual bool set_print(int i);
|
||||
virtual bool preprocess_page(int, int);
|
||||
virtual void postclose_print();
|
||||
|
||||
void setta_intestazione();
|
||||
const int look_reg(const char*, int);
|
||||
|
||||
TAgg_tconto() {};
|
||||
virtual ~TAgg_tconto() {};
|
||||
};
|
190
src/cg01/cg1303.cpp
Normal file
190
src/cg01/cg1303.cpp
Normal file
@ -0,0 +1,190 @@
|
||||
//***********************************
|
||||
//* Rinumerazione numero protocollo *
|
||||
//***********************************
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <tabutil.h>
|
||||
#include <relation.h>
|
||||
#include <recarray.h>
|
||||
|
||||
#include "cg1300.h"
|
||||
#include "cg1303.h"
|
||||
|
||||
#include <causali.h>
|
||||
#include <mov.h>
|
||||
#include <partite.h>
|
||||
|
||||
|
||||
HIDDEN TAgg_nprot& app() { return (TAgg_nprot&) main_app(); }
|
||||
|
||||
HIDDEN bool filtra_mov(const TRelation* r)
|
||||
{
|
||||
const TRectype& mov = r->curr();
|
||||
const int annoiva = mov.get_int(MOV_ANNOIVA);
|
||||
TString4 reg = mov.get(MOV_REG);
|
||||
|
||||
const TAgg_nprot& a = app();
|
||||
|
||||
if (reg.full() && reg != a.reg())
|
||||
{
|
||||
const TString& codcaus = mov.get(MOV_CODCAUS);
|
||||
const TString& truereg = cache().get(LF_CAUSALI, codcaus, CAU_REG);
|
||||
if (truereg != reg && truereg == a.reg()) // REG incoerente
|
||||
reg = truereg;
|
||||
}
|
||||
|
||||
return a.anno() == annoiva && a.reg() == reg;
|
||||
}
|
||||
|
||||
void TAgg_nprot::main_loop()
|
||||
{
|
||||
TMask msk("cg1300b");
|
||||
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
_anno = msk.get_int(F_ANNO);
|
||||
_reg = msk.get(F_REG);
|
||||
|
||||
rinumera_prot(msk.get(F_MODE)[0], msk.get_long(F_PROT));
|
||||
|
||||
msk.reset(F_REG);
|
||||
}
|
||||
}
|
||||
|
||||
bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||
{
|
||||
TTable reg("REG");
|
||||
TString8 s; s.format("%04d%s", _anno, (const char*)_reg);
|
||||
reg.put("CODTAB", s);
|
||||
if (reg.read() != NOERR)
|
||||
return error_box(FR("Impossibile leggere il registro %s del %d"),
|
||||
(const char*)_reg, _anno);
|
||||
|
||||
TFast_isamfile fastmov(LF_MOV);
|
||||
TRelation rel (LF_MOV);
|
||||
rel.add(LF_PARTITE, "NREG=NUMREG", 2);
|
||||
|
||||
TLocalisamfile& mov = rel.lfile();
|
||||
TLocalisamfile& part= rel.lfile(LF_PARTITE);
|
||||
|
||||
TCursor cursor(&rel, "", 2);
|
||||
cursor.set_filterfunction(filtra_mov);
|
||||
|
||||
const long nitems = cursor.items();
|
||||
if (nitems == 0)
|
||||
return warning_box(TR("Non ci sono movimenti da rinumerare"));
|
||||
|
||||
const bool sc_enabled = ini_get_bool(CONFIG_DITTA,"cg", "GesSal");
|
||||
|
||||
cursor.freeze();
|
||||
cursor = 0L;
|
||||
|
||||
TProgind p(nitems, TR("Elaborazione in corso...") , FALSE, TRUE);
|
||||
|
||||
if (mode == 'N' || mode == 'U')
|
||||
{
|
||||
long protiva, uprotiva;
|
||||
for (; cursor.pos() < nitems; ++cursor)
|
||||
{
|
||||
p.addstatus(1);
|
||||
protiva = mov.get_long(MOV_PROTIVA);
|
||||
uprotiva = mov.get_long(MOV_UPROTIVA);
|
||||
|
||||
if (mode == 'U')
|
||||
{
|
||||
if (mov.get_bool(MOV_REGST))
|
||||
{
|
||||
last_prot = uprotiva > protiva ? uprotiva : protiva;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (mode == 'N')
|
||||
{
|
||||
if (protiva != last_prot && uprotiva != last_prot)
|
||||
continue;
|
||||
else
|
||||
{
|
||||
if (uprotiva != 0l)
|
||||
last_prot = uprotiva;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (last_prot > 0 && mode == 'N')
|
||||
{
|
||||
if (protiva != last_prot && uprotiva != last_prot) //sono alla fine del file
|
||||
return error_box(TR("Non esiste la registrazione con protocollo %ld:\nrinumerazione non avvenuta"), last_prot);
|
||||
++cursor;
|
||||
}
|
||||
}
|
||||
|
||||
long nprot,uprot,dprot;
|
||||
dprot = uprot = 0L;
|
||||
nprot = last_prot;
|
||||
|
||||
long first_nreg = 0, first_nprot = 0;
|
||||
long last_nreg = 0, last_nprot = 0;
|
||||
|
||||
for (; cursor.pos() < nitems; ++cursor)
|
||||
{
|
||||
p.addstatus(1);
|
||||
const long protiva = mov.get_long(MOV_PROTIVA);
|
||||
const long uprotiva = mov.get_long(MOV_UPROTIVA);
|
||||
const TString& reg = mov.get(MOV_REG);
|
||||
|
||||
if (mode == 'P') // Modalità speciale COMARI protiva = numdoc
|
||||
{
|
||||
nprot = mov.get_long(MOV_NUMDOC);
|
||||
dprot = uprot = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
nprot = nprot+1+dprot; //stile RPG
|
||||
dprot = (uprotiva == 0L) ? 0L : (uprotiva - protiva);
|
||||
uprot = (uprotiva == 0L) ? 0L : (nprot + dprot);
|
||||
}
|
||||
|
||||
if (nprot != protiva || uprot != uprotiva || reg != _reg)
|
||||
{
|
||||
mov.put(MOV_REG, _reg);
|
||||
mov.put(MOV_PROTIVA, nprot);
|
||||
mov.put(MOV_UPROTIVA, uprot);
|
||||
int err = mov.rewrite();
|
||||
if (err != NOERR)
|
||||
{
|
||||
cantwrite_box("Movimenti IVA");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Aggiorna il nr di prot. iva sul file partite
|
||||
if (sc_enabled && rel.is_first_match(LF_PARTITE))
|
||||
{
|
||||
do
|
||||
{
|
||||
part.put(PART_PROTIVA,nprot);
|
||||
part.rewrite();
|
||||
} while (rel.next_match(LF_PARTITE));
|
||||
}
|
||||
|
||||
const long numreg = mov.get_long(MOV_NUMREG);
|
||||
if (first_nreg <= 0)
|
||||
{
|
||||
first_nreg = numreg;
|
||||
first_nprot = nprot;
|
||||
}
|
||||
last_nreg = numreg;
|
||||
last_nprot = nprot;
|
||||
}
|
||||
|
||||
reg.put("I5", nprot + dprot);
|
||||
reg.rewrite();
|
||||
|
||||
return message_box(FR("Rinumerazione numero protocollo completata\n"
|
||||
"dal movimento %ld (%ld) al movimento %ld (%ld)"),
|
||||
first_nreg, first_nprot, last_nreg, last_nprot);
|
||||
}
|
||||
|
15
src/cg01/cg1303.h
Normal file
15
src/cg01/cg1303.h
Normal file
@ -0,0 +1,15 @@
|
||||
#include <applicat.h>
|
||||
|
||||
class TAgg_nprot : public TSkeleton_application
|
||||
{
|
||||
TString4 _reg;
|
||||
int _anno;
|
||||
|
||||
protected:
|
||||
bool rinumera_prot(char mode, long last_prot);
|
||||
|
||||
public:
|
||||
int anno() const { return _anno; }
|
||||
const TString& reg() const { return _reg; }
|
||||
virtual void main_loop();
|
||||
};
|
172
src/cg01/cg1304.cpp
Normal file
172
src/cg01/cg1304.cpp
Normal file
@ -0,0 +1,172 @@
|
||||
//*****************************************************
|
||||
//* Aggiornamento codice attivita' su progressivi IVA *
|
||||
//*****************************************************
|
||||
#include "cg1300.h"
|
||||
#include "cg1304.h"
|
||||
#include "cglib.h"
|
||||
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
bool TAgg_codatt::create()
|
||||
{
|
||||
open_files(LF_TAB, 0);
|
||||
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TAgg_codatt::destroy()
|
||||
{
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
void TAgg_codatt::main_loop()
|
||||
{
|
||||
TProgind* pri;
|
||||
TMask msk("cg1300c");
|
||||
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
pri = new TProgind(2,TR("Aggiornamento in corso..."),FALSE,TRUE,50);
|
||||
_pass = msk.get_bool(F_PASS);
|
||||
if (_pass)
|
||||
{
|
||||
_anno = msk.get_int(F_ANNO);
|
||||
_da = msk.get(F_DA); //se c'e' _da c'e' anche _a e viceversa
|
||||
_a = msk.get(F_A); //_da e' la vecchia attivita'
|
||||
//_a e' la nuova attivita'
|
||||
pri->addstatus(1);
|
||||
aggiorna_att("PIM");
|
||||
aggiorna_att("PUM");
|
||||
aggiorna_att("POM");
|
||||
aggiorna_att("PAM");
|
||||
aggiorna_att("PPA");
|
||||
aggiorna_att("%PLA");
|
||||
aggiorna_att("PLM");
|
||||
}
|
||||
else
|
||||
{
|
||||
pri->addstatus(1);
|
||||
cancella_rec();
|
||||
}
|
||||
pri->addstatus(1);
|
||||
msk.reset();
|
||||
//msk.reset(F_ANNO);
|
||||
//msk.reset(F_DA);
|
||||
//msk.reset(F_A);
|
||||
delete pri;
|
||||
message_box(TR("Aggiornamento codice attivita' completato"));
|
||||
}
|
||||
}
|
||||
|
||||
void TAgg_codatt::cancella_rec()
|
||||
{
|
||||
TTable plm("PLM");
|
||||
for (plm.first(); !plm.eof(); plm.next())
|
||||
plm.remove();
|
||||
|
||||
TTable pum("PUM");
|
||||
for (pum.first(); !pum.eof(); pum.next())
|
||||
pum.remove();
|
||||
|
||||
TTable pom("POM");
|
||||
for (pom.first(); !pom.eof(); pom.next())
|
||||
pom.remove();
|
||||
|
||||
TTable pam("PAM");
|
||||
for (pam.first(); !pam.eof(); pam.next())
|
||||
pam.remove();
|
||||
|
||||
TTable ppa("PPA");
|
||||
for (ppa.first(); !ppa.eof(); ppa.next())
|
||||
ppa.remove();
|
||||
|
||||
//non e' indicata la vecchia attivita' => :
|
||||
TTable pim("PIM");
|
||||
for (pim.first(); !pim.eof(); pim.next())
|
||||
{
|
||||
const TString80 codtab = pim.get("CODTAB");
|
||||
int anno = atoi(codtab.mid(0,4));
|
||||
const TString16 codatt = codtab.mid(4,5);
|
||||
const TString16 codreg = codtab.mid(10,3);
|
||||
if (codreg.not_empty())
|
||||
{
|
||||
TRegistro reg(codreg,anno);
|
||||
if (!reg.name().empty()) //se esiste quel registro (ma perche' non dovrebbe?)
|
||||
{
|
||||
const TString16 cda = reg.attivita();
|
||||
if (codatt != cda)
|
||||
{
|
||||
TRectype vecchio (pim.curr());
|
||||
TRectype nuovo (pim.curr());
|
||||
const TString80 cc = codtab.sub(9);
|
||||
TString80 cod;
|
||||
cod << anno << cda << cc;
|
||||
nuovo.put("CODTAB", cod);
|
||||
pim.write(nuovo);
|
||||
pim.read(vecchio);
|
||||
pim.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TTable pla("%PLA");
|
||||
TRecfield r_ditta(pla.curr(),"CODTAB",0,4);
|
||||
const long firm = get_firm();
|
||||
for (pla.first(); !pla.eof(); pla.next())
|
||||
{
|
||||
if (firm != (long)r_ditta)
|
||||
continue;
|
||||
pla.remove();
|
||||
}
|
||||
}
|
||||
|
||||
void TAgg_codatt::aggiorna_att(const char* nome)
|
||||
{
|
||||
const bool is_pla = nome == "%PLA";
|
||||
const long firm = get_firm();
|
||||
TTable tab(nome);
|
||||
tab.setkey(1);
|
||||
tab.zero();
|
||||
TString16 chiave;
|
||||
TString16 old_att(_da); old_att.right_just(5,'0');
|
||||
TString16 new_att(_a); new_att.right_just(5,'0');
|
||||
if (is_pla) chiave << firm;
|
||||
chiave << _anno << old_att;
|
||||
tab.put("CODTAB", chiave);
|
||||
TRectype curr (tab.curr());
|
||||
TRecfield r_ditta(tab.curr(),"CODTAB",0,4);
|
||||
tab.read(_isgteq);
|
||||
for (; !tab.eof(); tab.next())
|
||||
{
|
||||
if (is_pla)
|
||||
{
|
||||
if (firm != (long)r_ditta) break;
|
||||
}
|
||||
else
|
||||
if (tab.curr() != curr) break;
|
||||
|
||||
const TString80 codtab = tab.get("CODTAB");
|
||||
//const TString16 cod_att = codtab.mid(4,5); //e' uguale a old_att
|
||||
if (old_att != new_att)
|
||||
{
|
||||
TRectype vecchio (tab.curr());
|
||||
TRectype nuovo (tab.curr());
|
||||
TString80 cc;
|
||||
if (is_pla)
|
||||
cc = codtab.sub(13);
|
||||
else
|
||||
cc = codtab.sub(9);
|
||||
TString80 cod;
|
||||
if (is_pla) cod << firm;
|
||||
cod << _anno << new_att << cc;
|
||||
nuovo.put("CODTAB", cod);
|
||||
tab.write(nuovo);
|
||||
tab.read(vecchio);
|
||||
tab.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
src/cg01/cg1304.h
Normal file
18
src/cg01/cg1304.h
Normal file
@ -0,0 +1,18 @@
|
||||
#include <applicat.h>
|
||||
|
||||
class TAgg_codatt : public TSkeleton_application
|
||||
{
|
||||
TString16 _da, _a;
|
||||
int _anno;
|
||||
bool _pass;
|
||||
|
||||
public:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
|
||||
void cancella_rec();
|
||||
void aggiorna_att(const char*);
|
||||
TAgg_codatt() : _da(""), _a(""), _anno(0) {};
|
||||
virtual ~TAgg_codatt() {};
|
||||
};
|
100
src/cg01/cg1305.cpp
Normal file
100
src/cg01/cg1305.cpp
Normal file
@ -0,0 +1,100 @@
|
||||
// sistema il codice esercizio di tutti i movimenti
|
||||
#include "cg1305.h"
|
||||
#include "cglib.h"
|
||||
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <recset.h>
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
static bool aggiorna_righe(TRecord_array& righe, int annoes)
|
||||
{
|
||||
bool qualcuno_sbagliato = false;
|
||||
for (int i = righe.last_row(); i > 0; i = righe.pred_row(i))
|
||||
{
|
||||
const TRectype& riga = righe.row(i);
|
||||
const int anno = riga.get_int(RMV_ANNOES);
|
||||
if (anno != annoes)
|
||||
{
|
||||
qualcuno_sbagliato = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (qualcuno_sbagliato)
|
||||
{
|
||||
// Serve per righe iva non zerofilled
|
||||
TString4 sanno; sanno.format("%04d", annoes);
|
||||
righe.renum_key(RMV_ANNOES, sanno);
|
||||
righe.rewrite();
|
||||
}
|
||||
return qualcuno_sbagliato;
|
||||
}
|
||||
|
||||
void TAgg_codes::main_loop()
|
||||
{
|
||||
open_files(LF_MOV, LF_RMOV, LF_RMOVIVA, LF_TAB, 0);
|
||||
|
||||
TMask msk("cg1300d");
|
||||
if (msk.run() == K_ENTER)
|
||||
{
|
||||
long modified_recs=0L;
|
||||
int err = NOERR;
|
||||
|
||||
TISAM_recordset mov("USE MOV");
|
||||
const TRecnotype nrec = mov.items();
|
||||
|
||||
if (nrec > 0) // Dummy test for progind destruction
|
||||
{
|
||||
TEsercizi_contabili esercizi;
|
||||
TProgind pi(nrec, TR("Aggiornamento in corso..."), true, true);
|
||||
TRecord_array righe(LF_RMOV, RMV_NUMRIG);
|
||||
TRecord_array righeiva(LF_RMOVIVA, RMI_NUMRIG);
|
||||
TRectype riga(LF_RMOV);
|
||||
TRectype rigaiva(LF_RMOVIVA);
|
||||
|
||||
for (bool ok = mov.move_first(); ok && err == NOERR; ok = mov.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
const TDate data = mov.get(MOV_DATACOMP).as_date();
|
||||
const int oldcodes = mov.get(MOV_ANNOES).as_int();
|
||||
const int newcodes = esercizi.date2esc(data);
|
||||
bool cambiato = false;
|
||||
|
||||
if (oldcodes != newcodes)
|
||||
{
|
||||
TRectype& curr = mov.cursor()->curr();
|
||||
curr.put(MOV_ANNOES, newcodes);
|
||||
err = curr.rewrite(mov.cursor()->file());
|
||||
cambiato = err == NOERR;
|
||||
}
|
||||
|
||||
if (err == NOERR)
|
||||
{
|
||||
const long numreg = mov.get(MOV_NUMREG).as_int();
|
||||
riga.put(RMV_NUMREG, numreg);
|
||||
righe.read(riga);
|
||||
cambiato |= aggiorna_righe(righe, newcodes);
|
||||
|
||||
rigaiva.put(RMI_NUMREG, numreg);
|
||||
righeiva.read(rigaiva);
|
||||
cambiato |= aggiorna_righe(righeiva, newcodes);
|
||||
}
|
||||
|
||||
if (cambiato)
|
||||
modified_recs++;
|
||||
}
|
||||
}
|
||||
|
||||
if (err != NOERR)
|
||||
warning_box(FR("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura"),err);
|
||||
else
|
||||
message_box(FR("Aggiornamento codice esercizio completata. Modificati %ld movimenti.\nE' necessario procedere col ricalcolo saldi"), modified_recs);
|
||||
}
|
||||
}
|
9
src/cg01/cg1305.h
Normal file
9
src/cg01/cg1305.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef __APPLICAT_H
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
class TAgg_codes : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
};
|
46
src/cg01/cg1306.cpp
Normal file
46
src/cg01/cg1306.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
// sistema la data di competenza di tutti i movimenti
|
||||
|
||||
#include <isam.h>
|
||||
#include <progind.h>
|
||||
|
||||
#include "cg1300.h"
|
||||
#include "cg1306.h"
|
||||
|
||||
#include <mov.h>
|
||||
|
||||
inline TAgg_datacomp& app() { return (TAgg_datacomp&) main_app(); }
|
||||
|
||||
void TAgg_datacomp::main_loop()
|
||||
{
|
||||
if (set_firm())
|
||||
aggiorna_datacomp();
|
||||
}
|
||||
|
||||
void TAgg_datacomp::aggiorna_datacomp()
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
long nrecs = (long) mov.eod();
|
||||
long modified_recs = 0L;
|
||||
TDate datacomp;
|
||||
TDate datareg;
|
||||
int err = NOERR;
|
||||
TProgind p(nrecs, TR("Aggiornamento in corso..."), TRUE, TRUE, 100);
|
||||
|
||||
for (mov.first(); !mov.eof() && err == NOERR; mov.next())
|
||||
{
|
||||
p.addstatus(1);
|
||||
datacomp = mov.get_date(MOV_DATACOMP);
|
||||
datareg = mov.get_date(MOV_DATAREG);
|
||||
if (datacomp > datareg)
|
||||
{
|
||||
mov.put(MOV_DATACOMP,datareg);
|
||||
mov.rewrite();
|
||||
modified_recs++;
|
||||
}
|
||||
}
|
||||
|
||||
if (err != NOERR)
|
||||
warning_box(FR("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura"),err);
|
||||
else
|
||||
message_box(FR("Aggiornamento data competenza completata. Modificati %ld movimenti."),modified_recs);
|
||||
}
|
11
src/cg01/cg1306.h
Normal file
11
src/cg01/cg1306.h
Normal file
@ -0,0 +1,11 @@
|
||||
#include <applicat.h>
|
||||
|
||||
class TAgg_datacomp : public TSkeleton_application
|
||||
{
|
||||
void aggiorna_datacomp();
|
||||
public:
|
||||
virtual void main_loop();
|
||||
|
||||
TAgg_datacomp() {};
|
||||
virtual ~TAgg_datacomp() {};
|
||||
};
|
564
src/cg01/cg1307.cpp
Normal file
564
src/cg01/cg1307.cpp
Normal file
@ -0,0 +1,564 @@
|
||||
#include <applicat.h>
|
||||
#include <defmask.h>
|
||||
#include <isam.h>
|
||||
#include <prefix.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <recset.h>
|
||||
#include <sheet.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include "cgsaldac.h"
|
||||
|
||||
#include <clifo.h>
|
||||
#include <mov.h>
|
||||
#include <nditte.h>
|
||||
#include <pconti.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
class TElimina_zoppi : public TSkeleton_application
|
||||
{
|
||||
TArray _decoders;
|
||||
|
||||
protected:
|
||||
static bool test_riga_partita(const TRectype& pagsca);
|
||||
static bool test_row_file(int rmov, TString_array& arr);
|
||||
static bool test_scrow_file(int rmov, TString_array& arr);
|
||||
static bool test_head_file(TString_array& arr);
|
||||
|
||||
static int kill_game(long numreg, int numrig);
|
||||
static int kill_pagsca(long recno, int lfile);
|
||||
static int kill_row(long numreg, char tipor, int numrig);
|
||||
|
||||
static bool firm_handler(TMask_field& f, KEY k);
|
||||
|
||||
public:
|
||||
const char* app_name() const {return TR("Righe prima nota errate");}
|
||||
const char* decode(int num, const char* key, const char* field);
|
||||
const char* decode(int num, long key, const char* field);
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
inline TElimina_zoppi& app() { return (TElimina_zoppi&)main_app(); }
|
||||
|
||||
bool TElimina_zoppi::firm_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
bool ok = true;
|
||||
if (k == K_F9)
|
||||
{
|
||||
TArray_sheet sheet(-1, -1, 70, 20, TR("Scelta ditta"), HR("Codice|Ragione Sociale@50"));
|
||||
TString_array& rows = sheet.rows_array();
|
||||
prefix().firms(rows);
|
||||
FOR_EACH_ARRAY_ROW(rows, r, row)
|
||||
{
|
||||
const long cod = row->get_long(0);
|
||||
row->add(app().decode(LF_NDITTE, cod, NDT_RAGSOC));
|
||||
if (cod == prefix().get_codditta())
|
||||
sheet.select(r);
|
||||
}
|
||||
if (sheet.run() == K_ENTER)
|
||||
{
|
||||
f.set(sheet.row().get(0));
|
||||
k = K_TAB;
|
||||
}
|
||||
}
|
||||
if (k == K_ENTER || k == K_TAB && f.focusdirty())
|
||||
{
|
||||
long cod = atol(f.get());
|
||||
ok = prefix().exist(cod);
|
||||
if (ok)
|
||||
prefix().set_codditta(cod);
|
||||
else
|
||||
f.error_box(FR("La ditta %05ld non è attivata per la contabilità"), cod);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
const char* TElimina_zoppi::decode(int num, const char* key, const char* field)
|
||||
{
|
||||
TDecoder* dec = (TDecoder*)_decoders.objptr(num);
|
||||
if (dec == NULL)
|
||||
{
|
||||
dec = new TDecoder(num, field);
|
||||
_decoders.add(dec);
|
||||
}
|
||||
return dec->decode(key);
|
||||
}
|
||||
|
||||
const char* TElimina_zoppi::decode(int num, long key, const char* field)
|
||||
{
|
||||
TString8 k; k.format("%ld", key);
|
||||
return decode(num, k, field);
|
||||
}
|
||||
|
||||
bool TElimina_zoppi::test_row_file(int lf_rmov, TString_array& arr)
|
||||
{
|
||||
bool ok = true;
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
|
||||
TString8 query; query.format("USE %d", lf_rmov);
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
TString msg;
|
||||
switch (lf_rmov)
|
||||
{
|
||||
case LF_RMOV : msg = TR("Controllo righe contabili"); break;
|
||||
case LF_RMOVIVA: msg = TR("Controllo righe iva"); break;
|
||||
case LF_PARTITE: msg = TR("Controllo righe saldaconto"); break;
|
||||
default: CHECKD(0, "Invalid row file %d", lf_rmov); break;
|
||||
}
|
||||
msg << ": 0";
|
||||
|
||||
TProgress_monitor pi(recset.items(), msg);
|
||||
TToken_string riga, descr;
|
||||
|
||||
long reg, last_reg = 0, found = 0;
|
||||
bool reg_killed = false;
|
||||
|
||||
char tipo;
|
||||
int gruppo, conto;
|
||||
long sottoconto;
|
||||
|
||||
const TRectype& row = recset.cursor()->curr();
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
if (!pi.add_status(1))
|
||||
{
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (lf_rmov == LF_PARTITE)
|
||||
reg = row.get_long(PART_NREG);
|
||||
else
|
||||
reg = row.get_long(MOV_NUMREG);
|
||||
|
||||
if (reg != last_reg)
|
||||
{
|
||||
if (reg > 0)
|
||||
{
|
||||
mov.put(MOV_NUMREG, reg);
|
||||
reg_killed = mov.read() != NOERR;
|
||||
}
|
||||
else
|
||||
reg_killed = lf_rmov != LF_PARTITE;
|
||||
last_reg = reg;
|
||||
}
|
||||
if (reg_killed)
|
||||
{
|
||||
found++;
|
||||
const int colon = msg.find(':');
|
||||
msg.cut(colon+2);
|
||||
msg << found;
|
||||
pi.set_text(msg);
|
||||
|
||||
switch (lf_rmov)
|
||||
{
|
||||
case LF_RMOV :
|
||||
riga.format(" |%6ld|C%4d", reg, row.get_int(RMV_NUMRIG));
|
||||
riga.add(row.get(RMV_ANNOES));
|
||||
riga.add(row.get_real(RMV_IMPORTO).string("."));
|
||||
riga << ' ' << row.get(RMV_SEZIONE);
|
||||
break;
|
||||
case LF_RMOVIVA:
|
||||
riga.format(" |%6ld|I%4d", reg, row.get_int(RMI_NUMRIG));
|
||||
riga.add(row.get(RMI_ANNOES));
|
||||
riga.add(row.get_real(RMI_IMPONIBILE).string("."));
|
||||
riga << " ";
|
||||
break;
|
||||
case LF_PARTITE:
|
||||
riga.format(" |%6ld|P%4d", reg, row.get_int(PART_NRIGA));
|
||||
riga.add(row.get(PART_ANNO));
|
||||
riga.add(row.get_real(PART_IMPORTO).string("."));
|
||||
riga << ' ' << row.get(PART_SEZ);
|
||||
break;
|
||||
default: CHECKD(0, "Invalid row file %d", lf_rmov); break;
|
||||
};
|
||||
|
||||
descr.cut(0);
|
||||
if (lf_rmov == LF_PARTITE)
|
||||
{
|
||||
tipo = row.get_char(PART_TIPOCF);
|
||||
gruppo = row.get_int(PART_GRUPPOCL);
|
||||
conto = row.get_int(PART_CONTOCL);
|
||||
sottoconto = row.get_long(PART_SOTTOCONTO);
|
||||
descr = row.get(PART_DESCR);
|
||||
}
|
||||
else
|
||||
{
|
||||
tipo = row.get_char(RMV_TIPOC);
|
||||
gruppo = row.get_int(RMV_GRUPPO);
|
||||
conto = row.get_int(RMV_CONTO);
|
||||
sottoconto = row.get_long(RMV_SOTTOCONTO);
|
||||
if (lf_rmov == LF_RMOV)
|
||||
descr = row.get(PART_DESCR);
|
||||
}
|
||||
riga.add(gruppo);
|
||||
riga.add(conto);
|
||||
riga.add(sottoconto);
|
||||
|
||||
if (descr.empty())
|
||||
{
|
||||
if (tipo == 'C' || tipo == 'F')
|
||||
{
|
||||
descr << tipo << '|' << sottoconto;
|
||||
descr = app().decode(LF_CLIFO, descr, CLI_RAGSOC);
|
||||
}
|
||||
else
|
||||
{
|
||||
descr << gruppo << '|' << conto << '|' << sottoconto;
|
||||
descr = app().decode(LF_PCON, descr, PCN_DESCR);
|
||||
}
|
||||
}
|
||||
riga.add(descr);
|
||||
arr.add(riga);
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TElimina_zoppi::test_riga_partita(const TRectype& pagsca)
|
||||
{
|
||||
const int nriga = pagsca.get_int(PART_NRIGA);
|
||||
bool ok = nriga > 0;
|
||||
|
||||
if (nriga < 9999)
|
||||
{
|
||||
TToken_string k;
|
||||
k = pagsca.get(PART_TIPOCF);
|
||||
k.add(pagsca.get(PART_GRUPPO), 1);
|
||||
k.add(pagsca.get(PART_CONTO), 2);
|
||||
k.add(pagsca.get(PART_SOTTOCONTO), 3);
|
||||
k.add(pagsca.get(PART_ANNO));
|
||||
k.add(pagsca.get(PART_NUMPART));
|
||||
k.add(nriga);
|
||||
const int tipomov = atoi(app().decode(LF_PARTITE, k, PART_TIPOMOV));
|
||||
ok = tipomov == 1;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
||||
{
|
||||
bool ok = true;
|
||||
|
||||
TString8 query; query.format("USE %d", lf_pagsca);
|
||||
TISAM_recordset recset(query);
|
||||
long found = 0;
|
||||
|
||||
TString msg;
|
||||
msg << TR("Controllo righe ");
|
||||
switch (lf_pagsca)
|
||||
{
|
||||
case LF_SCADENZE: msg << TR("scadenze"); break;
|
||||
case LF_PAGSCA : msg << TR("pagamento"); break;
|
||||
default: CHECKD(0, "Invalid row file %d", lf_pagsca); break;
|
||||
}
|
||||
msg << ": 0";
|
||||
msg.center_just(50);
|
||||
|
||||
TProgress_monitor pi(recset.items(), msg);
|
||||
TToken_string riga, descr;
|
||||
|
||||
const TRectype& pagsca = recset.cursor()->curr();
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
if (!pi.add_status())
|
||||
{
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
bool to_kill = false;
|
||||
if (pagsca.get_int(SCAD_NRIGA) <= 0 || pagsca.get_int(SCAD_NRATA) <= 0)
|
||||
to_kill = true;
|
||||
|
||||
switch (lf_pagsca)
|
||||
{
|
||||
case LF_PAGSCA:
|
||||
if (pagsca.get_int(PAGSCA_NRIGP) <= 0)
|
||||
to_kill = true;
|
||||
if (!test_riga_partita(pagsca))
|
||||
to_kill = true;
|
||||
break;
|
||||
case LF_SCADENZE:
|
||||
if (!test_riga_partita(pagsca))
|
||||
to_kill = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (to_kill)
|
||||
{
|
||||
found++;
|
||||
const int colon = msg.find(':');
|
||||
msg.cut(colon+2);
|
||||
msg << found;
|
||||
pi.set_text(msg);
|
||||
|
||||
riga.format(" |%6ld", recset.cursor()->file().recno());
|
||||
if (lf_pagsca == LF_SCADENZE)
|
||||
riga.add("S");
|
||||
else
|
||||
riga.add("G");
|
||||
riga << lf_pagsca;
|
||||
|
||||
riga.add(pagsca.get(SCAD_ANNO));
|
||||
riga.add(TR("Partita ")); riga << pagsca.get(SCAD_NUMPART);
|
||||
riga.add(pagsca.get(SCAD_GRUPPO));
|
||||
riga.add(pagsca.get(SCAD_CONTO));
|
||||
riga.add(pagsca.get(SCAD_SOTTOCONTO));
|
||||
if (lf_pagsca == LF_SCADENZE)
|
||||
riga.add(TR("Riga scadenze inconsistente"));
|
||||
else
|
||||
riga.add(TR("Riga pagamenti inconsistente"));
|
||||
arr.add(riga);
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TElimina_zoppi::test_head_file(TString_array& arr)
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
|
||||
bool ok = true;
|
||||
TISAM_recordset recset("USE MOV");
|
||||
TLocalisamfile rmov(LF_RMOV);
|
||||
TLocalisamfile rmoviva(LF_RMOVIVA);
|
||||
|
||||
TString msg;
|
||||
msg << TR("Controllo testate di prima nota: 0");
|
||||
msg.center_just(50);
|
||||
|
||||
TProgress_monitor pi(recset.items(), msg);
|
||||
TToken_string riga, descr;
|
||||
const TRectype& mov = recset.cursor()->curr();
|
||||
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
if (!pi.add_status())
|
||||
{
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
long reg = mov.get_long(MOV_NUMREG);
|
||||
|
||||
bool good = reg > 0;
|
||||
if (good)
|
||||
{
|
||||
//int rmoviva_err = NOERR;
|
||||
rmov.put(RMV_NUMREG, reg);
|
||||
rmov.put(RMV_NUMRIG, 1);
|
||||
int rmov_err = rmov.read();
|
||||
/*rmoviva.put(RMI_NUMREG, reg);
|
||||
rmoviva.put(RMI_NUMRIG, 1);
|
||||
int rmoviva_err = rmoviva.read();*/
|
||||
good = rmov_err == NOERR;
|
||||
if (good)
|
||||
{
|
||||
const int annoes = mov.get_int(MOV_ANNOES);
|
||||
good = annoes > 0 && esc.exist(annoes);
|
||||
}
|
||||
}
|
||||
|
||||
if (!good)
|
||||
{
|
||||
riga.format(" |%6ld|T", reg);
|
||||
riga.add(mov.get(MOV_ANNOES));
|
||||
riga.add(mov.get_real(MOV_TOTDOC).string("."));
|
||||
riga << " | | ";
|
||||
riga.add(mov.get(MOV_CODCF));
|
||||
descr = mov.get(MOV_DESCR);
|
||||
if (descr.empty())
|
||||
{
|
||||
char tipo = mov.get_char(MOV_TIPO);
|
||||
if (tipo == 'C' || tipo == 'F')
|
||||
{
|
||||
descr << tipo << '|' << mov.get(MOV_CODCF);
|
||||
descr = app().decode(LF_CLIFO, descr, CLI_RAGSOC);
|
||||
}
|
||||
}
|
||||
riga.add(descr);
|
||||
arr.add(riga);
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
int TElimina_zoppi::kill_game(long numreg, int numrig)
|
||||
{
|
||||
TPartite_array games;
|
||||
games.add_numreg(numreg);
|
||||
for (TPartita* game = games.first(); game; game = games.next())
|
||||
{
|
||||
bool update = false;
|
||||
const int fattura = game->prima_fattura(numreg);
|
||||
if (fattura > 0)
|
||||
{
|
||||
game->scollega_pagamenti(fattura, 1);
|
||||
game->rimuovi_riga(fattura);
|
||||
update = true;
|
||||
}
|
||||
|
||||
const int rigapag = game->primo_pagamento(numreg);
|
||||
if (rigapag > 0)
|
||||
{
|
||||
int p;
|
||||
|
||||
for (p = game->last(); p > 0; p = game->pred(p))
|
||||
{
|
||||
TRiga_partite& part = game->riga(p);
|
||||
if (part.is_fattura())
|
||||
{
|
||||
for (int r = part.rate(); r > 0; r--)
|
||||
{
|
||||
TRiga_scadenze& scad = part.rata(r);
|
||||
for (int s = scad.last(); s > 0; s = scad.pred(s))
|
||||
{
|
||||
const TRiga_partite& sum = game->riga(s);
|
||||
if (sum.get_long(PART_NREG) == numreg)
|
||||
{
|
||||
game->elimina_pagamento(p, r, s);
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
TRecord_array& unas = game->unassigned();
|
||||
for (int u = unas.last_row(); u > 0; u = unas.pred_row(u))
|
||||
{
|
||||
const TRiga_partite& sum = game->riga(u);
|
||||
if (sum.get_long(PART_NREG) == numreg)
|
||||
{
|
||||
game->elimina_pagamento(TPartita::UNASSIGNED, 0, u);
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Elimina le righe sopravvissute
|
||||
for (p = game->last(); p > 0; p = game->pred(p))
|
||||
{
|
||||
TRiga_partite& part = game->riga(p);
|
||||
if (part.get_long(PART_NREG) == numreg)
|
||||
{
|
||||
game->rimuovi_riga(p);
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (update)
|
||||
game->rewrite();
|
||||
}
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int TElimina_zoppi::kill_pagsca(long recno, int lfile)
|
||||
{
|
||||
CHECK(lfile == LF_SCADENZE || lfile == LF_PAGSCA, "Invalid file");
|
||||
TLocalisamfile pagsca(lfile);
|
||||
int err = pagsca.readat(recno);
|
||||
if (err == NOERR)
|
||||
err = pagsca.remove();
|
||||
return err;
|
||||
}
|
||||
|
||||
int TElimina_zoppi::kill_row(long numreg, char tipor, int numrig)
|
||||
{
|
||||
int lf = 0;
|
||||
switch (tipor)
|
||||
{
|
||||
case 'C': lf = LF_RMOV; break;
|
||||
case 'I': lf = LF_RMOVIVA; break;
|
||||
case 'T': lf = LF_MOV; break;
|
||||
case 'P': return kill_game(numreg, numrig);
|
||||
case 'S':
|
||||
case 'G': return kill_pagsca(numreg, numrig);
|
||||
default : break;
|
||||
}
|
||||
|
||||
TLocalisamfile rmov(lf);
|
||||
rmov.put(RMV_NUMREG, numreg);
|
||||
if (lf != LF_MOV)
|
||||
rmov.put(RMV_NUMRIG, numrig);
|
||||
int err = rmov.read();
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = rmov.remove();
|
||||
if (err == NOERR && lf == LF_MOV)
|
||||
{
|
||||
// Cancella anche le righe collegate alla testata
|
||||
for (int r = 1; kill_row(numreg, 'C', r) == NOERR; r++);
|
||||
for (int r = 1; kill_row(numreg, 'I', r) == NOERR; r++);
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
void TElimina_zoppi::main_loop()
|
||||
{
|
||||
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, LF_MOV, LF_RMOV, LF_RMOVIVA, LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||
|
||||
TMask m(app_name(), 1, 30, 5);
|
||||
m.add_number(DLG_USER, 0, TR("Codice ditta "), 1, 1, 5, "BUF").set_handler(firm_handler);
|
||||
m.add_button(DLG_ELABORA, 0, "", -12, -1, 10, 2, "", BMP_ELABORA).set_exit_key(K_ENTER);
|
||||
m.add_button(DLG_QUIT, 0, "", -22, -1, 10, 2);
|
||||
|
||||
while (m.run() != K_QUIT)
|
||||
{
|
||||
TArray_sheet sheet(0, 0, 0, 0, app().app_name(), HR("@1|Codice@6|Riga@5|Anno@R|Importo@20R|Grp@R|Cnt@R|Sottoc@R|Descrizione@50"));
|
||||
TString_array& arr = sheet.rows_array();
|
||||
bool ok = test_row_file(LF_RMOV, arr);
|
||||
if (ok)
|
||||
ok = test_row_file(LF_RMOVIVA, arr);
|
||||
if (ok)
|
||||
ok = test_head_file(arr);
|
||||
if (ok)
|
||||
ok = test_row_file(LF_PARTITE, arr);
|
||||
if (ok)
|
||||
ok = test_scrow_file(LF_SCADENZE, arr);
|
||||
if (ok)
|
||||
ok = test_scrow_file(LF_PAGSCA, arr);
|
||||
if (ok)
|
||||
arr.sort();
|
||||
if (ok && sheet.run() == K_ENTER)
|
||||
{
|
||||
const long total = sheet.checked();
|
||||
if (total > 0 &&
|
||||
delete_box(FR("Confermare l'eliminazione di %ld righe."), total))
|
||||
{
|
||||
TProgress_monitor pi(total, TR("Eliminazione righe..."));
|
||||
FOR_EACH_ARRAY_ROW(arr, i, riga)
|
||||
{
|
||||
if (sheet.checked(i))
|
||||
{
|
||||
if (!pi.add_status())
|
||||
break;
|
||||
|
||||
TString16 str = riga->get(2);
|
||||
char tipor = str[0];
|
||||
int numrig = atoi(str.mid(1));
|
||||
kill_row(riga->get_long(1), tipor, numrig);
|
||||
}
|
||||
}
|
||||
message_box(TR("Si consiglia di eseguire il ricalcolo\ndei saldi dal menu di prima nota."));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void elimina_zoppi(int argc, char* argv[])
|
||||
{
|
||||
TElimina_zoppi ez;
|
||||
ez.run(argc, argv, ez.app_name());
|
||||
}
|
80
src/cg01/cg1308.cpp
Normal file
80
src/cg01/cg1308.cpp
Normal file
@ -0,0 +1,80 @@
|
||||
// Setta il mese liquidazione sui movimenti del registro vendite
|
||||
#include <applicat.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
#include "cglib.h"
|
||||
|
||||
#include <mov.h>
|
||||
#include "cg1300.h"
|
||||
|
||||
class TImposta_meseliq : public TSkeleton_application
|
||||
{
|
||||
|
||||
protected:
|
||||
static bool prot_handler(TMask_field& f, KEY k);
|
||||
virtual void main_loop();
|
||||
public:
|
||||
TImposta_meseliq () {};
|
||||
virtual ~TImposta_meseliq() {};
|
||||
};
|
||||
|
||||
bool TImposta_meseliq::prot_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_ENTER && f.to_check(k))
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const long da = m.get_long(F_DA);
|
||||
const long a = m.get_long(F_A);
|
||||
if (a < da)
|
||||
return f.error_box(TR("L'intervallo dei numeri protocollo specificati non e' valido."));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TImposta_meseliq::main_loop()
|
||||
{
|
||||
TString expr, es, reg;
|
||||
TDate d(TODAY);
|
||||
TMask m("cg1300e");
|
||||
m.set_handler(F_A, prot_handler);
|
||||
m.set_handler(F_DA, prot_handler);
|
||||
|
||||
TRelation r(LF_MOV);
|
||||
TCursor c(&r);
|
||||
TLocalisamfile& fl = c.file();
|
||||
TEsercizi_contabili esc;
|
||||
|
||||
|
||||
while (m.run() != K_QUIT)
|
||||
{
|
||||
const int meseliq = m.get_int(F_PASS);
|
||||
|
||||
d.set_year(m.get_int(F_ANNO));
|
||||
es.format("%04d",esc.date2esc(d));
|
||||
expr.format("(ANNOES==\"%s\")&&(REG==\"%s\")&&(STR((STR(PROTIVA))>=%ld))&&(STR((STR(PROTIVA))<=%ld))",
|
||||
(const char*)es, (const char*) m.get(F_REG), m.get_long(F_DA), m.get_long(F_A));
|
||||
c.setfilter(expr); // Setta l'espressione filtro
|
||||
|
||||
const long items = c.items();
|
||||
if (items == 0)
|
||||
continue;
|
||||
|
||||
TProgind* pi = new TProgind(c.items(), TR("Aggiornamento mese liquidazione in corso..."), FALSE, TRUE, 50);
|
||||
for (c = 0L; c.pos() < items; c+=1L) //scorre i movimenti e li aggiorna
|
||||
{
|
||||
if (c.pos() & 0x7F)
|
||||
pi->addstatus(1L);
|
||||
fl.put(MOV_MESELIQ,meseliq);
|
||||
fl.rewrite();
|
||||
}
|
||||
delete pi;
|
||||
warning_box(FR("Aggiornati %ld records."),c.items());
|
||||
}
|
||||
}
|
||||
|
||||
void setta_meseliq(int argc, char* argv[])
|
||||
{
|
||||
TImposta_meseliq a;
|
||||
a.run(argc, argv, TR("Impostazione mese liq."));
|
||||
}
|
373
src/cg01/cg1309.cpp
Normal file
373
src/cg01/cg1309.cpp
Normal file
@ -0,0 +1,373 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <isam.h>
|
||||
#include <progind.h>
|
||||
#include <recset.h>
|
||||
#include <validate.h>
|
||||
|
||||
#include "cg1300l.h"
|
||||
#include <clifo.h>
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCheck_PIVA_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TCheck_PIVA_mask : public TAutomask
|
||||
{
|
||||
TToken_string _row;
|
||||
int _last_row;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
void load_sheet();
|
||||
bool save_sheet();
|
||||
void update_sheet();
|
||||
void dirty_sheet_row();
|
||||
|
||||
public:
|
||||
|
||||
TCheck_PIVA_mask() : TAutomask("cg1300l"), _last_row(0) {}
|
||||
};
|
||||
|
||||
int sort(TSheet_field & s, int r1, int r2)
|
||||
{
|
||||
const int key = s.mask().get_int(F_SORT);
|
||||
|
||||
switch (key)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
const TString & p1 = s.get_str_row_cell(r1, S_PAIV);
|
||||
const TString & p2 = s.get_str_row_cell(r2, S_PAIV);
|
||||
|
||||
return strcmp(p1, p2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
const TString & c1 = s.get_str_row_cell(r1, S_COFI);
|
||||
const TString & c2 = s.get_str_row_cell(r2, S_COFI);
|
||||
|
||||
return strcmp(c1, c2);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
long c1 = s.get_long_row_cell(r1, S_CODCF);
|
||||
long c2 = s.get_long_row_cell(r2, S_CODCF);
|
||||
|
||||
return c1 - c2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Carica lo sheet in base alle impostazioni correnti (F_CLIFO, F_COFI)
|
||||
void TCheck_PIVA_mask::load_sheet()
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
// Elenco di tutti i clienti (o fornitori)
|
||||
TISAM_recordset clifo("USE CLIFO\nFROM TIPOCF=#TIPO\nTO TIPOCF=#TIPO");
|
||||
|
||||
clifo.set_var("#TIPO", TVariant(get(F_TIPO)));
|
||||
|
||||
TProgind pi(clifo.items(), TR("Scansione anagrafica"));
|
||||
TRectype paiv_rec(LF_CLIFO);
|
||||
TRectype cofi_rec(LF_CLIFO);
|
||||
|
||||
s.reset();
|
||||
for (bool ok = clifo.move_first(); pi.addstatus() && ok; ok = clifo.move_next())
|
||||
{
|
||||
TToken_string msg(50, '\n');
|
||||
const TString4 tipo = clifo.get(CLI_TIPOCF).as_string();
|
||||
const long codice = clifo.get(CLI_CODCF).as_int();
|
||||
TString4 alleg = clifo.get(CLI_ALLEG).as_string();
|
||||
const TString4 stato = clifo.get(CLI_STATOPAIV).as_string();
|
||||
const TString4 tipoana = clifo.get(CLI_TIPOAPER).as_string();
|
||||
const TString4 occas = clifo.get(CLI_OCCAS).as_string();
|
||||
|
||||
if (occas.blank())
|
||||
{
|
||||
const TString & paiv = clifo.get(CLI_PAIV).as_string();
|
||||
|
||||
if (stato.blank() || stato == "IT" || !real::is_natural(paiv))
|
||||
{
|
||||
if (tipoana != "F" && paiv.blank())
|
||||
{
|
||||
if (alleg != "6" && alleg != "7")
|
||||
msg.add(TR("Partita IVA mancante"));
|
||||
}
|
||||
else
|
||||
if (tipoana != "F" && !pi_check("", paiv))
|
||||
msg.add(TR("Partita IVA errata"));
|
||||
else
|
||||
{
|
||||
if (paiv.full())
|
||||
{
|
||||
paiv_rec.zero();
|
||||
paiv_rec.put(CLI_TIPOCF, tipo);
|
||||
paiv_rec.put(CLI_PAIV, paiv);
|
||||
|
||||
TCursor c(new TRelation(LF_CLIFO), "", 5, &paiv_rec, &paiv_rec);
|
||||
const int items = c.items();
|
||||
|
||||
if (items > 1)
|
||||
{
|
||||
for (c = 0L; codice == c.curr().get_long(CLI_CODCF) && c.pos() < items; ++c);
|
||||
|
||||
msg.add(format(FR("Partita IVA già utilizzato per il codice %ld"), c.curr().get_long(CLI_CODCF)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const TString cofi = clifo.get(CLI_COFI).as_string();
|
||||
|
||||
if (cofi.blank())
|
||||
msg.add(TR("Codice Fiscale mancante"));
|
||||
else
|
||||
if (!cf_check("", cofi))
|
||||
msg.add(TR("Codice Fiscale errato"));
|
||||
else
|
||||
{
|
||||
if (cofi.full())
|
||||
{
|
||||
|
||||
cofi_rec.zero();
|
||||
cofi_rec.put(CLI_TIPOCF, tipo);
|
||||
cofi_rec.put(CLI_COFI, cofi);
|
||||
|
||||
TCursor c(new TRelation(LF_CLIFO), "", 4, &cofi_rec, &cofi_rec);
|
||||
const int items = c.items();
|
||||
|
||||
if (items > 1)
|
||||
{
|
||||
for (c = 0L; codice == c.curr().get_long(CLI_CODCF) && c.pos() < items; ++c);
|
||||
|
||||
msg.add(format(FR("Codice fiscale già utilizzato per il codice %ld"), c.curr().get_long(CLI_CODCF)));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (msg.full())
|
||||
{
|
||||
// Riga sheet: Selezione|Codice|RagioneSociale|P.IVA|C.Fiscale|Messaggio
|
||||
int r = s.set_row_cell(S_CODCF, codice);
|
||||
|
||||
s.set_row_cell(S_RAGSOC, clifo.get(CLI_RAGSOC).as_string(), r);
|
||||
s.set_row_cell(S_PAIV, paiv, r);
|
||||
s.set_row_cell(S_COFI, cofi, r);
|
||||
if (alleg.blank())
|
||||
alleg = "0";
|
||||
s.set_row_cell(S_ALLEG, alleg, r);
|
||||
s.set_row_cell(S_SOSPESO, clifo.get(CLI_SOSPESO).as_bool(), r);
|
||||
s.set_row_cell(S_CODALLEG, clifo.get(CLI_CODALLEG).as_int(), r);
|
||||
s.set_row_cell(S_TIPOPERS, clifo.get(CLI_TIPOPERS).as_string(), r);
|
||||
msg.trim();
|
||||
s.set_row_cell(S_ERROR, msg, r);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
s.sort(sort);
|
||||
s.force_update();
|
||||
_row = s.items() > 0 ? s.row(0) : EMPTY_STRING;
|
||||
_last_row = 0;
|
||||
}
|
||||
|
||||
// Salva le righe spuntate dello sheet
|
||||
bool TCheck_PIVA_mask::save_sheet()
|
||||
{
|
||||
// Tengo pronto il file per fare gli aggiornamenti
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
|
||||
if (s.items() > 0L && yesnocancel_box(TR("Si desidera salvare le modifiche?")) == K_YES)
|
||||
{
|
||||
// Scandisco solo le righe "spuntate"
|
||||
FOR_EACH_SHEET_ROW_LOOP(s, r)
|
||||
if (s.get_bool_row_cell(r, S_DIRTY))
|
||||
{
|
||||
clifo.put(CLI_TIPOCF, get(F_TIPO));
|
||||
|
||||
const long codcf = s.get_long_row_cell(r, S_CODCF);
|
||||
|
||||
clifo.put(CLI_CODCF, codcf);
|
||||
|
||||
int err = clifo.read(_isequal, _lock); // Locco il cliente da aggiornare
|
||||
|
||||
if (err == NOERR)
|
||||
{
|
||||
clifo.put(CLI_PAIV, s.get_str_row_cell(r, S_PAIV));
|
||||
clifo.put(CLI_COFI, s.get_str_row_cell(r, S_COFI));
|
||||
|
||||
TString alleg = s.get_str_row_cell(r, S_ALLEG);
|
||||
|
||||
if (alleg == "0")
|
||||
alleg.cut(0);
|
||||
clifo.put(CLI_ALLEG, alleg);
|
||||
clifo.put(CLI_SOSPESO, s.get_bool_row_cell(r, S_SOSPESO));
|
||||
err = clifo.rewrite(); // Aggiorno il record
|
||||
}
|
||||
|
||||
if (err != NOERR)
|
||||
return error_box("Errore %d durante l'aggiornamento del codice %ld", err, codcf);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Salva eventuali modifiche pendenti e ricarica lo sheet
|
||||
// in base alle impostazioni correnti sulla maschera principale
|
||||
void TCheck_PIVA_mask::update_sheet()
|
||||
{
|
||||
if (save_sheet())
|
||||
load_sheet();
|
||||
}
|
||||
|
||||
// Segna come modificata (F_DIRTY) la riga corrente dello spreadsheet
|
||||
void TCheck_PIVA_mask::dirty_sheet_row()
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
|
||||
s.set_row_cell(S_DIRTY, true, s.selected());
|
||||
s.force_update(s.selected());
|
||||
}
|
||||
|
||||
bool TCheck_PIVA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_TIPO:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
update_sheet();
|
||||
break;
|
||||
case F_SORT:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
|
||||
s.sort(sort);
|
||||
s.force_update();
|
||||
}
|
||||
break;
|
||||
case F_RESET:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
|
||||
FOR_EACH_SHEET_ROW_LOOP(s, r)
|
||||
s.set_row_cell(S_DIRTY, false, r);
|
||||
s.force_update();
|
||||
}
|
||||
break;
|
||||
case F_CLIFO:
|
||||
if (e == se_query_modify || e == se_enter)
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
int r = s.selected();
|
||||
|
||||
if (_last_row != r && _row != s.row(_last_row))
|
||||
{
|
||||
s.set_row_cell(S_DIRTY, true, _last_row);
|
||||
s.force_update(_last_row);
|
||||
}
|
||||
_row = s.row(r);
|
||||
_last_row = r;
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if (e == fe_button)
|
||||
{
|
||||
if (save_sheet())
|
||||
load_sheet();
|
||||
}
|
||||
else
|
||||
if (e == fe_close)
|
||||
save_sheet();
|
||||
break;
|
||||
case S_PAIV:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
if (!pi_check("", o.get()))
|
||||
return o.error_box("Partita IVA errata");
|
||||
}
|
||||
break;
|
||||
case S_COFI:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
if (!cf_check("", o.get()))
|
||||
return o.error_box("Codice fiscale errato");
|
||||
}
|
||||
break;
|
||||
case S_SOSPESO:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
int r = s.selected();
|
||||
|
||||
s.set_row_cell(S_SOSPESO, o.get_bool(), r);
|
||||
s.force_update(r);
|
||||
}
|
||||
break;
|
||||
case DLG_USER:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TSheet_field& s = sfield(F_CLIFO);
|
||||
TMask& m = o.mask();
|
||||
TLocalisamfile clifo(LF_CLIFO); // Riempio la chiave 1 di CLIFO
|
||||
|
||||
clifo.put(CLI_TIPOCF, get(F_TIPO));
|
||||
clifo.put(CLI_CODCF, m.get(S_CODCF));
|
||||
if (clifo.curr().edit()) // Modifica interattiva del cliente
|
||||
{
|
||||
if (clifo.read() == NOERR) // Se riesco a rileggerlo ...
|
||||
{
|
||||
int r = s.selected();
|
||||
|
||||
s.set_row_cell(S_RAGSOC, clifo.get(CLI_RAGSOC), r); // aggiorno la ragione sociale,
|
||||
s.set_row_cell(S_COFI, clifo.get(CLI_COFI), r); // il codice fiscale
|
||||
s.set_row_cell(S_PAIV, clifo.get(CLI_PAIV), r); // la partita IVA
|
||||
|
||||
TString4 alleg = clifo.get(CLI_ALLEG);
|
||||
|
||||
if (alleg.blank())
|
||||
alleg = "0";
|
||||
s.set_row_cell(S_ALLEG, alleg, r); // l'allegato
|
||||
s.set_row_cell(S_SOSPESO, clifo.get(CLI_SOSPESO), r); // il sospeso
|
||||
s.force_update(r);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCheck_PIVA
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TCheck_PIVA : public TSkeleton_application
|
||||
{
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TCheck_PIVA::main_loop()
|
||||
{
|
||||
TSheet_field::set_line_number_width(7);
|
||||
TCheck_PIVA_mask m;
|
||||
|
||||
m.run();
|
||||
}
|
||||
|
||||
void controlla_PIVA(int argc, char* argv[])
|
||||
{
|
||||
TCheck_PIVA cp;
|
||||
|
||||
cp.run(argc, argv, TR("Controllo Partita IVA"));
|
||||
}
|
140
src/cg01/cg1310.cpp
Normal file
140
src/cg01/cg1310.cpp
Normal file
@ -0,0 +1,140 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <relation.h>
|
||||
#include <reputils.h>
|
||||
|
||||
#include <clifo.h>
|
||||
#include "cfban.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TAgg_IBAN_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TAgg_IBAN_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TAgg_IBAN_mask() : TAutomask("cg1310") { }
|
||||
};
|
||||
|
||||
bool TAgg_IBAN_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TIBAN_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TIBAN_app : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
void update(TRecord_array& a, TLog_report& log) const;
|
||||
void elabora() const;
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TIBAN_app::update(TRecord_array& a, TLog_report& log) const
|
||||
{
|
||||
const TRectype& row = a.row(a.last_row());
|
||||
|
||||
TString msg;
|
||||
msg << TR("Aggiornamento banca del ")
|
||||
<< row.get(CFBAN_TIPOCF) << '/' << row.get_long(CFBAN_CODCF)
|
||||
<< " : " << row.get(CFBAN_ABI) << '/' << row.get(CFBAN_CAB)
|
||||
<< " " << row.get(CFBAN_IBAN);
|
||||
|
||||
log.log(0, msg);
|
||||
|
||||
const int err = a.rewrite();
|
||||
if (err != NOERR)
|
||||
{
|
||||
msg.format(FR("Errore %d durante l'aggiornamento del file delle banche"), err);
|
||||
log.log(2, msg);
|
||||
}
|
||||
}
|
||||
|
||||
void TIBAN_app::elabora() const
|
||||
{
|
||||
TLog_report log;
|
||||
|
||||
TISAM_recordset clifo("USE CLIFO");
|
||||
TProgind pi(clifo.items(), clifo.cursor()->file(0).description());
|
||||
TRectype& curr = clifo.cursor()->curr();
|
||||
for (bool ok = clifo.move_first(); ok; ok = clifo.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
const TString80 iban = curr.get(CLI_IBAN);
|
||||
const TString8 abi = curr.get(CLI_CODABI);
|
||||
const TString8 cab = curr.get(CLI_CODCAB);
|
||||
if (iban.len() > 15 || atoi(cab) >= 1000)
|
||||
{
|
||||
TString16 key; key.format("%c|%ld|V", curr.get_char(CLI_TIPOCF), curr.get_long(CLI_CODCF));
|
||||
TRecord_array cfban(key, LF_CFBAN);
|
||||
if (iban.len() > 15)
|
||||
{
|
||||
int r = -1;
|
||||
for (r = cfban.last_row(); r > 0; r = cfban.pred_row(r))
|
||||
{
|
||||
const TRectype& row = cfban.row(r);
|
||||
if (row.get(CFBAN_IBAN) == iban)
|
||||
break;
|
||||
}
|
||||
if (r <= 0)
|
||||
{
|
||||
TRectype& row = cfban.row(-1, true);
|
||||
row.put(CFBAN_IBAN, iban);
|
||||
if (iban.starts_with("IT"))
|
||||
{
|
||||
row.put(CFBAN_ABI, iban.mid(5, 5));
|
||||
row.put(CFBAN_CAB, iban.mid(10, 5));
|
||||
row.put(CFBAN_NUMCC, iban.mid(15));
|
||||
}
|
||||
update(cfban, log);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int r = -1;
|
||||
for (r = cfban.last_row(); r > 0; r = cfban.pred_row(r))
|
||||
{
|
||||
const TRectype& row = cfban.row(r);
|
||||
if (row.get(CFBAN_ABI) == abi && row.get(CFBAN_CAB) == cab)
|
||||
break;
|
||||
}
|
||||
if (r <= 0)
|
||||
{
|
||||
TRectype& row = cfban.row(-1, true);
|
||||
row.put(CFBAN_ABI, abi);
|
||||
row.put(CFBAN_CAB, cab);
|
||||
row.put(CFBAN_NUMCC, curr.get(CLI_NUMCC));
|
||||
update(cfban, log);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.preview();
|
||||
}
|
||||
|
||||
void TIBAN_app::main_loop()
|
||||
{
|
||||
TAgg_IBAN_mask m;
|
||||
|
||||
if (m.run() == K_ENTER)
|
||||
elabora();
|
||||
}
|
||||
|
||||
void agg_iban(int argc, char* argv[])
|
||||
{
|
||||
TIBAN_app a;
|
||||
a.run(argc, argv, TR("Allineamento IBAN"));
|
||||
}
|
39
src/cg01/cg1310.uml
Normal file
39
src/cg01/cg1310.uml
Normal file
@ -0,0 +1,39 @@
|
||||
PAGE "Allineamento IBAN" -1 -1 60 5
|
||||
|
||||
NUMBER 101 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ditta "
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA 101
|
||||
OUTPUT 102 RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING 102 50
|
||||
BEGIN
|
||||
PROMPT 7 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 3 "Questa procedura allinea il campo IBAN in anagrafica clienti/fornitori "
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 4 "con l'elenco delle banche associate alla corrispondente anagrafica"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <elabar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
154
src/cg01/cg1311.cpp
Normal file
154
src/cg01/cg1311.cpp
Normal file
@ -0,0 +1,154 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <relation.h>
|
||||
#include <reputils.h>
|
||||
#include <sheet.h>
|
||||
|
||||
#include <mov.h>
|
||||
#include <nditte.h>
|
||||
#include <partite.h>
|
||||
#include <rmov.h>
|
||||
|
||||
class TXRef_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event fe, long jolly);
|
||||
void test_rmov();
|
||||
|
||||
public:
|
||||
TXRef_mask(const char* title);
|
||||
};
|
||||
|
||||
void TXRef_mask::test_rmov()
|
||||
{
|
||||
TLog_report log;
|
||||
|
||||
TFast_isamfile mov(LF_MOV);
|
||||
TFast_isamfile part(LF_PARTITE); part.setkey(2);
|
||||
|
||||
TString msg;
|
||||
TISAM_recordset rmov_set("USE RMOV");
|
||||
const TRectype& rmov = rmov_set.cursor()->curr();
|
||||
|
||||
{
|
||||
TProgress_monitor pm(rmov_set.items(), TR("Scansione righe contabili"));
|
||||
|
||||
for (bool ok = rmov_set.move_first(); ok; ok = rmov_set.move_next())
|
||||
{
|
||||
const long numreg = rmov.get_long(RMV_NUMREG);
|
||||
const int numrig = rmov.get_int(RMV_NUMRIG);
|
||||
|
||||
msg.format(FR("Riga %3d del movimento %7ld del %s: "), numrig, numreg, (const char*)rmov.get(RMV_DATAREG));
|
||||
|
||||
if (numreg != mov.get_long(MOV_NUMREG))
|
||||
{
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
if (mov.read() != NOERR)
|
||||
mov.zero();
|
||||
}
|
||||
if (numreg != mov.get_long(MOV_NUMREG))
|
||||
{
|
||||
msg << TR("manca il record di testata");
|
||||
log.log(2, msg);
|
||||
}
|
||||
if (rmov.get_char(RMV_ROWTYPE) == 'K')
|
||||
{
|
||||
part.put(PART_NREG, numreg);
|
||||
part.put(PART_NUMRIG, numrig);
|
||||
if (part.read() != NOERR)
|
||||
{
|
||||
msg << TR("manca il record di saldaconto");
|
||||
log.log(2, msg);
|
||||
}
|
||||
}
|
||||
if (!pm.add_status())
|
||||
break;
|
||||
}
|
||||
}
|
||||
log.preview();
|
||||
}
|
||||
|
||||
bool TXRef_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case DLG_USER:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TArray_sheet sheet(-1, -1, 70, 20, TR("Scelta ditta"), HR("Codice|Ragione Sociale@50"));
|
||||
TToken_string row;
|
||||
TLocalisamfile ditte(LF_NDITTE);
|
||||
|
||||
FOR_EACH_FILE_RECORD(ditte)
|
||||
{
|
||||
const long cod = ditte.get_long(NDT_CODDITTA);
|
||||
if (prefix().exist(cod))
|
||||
{
|
||||
row.cut(0);
|
||||
row.add(cod);
|
||||
row.add(ditte.get(NDT_RAGSOC));
|
||||
|
||||
const long pos = sheet.add(row);
|
||||
if (cod == prefix().get_codditta())
|
||||
sheet.select(pos);
|
||||
}
|
||||
}
|
||||
if (sheet.run() == K_ENTER)
|
||||
set(DLG_USER, sheet.row().get(0), 0x3);
|
||||
return false;
|
||||
}
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
const long cod = atol(o.get());
|
||||
if (prefix().exist(cod))
|
||||
prefix().set_codditta(cod);
|
||||
else
|
||||
return error_box(FR("La ditta %05ld non è attivata per la contabilità"), cod);
|
||||
}
|
||||
break;
|
||||
case DLG_SELECT:
|
||||
if (e == fe_button)
|
||||
{
|
||||
test_rmov();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TXRef_mask::TXRef_mask(const char* title) : TAutomask(title, 1, 30, 5)
|
||||
{
|
||||
add_number(DLG_USER, 0, TR("Codice ditta "), 1, 1, 5, "BUF");
|
||||
add_button(DLG_SELECT, 0, "", -12, -1, 10, 2);
|
||||
add_button(DLG_QUIT, 0, "", -22, -1, 10, 2);
|
||||
set_handlers();
|
||||
}
|
||||
|
||||
|
||||
class TXRef_check: public TSkeleton_application
|
||||
{
|
||||
public:
|
||||
const char* app_name() const { return TR("Controllo integrità archivi"); }
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TXRef_check::main_loop()
|
||||
{
|
||||
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, LF_MOV, LF_RMOV, LF_RMOVIVA,
|
||||
LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||
|
||||
TXRef_mask m(app_name());
|
||||
while (m.run() != K_QUIT);
|
||||
}
|
||||
|
||||
void xref_check(int argc, char* argv[])
|
||||
{
|
||||
TXRef_check ez;
|
||||
ez.run(argc, argv, ez.app_name());
|
||||
}
|
498
src/cg01/cg1312.cpp
Normal file
498
src/cg01/cg1312.cpp
Normal file
@ -0,0 +1,498 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <files.h>
|
||||
#include <isam.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <reputils.h>
|
||||
#include <utility.h>
|
||||
#include <validate.h>
|
||||
|
||||
#include <modaut.h>
|
||||
|
||||
#include "cgsaldac.h"
|
||||
#include "cglib.h"
|
||||
#include "cg1300m.h"
|
||||
|
||||
#include <clifo.h>
|
||||
#include <mov.h>
|
||||
#include <occas.h>
|
||||
#include <rmoviva.h>
|
||||
#include <pagsca.h>
|
||||
|
||||
#define AGR_PCON1 201
|
||||
#define AGR_PCON2 202
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCheck_ivadiff_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TCheck_ivadiff_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TCheck_ivadiff_mask() : TAutomask("cg1300m") { }
|
||||
};
|
||||
|
||||
// Carica lo sheet in base alle impostazioni correnti (F_CLIFO, F_COFI)
|
||||
bool TCheck_ivadiff_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CODDITTA:
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCheck_ivadiff
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
static bool partita_chiusa_al(const TPartita& p, const TDate& d)
|
||||
{
|
||||
bool c = p.chiusa();
|
||||
|
||||
if (c)
|
||||
{
|
||||
const TImporto imp = p.calcola_saldo_al(true, d, d, d);
|
||||
c = imp.is_zero();
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
class TCheck_ivadiff : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
void check_year(long firm);
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
static void LOG_IVA_DIFF(TLog_report & rep, TTrec & trec, const TRectype& id)
|
||||
{
|
||||
TString msg(300);
|
||||
|
||||
for (int f = 0; f < trec.fields(); f++)
|
||||
{
|
||||
TToken_string tmp = trec.fielddef(f);
|
||||
const TString val = id.get(tmp.get(0));
|
||||
const TFieldtypes type = (TFieldtypes) tmp.get_int();
|
||||
int len = tmp.get_int(); len = len < 10 ? 10 : len;
|
||||
|
||||
if ((type < _intfld) || (type == _charfld) || (type == _boolfld))
|
||||
len = -len;
|
||||
|
||||
const TString16 fmt = format("%%%ds", len);
|
||||
|
||||
msg << format(fmt, (const char *) val) << " ";
|
||||
}
|
||||
rep.log(0, msg);
|
||||
msg.cut(0);
|
||||
for (int i = 0; i < 132; i++)
|
||||
msg <<'_';
|
||||
rep.log(0, msg);
|
||||
}
|
||||
|
||||
void TCheck_ivadiff::check_year(long firm)
|
||||
{
|
||||
if (!(has_module(SCAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "cg", "GesSal")))
|
||||
{
|
||||
warning_box("Per l'iva differita o per cassa è necessario il saldaconto");
|
||||
return;
|
||||
}
|
||||
|
||||
TRelation rel(LF_MOV);
|
||||
rel.add(LF_RMOVIVA,"NUMREG=NUMREG");
|
||||
rel.add(LF_PCON,"GRUPPO=GRUPPO|CONTO=CONTO",1,LF_RMOVIVA,AGR_PCON1);
|
||||
rel.add(LF_PCON,"GRUPPO=GRUPPO|CONTO=CONTO|SOTTOCONTO=SOTTOCONTO",1,LF_RMOVIVA,AGR_PCON2);
|
||||
rel.add(LF_CAUSALI,"CODCAUS=CODCAUS");
|
||||
|
||||
TCursor cur(&rel, "", 4);
|
||||
TLocalisamfile & mov = cur.relation()->lfile();
|
||||
TLocalisamfile & rmoviva = cur.relation()->lfile(LF_RMOVIVA);
|
||||
TRectype from(cur.curr()); from.zero();
|
||||
TRectype to(from);
|
||||
TString8 fromreg("~"), toreg("0");
|
||||
TRelation regrel("REG");
|
||||
TCursor reg(®rel);
|
||||
TString4 codreg;
|
||||
long items = reg.items();
|
||||
TLocalisamfile id(LF_IVADIFF);
|
||||
TRectype& idcurr = id.curr();
|
||||
TString pimsg; pimsg << TR("Ricalcolo IVA differita ditta ") << firm;
|
||||
TLog_report rep(pimsg, "bagn011a");
|
||||
TTrec trec;
|
||||
TToken_string msg;
|
||||
TToken_string tmp;
|
||||
|
||||
rep.set_orientation(2);
|
||||
trec.get(LF_IVADIFF);
|
||||
for (int f = 0; f < trec.fields(); f++)
|
||||
{
|
||||
TToken_string tmp = trec.fielddef(f);
|
||||
const TString val = tmp.get(0);
|
||||
const TFieldtypes type = (TFieldtypes) tmp.get_int();
|
||||
int len = tmp.get_int(); len = len < 10 ? 10 : len;
|
||||
|
||||
if ((type < _intfld) || (type == _charfld) || (type == _boolfld))
|
||||
len = -len;
|
||||
|
||||
const TString16 fmt = format("%%%ds", len);
|
||||
|
||||
msg << format(fmt, (const char *) val) << " ";
|
||||
}
|
||||
rep.log(0, "");
|
||||
rep.log(0, msg);
|
||||
rep.log(0, "");
|
||||
for (reg = 0L; reg.pos() < items; ++reg)
|
||||
{
|
||||
codreg = reg.curr().get("CODTAB").mid(4);
|
||||
|
||||
if (codreg < fromreg)
|
||||
fromreg = codreg;
|
||||
if (codreg > toreg)
|
||||
toreg = codreg;
|
||||
}
|
||||
|
||||
from.put(MOV_REG, fromreg);
|
||||
to.put(MOV_REG, toreg);
|
||||
|
||||
const TString16 filter("LIQDIFF==\"X\"");
|
||||
|
||||
cur.freeze(false);
|
||||
cur.setregion(from, to);
|
||||
cur.setfilter(filter);
|
||||
items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
{
|
||||
TProgress_monitor pi(items, pimsg, false);
|
||||
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
if (!pi.set_status(cur.pos()))
|
||||
break;
|
||||
|
||||
const TDate data = mov.get(MOV_DATAREG);
|
||||
const int year = data.year();
|
||||
const TDate primo(1, 1, year);
|
||||
const TDate ultimo(31, 12, year);
|
||||
TString16 key; key.format("%05ld%04d", firm, year);
|
||||
TRectype & lia = (TRectype &) cache().get("%LIA", key);
|
||||
const TString4 freqviva = lia.get("S7");
|
||||
const TString4 codreg = mov.get("REG");
|
||||
TString16 s; s << year; s << format("%-3s", (const char *) codreg);
|
||||
const TRegistro & reg = cached_registro(codreg, year);
|
||||
const int liqmonth = mov.get_int(MOV_MESELIQ);
|
||||
const TString4 tipodoc = mov.get(MOV_TIPODOC);
|
||||
const bool corrisp = reg.corrispettivi();
|
||||
const tiporeg tipomov = reg.tipo_registro(); // 1=Vendite; 2=Acquisti
|
||||
TPartite_array arrpart; // Partite interessate
|
||||
TPointer_array pagscatt; // Righe di pagsca interessate
|
||||
const bool iva_diff = is_IVA_diff(mov.curr());
|
||||
const char sezfat = tipomov == vendita ? 'D' : 'A'; // Sezione preferita per fatture decisa in base a vendita->'A' o acquisto->'D'
|
||||
const char sezpag = (sezfat=='D') ? 'A' : 'D';
|
||||
const long numreg = mov.get_long(MOV_NUMREG);
|
||||
real tot_incassato, tot_da_incassare;
|
||||
bool game_found = false;
|
||||
|
||||
arrpart.add_numreg(numreg);
|
||||
const TPartita* p = arrpart.first();
|
||||
const int row = p ? p->mov2rig(numreg, 0) : 0;
|
||||
game_found = row > 0;
|
||||
if (game_found)
|
||||
{
|
||||
const TRiga_partite& rp = p->riga(row);
|
||||
TImporto pg_per, nc_per;
|
||||
const bool chiusa = partita_chiusa_al(*p, ultimo);
|
||||
|
||||
rp.calcola_pagato_periodo(primo, eotime, pg_per, nc_per, &pagscatt);
|
||||
if (pagscatt.items() >= 2)
|
||||
{
|
||||
// Fondo tra loro le righe generate dallo stesso pagamento
|
||||
for (int p = pagscatt.last(); p > 0; p--)
|
||||
{
|
||||
const TRectype& p0 = (const TRectype&)pagscatt[p];
|
||||
const TRectype& p1 = (const TRectype&)pagscatt[p-1];
|
||||
if (p0.get_int(PAGSCA_NRIGP) == p1.get_int(PAGSCA_NRIGP))
|
||||
{
|
||||
const real imp = p0.get_real(PAGSCA_IMPORTO);
|
||||
((TRectype&)p1).add(PAGSCA_IMPORTO, imp);
|
||||
pagscatt.destroy(p, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (iva_diff)
|
||||
{
|
||||
TPointer_array pagscaold;
|
||||
TImporto pg_tot, nc_tot;
|
||||
|
||||
rp.calcola_pagato_periodo(TDate(0L), ultimo, pg_tot, nc_tot, &pagscaold);
|
||||
// Controllo se ci siam persi delle note di credito negli anni scorsi
|
||||
if (!nc_tot.is_zero() && pagscaold.items() > pagscatt.items())
|
||||
{
|
||||
FOR_EACH_ARRAY_ITEM(pagscaold, i, obj)
|
||||
{
|
||||
const TRectype& pagsca = *(const TRectype*)obj;
|
||||
const int anno = pagsca.get_int(PAGSCA_ANNO);
|
||||
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||
// Appartiene all'anno scorso?
|
||||
if (anno < year && nrigp < 999) // 9999 on pagsca -> 999 on ivadiff
|
||||
{
|
||||
const TPartita& p = arrpart.partita(pagsca);
|
||||
const TRiga_partite& rp = p.riga(nrigp);
|
||||
// E' veramente una nota di credito?
|
||||
if (rp.tipo() == tm_nota_credito)
|
||||
{
|
||||
bool found = false;
|
||||
FOR_EACH_ARRAY_ITEM(pagscatt, j, ps)
|
||||
{
|
||||
if (ps == obj)
|
||||
{
|
||||
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
TLocalisamfile id(LF_IVADIFF);
|
||||
id.put(RMI_NUMREG, rmoviva.get(RMI_NUMREG));
|
||||
id.put(RMI_NUMRIG, rmoviva.get(RMI_NUMRIG));
|
||||
id.put("NUMPRO", nrigp);
|
||||
if (id.read(_isequal) != NOERR || id.get_int("ANNOLIQ") == 0)
|
||||
pagscatt.add(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TImporto incasso = pg_tot;
|
||||
TImporto saldo = rp.importo(false);
|
||||
|
||||
incasso += nc_tot;
|
||||
saldo += incasso;
|
||||
saldo.normalize(sezfat);
|
||||
incasso.normalize(sezpag);
|
||||
if (saldo.valore() > ZERO)
|
||||
tot_da_incassare = saldo.valore();
|
||||
if (incasso.valore() > ZERO)
|
||||
tot_incassato = incasso.valore();
|
||||
}
|
||||
}
|
||||
TISAM_recordset recset("USE IVADIFF\nFROM NUMREG=#NR\nTO NUMREG=#NR");
|
||||
recset.set_var("#NR", numreg);
|
||||
TLocalisamfile& id = recset.cursor()->file();
|
||||
TImporto saldo;
|
||||
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
const TImporto imp(id.get_char("SEZIONE"), id.get_real("IMPORTO"));
|
||||
saldo += imp;
|
||||
}
|
||||
|
||||
bool idchiusa = saldo.is_zero();
|
||||
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
id.put("CHIUSA", idchiusa);
|
||||
id.rewrite();
|
||||
}
|
||||
do
|
||||
{
|
||||
const int rmi_tipoatt = max(rmoviva.get_int(RMI_TIPOATT), 1); // Poteva capitare tipoatt == 0
|
||||
const TString4 codiva = rmoviva.get(RMI_CODIVA);
|
||||
TCodiceIVA civa(codiva);
|
||||
|
||||
if (!civa.ok())
|
||||
{
|
||||
error_box(FR("Codice IVA \"%s\" non riconosciuto alla riga %d del movimento %ld."),
|
||||
(const char*)codiva, rmoviva.get_int(RMI_NUMRIG), rmoviva.get_long(RMI_NUMREG));
|
||||
continue;
|
||||
}
|
||||
|
||||
const real imponibile_orig = rmoviva.get_real(RMI_IMPONIBILE);
|
||||
const real imposta_orig = rmoviva.get_real(RMI_IMPOSTA);
|
||||
const real lordo_orig = imponibile_orig + imposta_orig;
|
||||
char sezfat = (tipomov == vendita) ? 'D' : 'A';
|
||||
const TDate datareg = mov.get(MOV_DATAREG);
|
||||
const int numrig = rmoviva.get_int(RMI_NUMRIG);
|
||||
|
||||
id.put(RMI_NUMREG, numreg);
|
||||
id.put(RMI_NUMRIG, numrig);
|
||||
id.put("NUMPRO", 0);
|
||||
if (id.read(_isequal) != NOERR)
|
||||
{
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, numreg);
|
||||
id.put(RMI_NUMRIG, numrig);
|
||||
id.put("NUMPRO", 0);
|
||||
id.put(PART_TIPOMOV, tm_fattura);
|
||||
id.put("TIPOATT", rmi_tipoatt);
|
||||
id.put("ANNOLIQ", datareg.year());
|
||||
int mesereg = datareg.month();
|
||||
if (freqviva == "T")
|
||||
{
|
||||
const int resto = mesereg % 3;
|
||||
if (resto > 0)
|
||||
mesereg += 3-resto;
|
||||
}
|
||||
|
||||
id.put("MESELIQ", mesereg);
|
||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
id.put("TIPODIFF", 1);
|
||||
id.put(MOV_DATAREG, mov.get(MOV_DATADOC));
|
||||
id.put(RMI_CODIVA, codiva);
|
||||
id.put("SEZIONE", sezfat);
|
||||
|
||||
id.put("IMPORTO", imponibile_orig+imposta_orig);
|
||||
id.put(RMI_IMPONIBILE, imponibile_orig);
|
||||
id.put(RMI_IMPOSTA, imposta_orig);
|
||||
|
||||
if (id.write() == NOERR)
|
||||
LOG_IVA_DIFF(rep, trec, id.curr());
|
||||
}
|
||||
if (!pagscatt.empty())
|
||||
{
|
||||
const char sezpag = tipomov == vendita ? 'A' : 'D';
|
||||
real totfat = mov.get(MOV_TOTDOC);
|
||||
real tot = totfat;
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(pagscatt, r, obj)
|
||||
{
|
||||
const TRectype& pagsca = *(TRectype*)obj;
|
||||
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||
const long numreg = rmoviva.get_long(RMI_NUMREG);
|
||||
const int numrig = rmoviva.get_int(RMI_NUMRIG);
|
||||
const TPartita& p = arrpart.partita(pagsca);
|
||||
const TRiga_partite& rp = p.riga(nrigp);
|
||||
const long nregpag = rp.get_long(PART_NREG);
|
||||
const int nrigpag = rp.get_int(PART_NUMRIG);
|
||||
TImporto pagtmp = p.importo_pagsca(pagsca);
|
||||
pagtmp.normalize(sezpag);
|
||||
|
||||
real val_imp = pagtmp.valore() * lordo_orig / tot;
|
||||
real val_iva;
|
||||
|
||||
if (r == pagscatt.last() && chiusa)
|
||||
{
|
||||
TLocalisamfile rid(LF_IVADIFF);
|
||||
|
||||
rid.put(MOV_NUMREG, numreg);
|
||||
rid.put(RMI_NUMRIG, numrig);
|
||||
val_iva = imposta_orig;
|
||||
|
||||
bool pag_found = false;
|
||||
|
||||
int err = rid.read(_isgteq);
|
||||
|
||||
for (; err == NOERR ; err = rid.next())
|
||||
{
|
||||
const long ridnumreg =rid.get_long(RMI_NUMREG);
|
||||
const int ridnumrig = rid.get_int(RMI_NUMRIG);
|
||||
const tipo_movimento ridtipopag = (tipo_movimento) rid.get_int(PART_TIPOMOV);
|
||||
|
||||
if (ridnumreg == numreg && ridnumrig == numrig)
|
||||
{
|
||||
if ((ridtipopag != tm_fattura) && ((rid.get_long("NUMREGP") != nregpag) &&
|
||||
(rid.get_int("NUMRIGP") != nrigpag)))
|
||||
{
|
||||
pag_found = true;
|
||||
if (sezfat != sezpag)
|
||||
val_iva -= rid.get_real(RMI_IMPOSTA);
|
||||
else
|
||||
val_iva += rid.get_real(RMI_IMPOSTA);
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
if (!pag_found)
|
||||
val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
else
|
||||
civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
}
|
||||
}
|
||||
else
|
||||
val_iva = civa.scorpora(val_imp, TCurrency::get_firm_dec());
|
||||
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, numreg);
|
||||
id.put(RMI_NUMRIG, numrig);
|
||||
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
||||
id.put("NUMPRO", nrigp);
|
||||
if (id.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
id.zero();
|
||||
id.put(RMI_NUMREG, numreg);
|
||||
id.put(RMI_NUMRIG, numrig);
|
||||
id.put("NUMPRO", nrigp);
|
||||
id.put(MOV_DATAREG, mov.get(MOV_DATADOC));
|
||||
id.put("TIPOATT", rmi_tipoatt);
|
||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||
id.put("TIPODIFF", 1);
|
||||
id.put(RMI_CODIVA, codiva);
|
||||
|
||||
tipo_movimento tipomov_pag = tm_pagamento;
|
||||
|
||||
if (nrigp <= 0)
|
||||
fatal_box("numero riga pagamento errato partita : %s/%s - %d", (const char *) pagsca.get(PAGSCA_ANNO),
|
||||
(const char *) pagsca.get(PAGSCA_NUMPART),
|
||||
nrigp);
|
||||
TDate d = rp.get(PART_DATAPAG);
|
||||
|
||||
tipomov_pag = rp.tipo();
|
||||
id.put(PART_TIPOMOV, tipomov_pag);
|
||||
id.put("NUMREGP", rp.get(PART_NREG));
|
||||
id.put("NUMRIGP", rp.get(PART_NUMRIG));
|
||||
if (!d.ok())
|
||||
d = rp.get(PART_DATADOC);
|
||||
if (!d.ok())
|
||||
d = rp.get(PART_DATAREG);
|
||||
id.put("DATAREGP", d);
|
||||
id.put("ANNOLIQ", d.year());
|
||||
|
||||
int meseliq = d.month();
|
||||
|
||||
if (freqviva == "T")
|
||||
{
|
||||
const int resto = meseliq % 3;
|
||||
if (resto > 0)
|
||||
meseliq += 3-resto;
|
||||
}
|
||||
id.put("MESELIQ", meseliq);
|
||||
id.put("SEZIONE", pagtmp.sezione());
|
||||
id.put("IMPORTO", val_imp + val_iva);
|
||||
id.put(RMI_IMPONIBILE, val_imp);
|
||||
id.put(RMI_IMPOSTA, val_iva);
|
||||
|
||||
if (id.write() == NOERR)
|
||||
LOG_IVA_DIFF(rep, trec, id.curr());
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (cur.next_match(LF_RMOVIVA));
|
||||
}
|
||||
}
|
||||
}
|
||||
rep.print_or_preview();
|
||||
}
|
||||
|
||||
void TCheck_ivadiff::main_loop()
|
||||
{
|
||||
TCheck_ivadiff_mask m;
|
||||
while (m.run() == K_ENTER)
|
||||
check_year(m.get_long(F_CODDITTA));
|
||||
}
|
||||
|
||||
void controlla_ivadiff(int argc, char* argv[])
|
||||
{
|
||||
TCheck_ivadiff cp;
|
||||
cp.run(argc, argv, TR("Ricalcolo IVA differita"));
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user