Corretta gestione ricerca registri nelle causali

git-svn-id: svn://10.65.10.50/trunk@624 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-11-15 11:22:16 +00:00
parent af2a5b0337
commit cbfb9ffe34
11 changed files with 608 additions and 600 deletions

View File

@ -91,7 +91,6 @@ protected:
// int cancella(long items);
public:
bool _forcedCopy;
tipo_descr _tipo_des; // Il tipo di causale corrente
void compila_array (const TString&, int, int, int);
@ -184,7 +183,6 @@ void TCaus_app::causale_vendite()
if (_tipo_des == vendita)
return;
clear_descr();
_tipo_des = vendita;
int i=0;
@ -197,7 +195,6 @@ void TCaus_app::causale_vendite()
set_descr(i++, "C Imp. non soggetti");
set_descr(i++, "C Ritenute fiscali");
set_descr(i++, "C Ritenute soc.");
carica_righe_libere();
}
@ -206,7 +203,6 @@ void TCaus_app::causale_acquisti()
if (_tipo_des == acquisto)
return;
clear_descr();
_tipo_des = acquisto;
int i=0;
@ -219,7 +215,6 @@ void TCaus_app::causale_acquisti()
set_descr(i++, "C Imp. non soggetti");
set_descr(i++, "C Ritenute fiscali");
set_descr(i++, "C Ritenute soc.");
carica_righe_libere();
}
void TCaus_app::causale_ritenute()
@ -227,14 +222,12 @@ void TCaus_app::causale_ritenute()
if (_tipo_des == ritenuta_occas)
return;
clear_descr();
_tipo_des = ritenuta_occas;
int i=0;
set_descr (i++, "Costo");
set_descr (i++, "Cassa/banca");
set_descr (i++, "Erario");
carica_righe_libere();
}
void TCaus_app::causale_inc_pag()
@ -244,7 +237,6 @@ void TCaus_app::causale_inc_pag()
if (_tipo_des == tipo_des)
return;
clear_descr();
_tipo_des = tipo_des;
int i=0;
@ -261,7 +253,6 @@ void TCaus_app::causale_inc_pag()
set_descr ( i++, "C Ritenute fiscali");
if (_tipo_des == incasso_pagamento_gesval)
set_descr (i++, "C Differenza cambio");
carica_righe_libere();
}
////////////////////////////////////////////////////////////////////////////
@ -613,41 +604,23 @@ bool TCaus_app::sottoconto_hndl(TMask_field& f, KEY k)
void TCaus_app::compila_array(const TString& tpd, int tpm, int tpr, int m770)
{
_forcedCopy = FALSE;
clear_descr();
if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG")
{
if (saldaconto())
switch (tpm)
{
switch (tpm) {
case 3:
case 5:
case 6:
case 3:
case 5:
case 6:
if (saldaconto())
causale_inc_pag();
break;
case 0:
if (m770 == 6)
{
causale_ritenute();
}
else
{
_forcedCopy = TRUE;
clear_descr();
carica_righe_libere();
}
break;
default:
_forcedCopy = TRUE;
clear_descr();
carica_righe_libere();
break;
}
}
else
{ // NO saldaconto
_forcedCopy = TRUE;
clear_descr();
carica_righe_libere();
break;
case 0:
if (m770 == 6)
causale_ritenute();
default:
break;
}
}
else // C'e' il tipodoc.
@ -657,13 +630,8 @@ void TCaus_app::compila_array(const TString& tpd, int tpm, int tpr, int m770)
else
if (tpr == 2)
causale_acquisti();
else
{
_forcedCopy = TRUE;
clear_descr();
carica_righe_libere();
}
}
carica_righe_libere();
}
@ -895,7 +863,7 @@ void TCaus_app::read_firm_params()
_saldaconto = conf.get_bool("GesSal");
_valuta = conf.get_bool("GesVal");
_anno_iva = (int)conf.get_long("AnLiIv", "cg");
if (_anno_iva < 1900)
if (_anno_iva < 1800)
{
_anno_iva = TDate(TODAY).year();
error_box("Nei parametri ditta manca l'anno liquidazione IVA: assumo %d", _anno_iva);
@ -938,8 +906,6 @@ bool TCaus_app::user_create()
cs.sheet_mask().set_handler(SS_SOTTOCONTO+100, sottoconto_hndl);
cs.sheet_mask().set_handler(SS_SOTTOCONTO+200, sottoconto_hndl);
_forcedCopy = FALSE;
return TRUE;
}

View File

@ -143,7 +143,7 @@ END
NUMBER F_ANNOES 4
BEGIN
PROMPT 2 5 ""
FLAGS "H"
FLAGS "AH"
END
NUMBER F_TIPO_REG 1

View File

@ -290,7 +290,6 @@ void TPrimanota_application::init_mask(TMask& m)
read_caus(NULL, 0); // Setta campi obbligatori
fill_sheet(m);
const bool intra = _causale.intra();
const bool valintra = _causale.valintra();
const bool corrisp = _causale.corrispettivi();
@ -311,7 +310,7 @@ void TPrimanota_application::init_mask(TMask& m)
m.send_key(K_SHIFT+K_CTRL+forg, -2); // GROUP 2 (fornitori)
if (corrisp) m.hide(F_STATOPAIV);
m.show(F_CORRLIRE, intra);
m.show(F_CORRLIRE, valintra);
m.show(F_CORRVALUTA, valintra);
m.show(F_CODIVA, m.mode() == MODE_INS);
}

View File

@ -35,8 +35,6 @@ BEGIN
CHECKTYPE REQUIRED
END
// ANDREA E' ARRIVATO FINO A QUESTO PUNTO
NUMBER F_ANNOES 4
BEGIN
PROMPT 52 2 "Esercizio "
@ -47,6 +45,7 @@ END
DATE F_DATADOC
BEGIN
PROMPT 1 3 "Data del documento "
HELP "Data del documento che ha generato il movimento"
FIELD LF_MOV->DATADOC
WARNING "Specificare la data del documento"
END
@ -54,6 +53,7 @@ END
STRING F_NUMDOC 7
BEGIN
PROMPT 52 3 "Documento n. "
HELP "Numero del documento che ha generato il movimento"
FIELD LF_MOV->NUMDOC
WARNING "Specificare il numero documento"
END
@ -61,6 +61,7 @@ END
STRING F_DESCR 50
BEGIN
PROMPT 1 4 "Descrizione documento "
HELP "Descrizione del documento che ha generato il movimento"
FIELD LF_MOV->DESCR
END
@ -88,6 +89,7 @@ END
LIST I_SEZIONE1 1 8
BEGIN
PROMPT 1 7 "Riga 1 "
HELP "Sezione del conto della prima riga"
ITEM "D|Dare"
ITEM "A|Avere"
END
@ -95,6 +97,7 @@ END
NUMBER F_TOTALE 15
BEGIN
PROMPT 18 7 ""
HELP "Importo del conto di prima riga"
FIELD LF_MOV->TOTDOC
FLAGS "R"
PICTURE "."
@ -114,6 +117,7 @@ END
NUMBER F_GRUPPOCLIFO 3
BEGIN
PROMPT 51 7 ""
HELP "Codice del conto di prima riga"
CHECKTYPE REQUIRED
WARNING "Gruppo assente"
END
@ -121,6 +125,7 @@ END
NUMBER F_CONTOCLIFO 3
BEGIN
PROMPT 57 7 ""
HELP "Codice del conto di prima riga"
USE LF_PCON SELECT SOTTOCONTO==""
INPUT GRUPPO F_GRUPPOCLIFO
INPUT CONTO F_CONTOCLIFO
@ -136,6 +141,7 @@ END
NUMBER F_CLIENTE 6
BEGIN
PROMPT 65 7 ""
HELP "Codice del conto di prima riga"
FIELD LF_MOV->CODCF
USE LF_CLIFO
INPUT TIPOCF "C"
@ -151,6 +157,7 @@ END
NUMBER F_FORNITORE 6
BEGIN
PROMPT 65 7 ""
HELP "Codice del conto di prima riga"
FIELD LF_MOV->CODCF
USE LF_CLIFO
INPUT TIPOCF "F"
@ -166,6 +173,7 @@ END
NUMBER I_SOTTOCONTO 6
BEGIN
PROMPT 65 7 ""
HELP "Codice del conto di prima riga"
USE LF_PCON SELECT SOTTOCONTO != ""
INPUT SOTTOCONTO I_SOTTOCONTO
INPUT GRUPPO F_GRUPPOCLIFO
@ -185,6 +193,7 @@ END
LIST I_SEZIONE2 1 8
BEGIN
PROMPT 1 8 "Riga 2 "
HELP "Sezione del conto della prima riga"
ITEM "D|Dare"
ITEM "A|Avere"
END
@ -192,6 +201,7 @@ END
NUMBER I_IMPORTO2 15
BEGIN
PROMPT 18 8 ""
HELP "Importo del conto di seconda riga"
PICTURE "."
FLAGS "R"
END
@ -206,16 +216,19 @@ END
NUMBER I_GRUPPO2 3
BEGIN
PROMPT 51 8 ""
HELP "Codice del conto di seconda riga"
END
NUMBER I_CONTO2 3
BEGIN
PROMPT 57 8 ""
HELP "Codice del conto di seconda riga"
END
NUMBER I_SOTTOCONTO2 6
BEGIN
PROMPT 65 8 ""
HELP "Codice del conto di seconda riga"
COPY USE I_SOTTOCONTO
INPUT GRUPPO I_GRUPPO2
INPUT CONTO I_CONTO2
@ -234,6 +247,7 @@ END
LIST I_SEZIONE3 1 8
BEGIN
PROMPT 1 9 "Riga 3 "
HELP "Sezione del conto di terza riga"
ITEM "D|Dare"
ITEM "A|Avere"
END
@ -241,6 +255,7 @@ END
NUMBER I_IMPORTO3 15
BEGIN
PROMPT 18 9 ""
HELP "Importo del conto di terza riga"
PICTURE "."
FLAGS "R"
END
@ -255,16 +270,19 @@ END
NUMBER I_GRUPPO3 3
BEGIN
PROMPT 51 9 ""
HELP "Codice del conto di terza riga"
END
NUMBER I_CONTO3 3
BEGIN
PROMPT 57 9 ""
HELP "Codice del conto di terza riga"
END
NUMBER I_SOTTOCONTO3 6
BEGIN
PROMPT 65 9 ""
HELP "Codice del conto di terza riga"
COPY USE I_SOTTOCONTO
INPUT GRUPPO I_GRUPPO3
INPUT CONTO I_CONTO3
@ -281,6 +299,7 @@ END
LIST I_SEZIONE4 1 8
BEGIN
PROMPT 1 10 "Riga 4 "
HELP "Sezione del conto di quarta riga"
ITEM "D|Dare"
ITEM "A|Avere"
END
@ -288,6 +307,7 @@ END
NUMBER I_IMPORTO4 15
BEGIN
PROMPT 18 10 ""
HELP "Importo del conto di quarta riga"
PICTURE "."
FLAGS "R"
END
@ -302,16 +322,19 @@ END
NUMBER I_GRUPPO4 3
BEGIN
PROMPT 51 10 ""
HELP "Codice del conto di quarta riga"
END
NUMBER I_CONTO4 3
BEGIN
PROMPT 57 10 ""
HELP "Codice del conto di quarta riga"
END
NUMBER I_SOTTOCONTO4 6
BEGIN
PROMPT 65 10 ""
HELP "Codice del conto di quarta riga"
COPY USE I_SOTTOCONTO
INPUT GRUPPO I_GRUPPO4
INPUT CONTO I_CONTO4
@ -341,4 +364,3 @@ ENDPAGE
ENDMASK

View File

@ -40,18 +40,21 @@ END
STRING O_INDIRIZZO 40
BEGIN
PROMPT 2 4 "Indirizzo "
HELP "Indirizzo di residenza della persona"
FIELD INDIR
END
STRING O_NUMERO 6
BEGIN
PROMPT 55 4 "Numero "
HELP "Numero civico della residenza della persona"
FIELD CIV
END
STRING O_STATO 3
BEGIN
PROMPT 2 5 "Stato "
HELP "Stato di residenza della persona"
FIELD STATO
FLAGS "U"
USE %STA
@ -65,6 +68,7 @@ END
STRING O_COMUNE 4
BEGIN
PROMPT 27 5 "Comune "
HELP "Codice del comune di residenza della persona"
FIELD COM
FLAGS "U"
USE LF_COMUNI
@ -81,12 +85,14 @@ END
NUMBER O_CAP 5
BEGIN
PROMPT 56 5 "C.A.P. "
HELP "CAP della residenza della persona"
FIELD CAP
END
STRING O_DENCOM 50
BEGIN
PROMPT 2 6 "Denominazione "
HELP "Nome del comune di residenza della persona"
USE LF_COMUNI KEY 2
INPUT DENCOM O_DENCOM
DISPLAY "Denominazione@50" DENCOM
@ -111,12 +117,14 @@ END
DATE O_DATANAS
BEGIN
PROMPT 23 9 "Data "
HELP "Data di nascita della persona"
FIELD DNASC
END
STRING O_STATONAS 3
BEGIN
PROMPT 41 9 "Stato "
HELP "Codice dello stato di nascita della persona"
FIELD STATONASC
FLAGS "U"
COPY USE O_STATO
@ -129,6 +137,7 @@ END
STRING O_COMUNENAS 4
BEGIN
PROMPT 55 9 "Comune "
HELP "Codice del comune di nascita della persona"
FIELD COMNASC
FLAGS "U"
COPY USE O_COMUNE
@ -143,6 +152,7 @@ END
STRING O_DENCOMNAS 50
BEGIN
PROMPT 2 10 "Denominazione "
HELP "Nome del comune di nascita della persona"
COPY USE O_DENCOM
INPUT DENCOM O_DENCOMNAS
COPY DISPLAY O_DENCOM

View File

@ -1004,18 +1004,21 @@ bool TPrimanota_application::iva_sottoconto_handler(TMask_field& f, KEY key)
if (!suspended_handler(f, key))
return FALSE;
if (key == K_TAB && f.dirty() && !app().causale().corrispettivi())
if (key == K_TAB && f.dirty())
{
const TLocalisamfile& piano = ((TEdit_field&)f).browse()->cursor()->file();
int spric = piano.get_int("TIPOSPRIC");
if (spric == 2 || spric == 3)
if ((spric == 2 || spric == 3) && !app().causale().corrispettivi())
{
const TFixed_string td(app().causale().tipo_doc());
if (td == "FV" || td == "NC") spric = 4;
}
/*
TMask_field& s = f.mask().field(105);
if (app().iva() == iva_vendite || s.get().empty())
s.set(spric > 0 ? format("%d", spric) : "");
*/
f.mask().set(105, spric > 0 ? format("%d", spric) : "");
}
return TRUE;
}

View File

@ -127,6 +127,7 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
DISPLAY "C/R" TIPOCR
OUTPUT 109 SOTTOCONTO
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO

View File

@ -10,6 +10,7 @@ END
DATE F_FROMDATE
BEGIN
PROMPT 2 2 "Data "
HELP "Data del primo movimento provvisorio da eliminare"
USE LF_MOV KEY 2 SELECT PROVVIS="P"
INPUT DATAREG F_FROMDATE
INPUT NUMREG F_FROMREG
@ -32,6 +33,7 @@ END
GROUPBOX DLG_NULL 40 3
BEGIN
PROMPT 1 4 "Al movimento"
HELP "Data dell'ultimo movimento provvisorio da eliminare"
END
DATE F_TODATE

View File

@ -1,240 +1,240 @@
#include <applicat.h>
#include <lffiles.h>
#include <mask.h>
#include <isam.h>
#include <pconti.h>
#include <assoc.h>
#include <urldefid.h>
#include <prefix.h>
#include "cg4.h"
#include "cg4200.h"
class TCopia_archivi : public TApplication
{
TMask* _msk;
long _default_firm;
virtual bool create() ;
virtual bool destroy() ;
bool menu(MENU_TAG);
bool copyfile(int logicnum, long from, long to);
void clearivd(long to);
void copyivd(long from, long to);
public:
TCopia_archivi() : _msk(NULL) {}
};
bool TCopia_archivi::copyfile(int logicnum, long from, long to)
{
if (from > 0) set_firm(from);
else prefhndl->set("com");
TSystemisamfile file(logicnum);
TFilename t; t.tempdir(); t << "/tr" << logicnum;
if (file.dump(t) != NOERR)
return error_box("Impossibile leggere i dati da copiare errore n. %d", file.status());
set_firm(to);
TFilename s; s.tempdir(); s << "/sv" << logicnum;
if (file.dump(s) != NOERR)
return error_box("Impossibile salvare i dati originali errore n. %d", file.status());
TDir dir;
dir.get(logicnum, _lock, _nordir, _sysdirop);
dir.eod() = 0L;
dir.put(logicnum, _nordir, _sysdirop);
file.packindex();
if (file.load(t) != NOERR)
{
error_box("Impossibile scrivere i dati errore n. %d. Cerco di ripristinare i dati originali.", file.status());
dir.get(logicnum, _lock, _nordir, _sysdirop);
dir.eod() = 0L;
dir.put(logicnum, _nordir, _sysdirop);
file.packindex();
if (file.load(s))
error_box("Impossibile scrivere i dati originali errore n. %d", file.status());
return FALSE;
}
return TRUE;
}
void TCopia_archivi::clearivd(long to)
{
TLocalisamfile pcon(LF_PCON);
for (pcon.first(); pcon.good(); pcon.next())
{
pcon.put(PCN_SEZIVD, "0");
pcon.zero(PCN_LETTIVD);
pcon.zero(PCN_NUMRIVD);
pcon.zero(PCN_NUMIVD);
pcon.put(PCN_SEZIVDOPP, "0");
pcon.zero(PCN_LETTIVDOPP);
pcon.zero(PCN_NUMRIVDOPP);
pcon.zero(PCN_NUMIVDOPP);
pcon.rewrite();
}
}
void TCopia_archivi::copyivd(long from, long to)
{
if (from > 0) set_firm(from);
else prefhndl->set("com");
TLocalisamfile pcon(LF_PCON);
TAssoc_array riclass;
for (pcon.first(); pcon.good(); pcon.next())
{
TString16 key;
TToken_string data;
key.format("%03d%03d%06ld", pcon.get_int(PCN_GRUPPO),
pcon.get_int(PCN_CONTO), pcon.get_long(PCN_SOTTOCONTO));
data.add(pcon.get(PCN_SEZIVD));
data.add(pcon.get(PCN_LETTIVD));
data.add(pcon.get(PCN_NUMRIVD));
data.add(pcon.get(PCN_NUMIVD));
data.add(pcon.get(PCN_SEZIVDOPP));
data.add(pcon.get(PCN_LETTIVDOPP));
data.add(pcon.get(PCN_NUMRIVDOPP));
data.add(pcon.get(PCN_NUMIVDOPP));
riclass.add(key, data);
}
set_firm(to);
for (pcon.first(); pcon.good(); pcon.next())
{
TString16 key;
key.format("%03d%03d%06ld", pcon.get_int(PCN_GRUPPO),
pcon.get_int(PCN_CONTO), pcon.get_long(PCN_SOTTOCONTO));
TToken_string * data = (TToken_string *) riclass.objptr(key);
if (data == NULL)
{
pcon.put(PCN_SEZIVD, "0");
pcon.zero(PCN_LETTIVD);
pcon.zero(PCN_NUMRIVD);
pcon.zero(PCN_NUMIVD);
pcon.put(PCN_SEZIVDOPP, "0");
pcon.zero(PCN_LETTIVDOPP);
pcon.zero(PCN_NUMRIVDOPP);
pcon.zero(PCN_NUMIVDOPP);
}
else
{
pcon.put(PCN_SEZIVD, data->get(0));
pcon.put(PCN_LETTIVD, data->get());
pcon.put(PCN_NUMRIVD, data->get());
pcon.put(PCN_NUMIVD, data->get());
pcon.put(PCN_SEZIVDOPP, data->get());
pcon.put(PCN_LETTIVDOPP, data->get());
pcon.put(PCN_NUMRIVDOPP, data->get());
pcon.put(PCN_NUMIVDOPP, data->get());
}
pcon.rewrite();
}
}
bool TCopia_archivi::create()
{
_msk = new TMask("cg4200a") ;
_default_firm = get_firm();
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool TCopia_archivi::destroy()
{
if (_msk != NULL) delete _msk;
return TRUE;
}
bool TCopia_archivi::menu(MENU_TAG)
{
while (_msk->run() == K_ENTER)
{
const long from_firm = _msk->get_long(F_FROMFIRM);
const long to_firm = _msk->get_long(F_TOFIRM);
const bool copy_pcon = _msk->get_bool(F_PCON);
const bool copy_causali = _msk->get_bool(F_CAUS);
const bool copy_clifo = _msk->get_bool(F_CLIFO);
const bool copy_ivd = _msk->get_bool(F_IVD);
if (copy_pcon || copy_causali || copy_clifo || copy_ivd)
{
if (prefhndl->exist(to_firm))
{
set_firm(to_firm);
TLocalisamfile mov(LF_MOV);
if ((mov.eod() == 0) || (!copy_pcon && !copy_causali && !copy_clifo))
{
TString mess("Attenzione ");
int count = 0;
if (copy_pcon)
{
mess << "il piano dei conti";
count++;
}
if (copy_causali)
{
if (count > 0) mess << ",";
mess << " le causali";
count++;
}
if (copy_clifo)
{
if (count > 0) mess << ",";
mess << " i clienti e fornitori";
count++;
}
if (copy_ivd)
{
if (count > 0) mess << ",";
mess << " la riclassificazione IV direttiva";
count++;
}
mess << " della ditta " << to_firm;
if (count > 1)
mess << " saranno sovrascritti";
else
mess << " sara' sovrascritto";
mess << ". Devo continuare";
if (yesno_box((const char *) mess))
{
if (copy_pcon)
{
if (copyfile(LF_PCON, from_firm, to_firm) && !copy_ivd)
clearivd(to_firm);
}
if (copy_causali)
{
if (copyfile(LF_CAUSALI, from_firm, to_firm))
copyfile(LF_RCAUSALI, from_firm, to_firm);
}
if (copy_clifo)
copyfile(LF_CLIFO, from_firm, to_firm);
if (!copy_pcon && copy_ivd)
copyivd(from_firm, to_firm);
}
}
else error_box("La copia si puo' effettuare solo se non sono stati registrati movimenti");
set_firm(_default_firm);
}
else error_box("Gli archivi della ditta %d non sono stati ancora generati",to_firm);
_msk->reset();
}
}
return FALSE;
}
int cg4200(int argc, char** argv)
{
TCopia_archivi a ;
a.run(argc, argv, "Copia archivi");
return 0;
}
#include <applicat.h>
#include <isam.h>
#include <mask.h>
#include <pconti.h>
#include <assoc.h>
#include <urldefid.h>
#include <prefix.h>
#include "cg4.h"
#include "cg4200.h"
class TCopia_archivi : public TApplication
{
TMask* _msk;
long _default_firm;
virtual bool create() ;
virtual bool destroy() ;
bool menu(MENU_TAG);
bool copyfile(int logicnum, long from, long to);
void clearivd(long to);
void copyivd(long from, long to);
public:
TCopia_archivi() : _msk(NULL) {}
};
bool TCopia_archivi::copyfile(int logicnum, long from, long to)
{
if (from > 0) set_firm(from);
else prefhndl->set("com");
TSystemisamfile file(logicnum);
TFilename t; t.tempdir(); t << "/tr" << logicnum;
if (file.dump(t) != NOERR)
return error_box("Impossibile leggere i dati da copiare errore n. %d", file.status());
set_firm(to);
TFilename s; s.tempdir(); s << "/sv" << logicnum;
if (file.dump(s) != NOERR)
return error_box("Impossibile salvare i dati originali errore n. %d", file.status());
TDir dir;
dir.get(logicnum, _lock, _nordir, _sysdirop);
dir.eod() = 0L;
dir.put(logicnum, _nordir, _sysdirop);
file.packindex();
if (file.load(t) != NOERR)
{
error_box("Impossibile scrivere i dati errore n. %d. Cerco di ripristinare i dati originali.", file.status());
dir.get(logicnum, _lock, _nordir, _sysdirop);
dir.eod() = 0L;
dir.put(logicnum, _nordir, _sysdirop);
file.packindex();
if (file.load(s))
error_box("Impossibile scrivere i dati originali errore n. %d", file.status());
return FALSE;
}
return TRUE;
}
void TCopia_archivi::clearivd(long to)
{
TLocalisamfile pcon(LF_PCON);
for (pcon.first(); pcon.good(); pcon.next())
{
pcon.put(PCN_SEZIVD, "0");
pcon.zero(PCN_LETTIVD);
pcon.zero(PCN_NUMRIVD);
pcon.zero(PCN_NUMIVD);
pcon.put(PCN_SEZIVDOPP, "0");
pcon.zero(PCN_LETTIVDOPP);
pcon.zero(PCN_NUMRIVDOPP);
pcon.zero(PCN_NUMIVDOPP);
pcon.rewrite();
}
}
void TCopia_archivi::copyivd(long from, long to)
{
if (from > 0) set_firm(from);
else prefhndl->set("com");
TLocalisamfile pcon(LF_PCON);
TAssoc_array riclass;
for (pcon.first(); pcon.good(); pcon.next())
{
TString16 key;
TToken_string data;
key.format("%03d%03d%06ld", pcon.get_int(PCN_GRUPPO),
pcon.get_int(PCN_CONTO), pcon.get_long(PCN_SOTTOCONTO));
data.add(pcon.get(PCN_SEZIVD));
data.add(pcon.get(PCN_LETTIVD));
data.add(pcon.get(PCN_NUMRIVD));
data.add(pcon.get(PCN_NUMIVD));
data.add(pcon.get(PCN_SEZIVDOPP));
data.add(pcon.get(PCN_LETTIVDOPP));
data.add(pcon.get(PCN_NUMRIVDOPP));
data.add(pcon.get(PCN_NUMIVDOPP));
riclass.add(key, data);
}
set_firm(to);
for (pcon.first(); pcon.good(); pcon.next())
{
TString16 key;
key.format("%03d%03d%06ld", pcon.get_int(PCN_GRUPPO),
pcon.get_int(PCN_CONTO), pcon.get_long(PCN_SOTTOCONTO));
TToken_string * data = (TToken_string *) riclass.objptr(key);
if (data == NULL)
{
pcon.put(PCN_SEZIVD, "0");
pcon.zero(PCN_LETTIVD);
pcon.zero(PCN_NUMRIVD);
pcon.zero(PCN_NUMIVD);
pcon.put(PCN_SEZIVDOPP, "0");
pcon.zero(PCN_LETTIVDOPP);
pcon.zero(PCN_NUMRIVDOPP);
pcon.zero(PCN_NUMIVDOPP);
}
else
{
pcon.put(PCN_SEZIVD, data->get(0));
pcon.put(PCN_LETTIVD, data->get());
pcon.put(PCN_NUMRIVD, data->get());
pcon.put(PCN_NUMIVD, data->get());
pcon.put(PCN_SEZIVDOPP, data->get());
pcon.put(PCN_LETTIVDOPP, data->get());
pcon.put(PCN_NUMRIVDOPP, data->get());
pcon.put(PCN_NUMIVDOPP, data->get());
}
pcon.rewrite();
}
}
bool TCopia_archivi::create()
{
_msk = new TMask("cg4200a") ;
_default_firm = get_firm();
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool TCopia_archivi::destroy()
{
if (_msk != NULL) delete _msk;
return TRUE;
}
bool TCopia_archivi::menu(MENU_TAG)
{
while (_msk->run() == K_ENTER)
{
const long from_firm = _msk->get_long(F_FROMFIRM);
const long to_firm = _msk->get_long(F_TOFIRM);
const bool copy_pcon = _msk->get_bool(F_PCON);
const bool copy_causali = _msk->get_bool(F_CAUS);
const bool copy_clifo = _msk->get_bool(F_CLIFO);
const bool copy_ivd = _msk->get_bool(F_IVD);
if (copy_pcon || copy_causali || copy_clifo || copy_ivd)
{
if (prefhndl->exist(to_firm))
{
set_firm(to_firm);
TLocalisamfile mov(LF_MOV);
if ((mov.eod() == 0) || (!copy_pcon && !copy_causali && !copy_clifo))
{
TString mess("Attenzione ");
int count = 0;
if (copy_pcon)
{
mess << "il piano dei conti";
count++;
}
if (copy_causali)
{
if (count > 0) mess << ",";
mess << " le causali";
count++;
}
if (copy_clifo)
{
if (count > 0) mess << ",";
mess << " i clienti e fornitori";
count++;
}
if (copy_ivd)
{
if (count > 0) mess << ",";
mess << " la riclassificazione IV direttiva";
count++;
}
mess << " della ditta " << to_firm;
if (count > 1)
mess << " saranno sovrascritti";
else
mess << " sara' sovrascritto";
mess << ". Devo continuare";
if (yesno_box((const char *) mess))
{
if (copy_pcon)
{
if (copyfile(LF_PCON, from_firm, to_firm) && !copy_ivd)
clearivd(to_firm);
}
if (copy_causali)
{
if (copyfile(LF_CAUSALI, from_firm, to_firm))
copyfile(LF_RCAUSALI, from_firm, to_firm);
}
if (copy_clifo)
copyfile(LF_CLIFO, from_firm, to_firm);
if (!copy_pcon && copy_ivd)
copyivd(from_firm, to_firm);
}
}
else error_box("La copia si puo' effettuare solo se non sono stati registrati movimenti");
set_firm(_default_firm);
}
else error_box("Gli archivi della ditta %d non sono stati ancora generati",to_firm);
_msk->reset();
}
}
return FALSE;
}
int cg4200(int argc, char* argv[])
{
TCopia_archivi a ;
a.run(argc, argv, "Copia archivi");
return 0;
}

View File

@ -1,118 +1,123 @@
#include "cg4200.h"
PAGE "Copia da ditta a ditta" -1 -1 78 16
GROUPBOX DLG_NULL 76 6
BEGIN
PROMPT 1 1 "Copia da"
END
RADIOBUTTON F_FROMTYPE 60
BEGIN
PROMPT 13 2 ""
ITEMS "C|Archivi Comuni"
MESSAGE CLEAR,F_FROMFIRM|CLEAR,F_DFROMFIRM
ITEMS "D|Archivi Ditta"
MESSAGE ENABLE,F_FROMFIRM|ENABLE,F_DFROMFIRM
FLAGS "Z"
END
NUMBER F_FROMFIRM 5
BEGIN
PROMPT 4 5 "Ditta "
FLAGS "R"
USE LF_NDITTE KEY 1
CHECKTYPE NORMAL
INPUT CODDITTA F_FROMFIRM
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale @50" RAGSOC
OUTPUT F_FROMFIRM CODDITTA
OUTPUT F_DFROMFIRM RAGSOC
HELP "Codice della ditta da cui prelevare i dati"
WARNING "Ditta assente"
END
STRING F_DFROMFIRM 50
BEGIN
PROMPT 20 5 ""
USE LF_NDITTE KEY 2
CHECKTYPE NORMAL
INPUT RAGSOC F_DFROMFIRM
DISPLAY "Ragione sociale @50" RAGSOC
DISPLAY "Codice" CODDITTA
COPY OUTPUT F_FROMFIRM
HELP "Ragione sociale della ditta da cui prelevare i dati"
WARNING "Ditta assente"
END
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 7 "Copia su"
END
NUMBER F_TOFIRM 5
BEGIN
PROMPT 4 8 "Ditta "
FLAGS "FR"
COPY USE F_FROMFIRM
CHECKTYPE REQUIRED
INPUT CODDITTA F_TOFIRM
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale @50" RAGSOC
OUTPUT F_TOFIRM CODDITTA
OUTPUT F_DTOFIRM RAGSOC
HELP "Codice della ditta su cui duplicare i dati"
WARNING "Ditta assente"
END
STRING F_DTOFIRM 50
BEGIN
PROMPT 20 8 ""
COPY USE F_DFROMFIRM
CHECKTYPE NORMAL
INPUT RAGSOC F_DTOFIRM
COPY DISPLAY F_DFROMFIRM
COPY OUTPUT F_TOFIRM
HELP "Descrizione della ditta su cui duplicare i dati"
WARNING "Ditta assente"
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 1 10 "Archivi da duplicare"
END
BOOLEAN F_PCON
BEGIN
PROMPT 4 11 "Piano dei conti"
END
BOOLEAN F_CAUS
BEGIN
PROMPT 34 11 "Causali"
END
BOOLEAN F_CLIFO
BEGIN
PROMPT 54 11 "Clienti/Fornitori"
END
BOOLEAN F_IVD
BEGIN
PROMPT 4 12 "IV Direttiva C.E.E."
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
ENDMASK
#include "cg4200.h"
PAGE "Copia da ditta a ditta" -1 -1 78 16
GROUPBOX DLG_NULL 76 6
BEGIN
PROMPT 1 1 "Copia da"
END
RADIOBUTTON F_FROMTYPE 60
BEGIN
PROMPT 13 2 ""
HELP "Indicare il tipo di archivi da copiare"
ITEMS "C|Archivi Comuni"
MESSAGE CLEAR,F_FROMFIRM|CLEAR,F_DFROMFIRM
ITEMS "D|Archivi Ditta"
MESSAGE ENABLE,F_FROMFIRM|ENABLE,F_DFROMFIRM
FLAGS "Z"
END
NUMBER F_FROMFIRM 5
BEGIN
PROMPT 4 5 "Ditta "
FLAGS "R"
USE LF_NDITTE KEY 1
CHECKTYPE NORMAL
INPUT CODDITTA F_FROMFIRM
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale @50" RAGSOC
OUTPUT F_FROMFIRM CODDITTA
OUTPUT F_DFROMFIRM RAGSOC
HELP "Codice della ditta da cui prelevare i dati"
WARNING "Ditta assente"
END
STRING F_DFROMFIRM 50
BEGIN
PROMPT 20 5 ""
USE LF_NDITTE KEY 2
CHECKTYPE NORMAL
INPUT RAGSOC F_DFROMFIRM
DISPLAY "Ragione sociale @50" RAGSOC
DISPLAY "Codice" CODDITTA
COPY OUTPUT F_FROMFIRM
HELP "Ragione sociale della ditta da cui prelevare i dati"
WARNING "Ditta assente"
END
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 7 "Copia su"
END
NUMBER F_TOFIRM 5
BEGIN
PROMPT 4 8 "Ditta "
FLAGS "FR"
COPY USE F_FROMFIRM
CHECKTYPE REQUIRED
INPUT CODDITTA F_TOFIRM
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale @50" RAGSOC
OUTPUT F_TOFIRM CODDITTA
OUTPUT F_DTOFIRM RAGSOC
HELP "Codice della ditta su cui duplicare i dati"
WARNING "Ditta assente"
END
STRING F_DTOFIRM 50
BEGIN
PROMPT 20 8 ""
COPY USE F_DFROMFIRM
CHECKTYPE NORMAL
INPUT RAGSOC F_DTOFIRM
COPY DISPLAY F_DFROMFIRM
COPY OUTPUT F_TOFIRM
HELP "Ragione sociale della ditta su cui duplicare i dati"
WARNING "Ditta assente"
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 1 10 "Archivi da duplicare"
END
BOOLEAN F_PCON
BEGIN
PROMPT 4 11 "Piano dei conti"
HELP "Indicare se duplicare l'archivio piano dei conti"
END
BOOLEAN F_CAUS
BEGIN
PROMPT 34 11 "Causali"
HELP "Indicare se duplicare l'archivio causali"
END
BOOLEAN F_CLIFO
BEGIN
PROMPT 54 11 "Clienti/Fornitori"
HELP "Indicare se duplicare l'archivio clienti/fornitori"
END
BOOLEAN F_IVD
BEGIN
PROMPT 4 12 "IV Direttiva C.E.E."
HELP "Indicare se duplicare l'archivio IV Direttiva C.E.E."
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
ENDMASK

View File

@ -1,185 +1,185 @@
#include "cg5300a.h"
TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
PAGE "Parametri liquidazione" -1 -1 78 15
GROUPBOX DLG_NULL 71 3
BEGIN
PROMPT 4 0 "Ditta"
FLAGS "R"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 6 1 "Codice "
FLAGS "DFGR"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 20 1 ""
FLAGS "D"
END
NUMBER F_YEAR 4
BEGIN
PROMPT 6 3 "Anno "
HELP "Anno d'esercizio ??????"
FIELD LIA->CODTAB
USE LIA
INPUT CODTAB F_YEAR
DISPLAY "Anno@40" CODTAB
DISPLAY "@2" S0
OUTPUT F_YEAR CODTAB
KEY 1
FLAGS "RZ"
CHECKTYPE REQUIRED
ADD NONE
END
GROUPBOX DLG_NULL 71 5
BEGIN
PROMPT 4 4 "Parametri ditta"
END
LIST F_FREQ_VERS 14
BEGIN
PROMPT 6 5 "Frequenza versamenti "
HELP "Indicare la frequenza dei versamenti delle liquidazioni IVA"
ITEM "M|Mensile"
ITEM "T|Trimestrale"
FIELD LIA->S7
END
NUMBER F_CRED_PREC 15 0
BEGIN
PROMPT 6 6 "Credito precedente "
HELP "Eventuale credito di imposta dell'anno precedente"
FIELD LIA->R0
PICTURE "."
FLAGS "R"
END
NUMBER F_CRED_COST 15 0
BEGIN
PROMPT 6 7 "Credito di costo "
HELP "Eventuale crediti—o di costo dell'anno precedente"
FIELD LIA->R5
PICTURE "."
FLAGS "R"
END
SPREADSHEET F_SHEET_PLA 78 6
BEGIN
PROMPT 1 10 "Parametri attivita'"
ITEM "Attivita'@5"
ITEM "Tipo@1"
ITEM "% Pro-rata@6"
ITEM "Plafond art.8@15"
ITEM "Plafond art.8b@15"
ITEM "Plafond art.9@15"
END
ENDPAGE
ENDMASK
PAGE "" -1 -1 65 16
NUMBER F_CODATT 5
BEGIN
PROMPT 4 1 "Codice Attivita' "
FLAGS "DZG"
USE %AIS
INPUT CODTAB F_CODATT
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODATT CODTAB
OUTPUT F_DESATT S0
CHECKTYPE NORMAL
END
STRING F_DESATT 50 30
BEGIN
PROMPT 31 1 ""
FLAGS "D"
END
LIST F_TIPOATT 26
BEGIN
PROMPT 4 3 "Tipo "
HELP "Tipo di attivita' a della ditta"
FLAGS "U"
ITEM " |Altre"
ITEM "M|Mista"
ITEM "E|Mista evidenziata"
ITEM "S|Servizio o mista generica"
END
NUMBER F_PRORATA 6 2
BEGIN
PROMPT 4 5 "% Pro-Rata "
HELP "Percentuale di pro-rata ???????"
PICTURE ".2"
NUM_EXPR {(#F_PRORATA>=0.0)&&(#F_PRORATA<=100.0)}
WARNING "La percentuale deve essere compresa tra 0 e 100"
FLAGS "R"
GROUP 1
END
NUMBER F_P8 15
BEGIN
PROMPT 4 7 "Plafond art. 8 "
HELP "?????????????"
PICTURE "."
FLAGS "R"
GROUP 1
END
NUMBER F_P8B 15
BEGIN
PROMPT 4 9 "Plafond art. 8b "
HELP "????????????"
PICTURE "."
FLAGS "R"
GROUP 1
END
NUMBER F_P9 15
BEGIN
PROMPT 4 11 "Plafond art. 9 "
HELP "?????????????"
PICTURE "."
FLAGS "R"
GROUP 1
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_NULL 9 2
BEGIN
PROMPT -23 -1 "Azzera"
MESSAGE RESET,1@
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK
#include "cg5300a.h"
TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
PAGE "Parametri liquidazione" -1 -1 78 15
GROUPBOX DLG_NULL 71 3
BEGIN
PROMPT 4 0 "Ditta"
FLAGS "R"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 6 1 "Codice "
FLAGS "DFGR"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 20 1 ""
FLAGS "D"
END
NUMBER F_YEAR 4
BEGIN
PROMPT 6 3 "Anno "
HELP "Anno d'esercizio ??????"
FIELD LIA->CODTAB
USE LIA
INPUT CODTAB F_YEAR
DISPLAY "Anno@40" CODTAB
DISPLAY "@2" S0
OUTPUT F_YEAR CODTAB
KEY 1
FLAGS "RZ"
CHECKTYPE REQUIRED
ADD NONE
END
GROUPBOX DLG_NULL 71 5
BEGIN
PROMPT 4 4 "Parametri ditta"
END
LIST F_FREQ_VERS 14
BEGIN
PROMPT 6 5 "Frequenza versamenti "
HELP "Indicare la frequenza dei versamenti delle liquidazioni IVA"
ITEM "M|Mensile"
ITEM "T|Trimestrale"
FIELD LIA->S7
END
NUMBER F_CRED_PREC 15 0
BEGIN
PROMPT 6 6 "Credito precedente "
HELP "Eventuale credito di imposta dell'anno precedente"
FIELD LIA->R0
PICTURE "."
FLAGS "R"
END
NUMBER F_CRED_COST 15 0
BEGIN
PROMPT 6 7 "Credito di costo "
HELP "Eventuale crediti—o di costo dell'anno precedente"
FIELD LIA->R5
PICTURE "."
FLAGS "R"
END
SPREADSHEET F_SHEET_PLA 78 6
BEGIN
PROMPT 1 10 "Parametri attivita'"
ITEM "Attivita'@5"
ITEM "Tipo@1"
ITEM "% Pro-rata@6"
ITEM "Plafond art.8@15"
ITEM "Plafond art.8b@15"
ITEM "Plafond art.9@15"
END
ENDPAGE
ENDMASK
PAGE "" -1 -1 65 16
NUMBER F_CODATT 5
BEGIN
PROMPT 4 1 "Codice Attivita' "
FLAGS "DZG"
USE %AIS
INPUT CODTAB F_CODATT
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODATT CODTAB
OUTPUT F_DESATT S0
CHECKTYPE NORMAL
END
STRING F_DESATT 50 30
BEGIN
PROMPT 31 1 ""
FLAGS "D"
END
LIST F_TIPOATT 26
BEGIN
PROMPT 4 3 "Tipo "
HELP "Tipo di attivita' a della ditta"
FLAGS "U"
ITEM " |Altre"
ITEM "M|Mista"
ITEM "E|Mista evidenziata"
ITEM "S|Servizio o mista generica"
END
NUMBER F_PRORATA 6 2
BEGIN
PROMPT 4 5 "% Pro-Rata "
HELP "Percentuale di pro-rata ???????"
PICTURE ".2"
NUM_EXPR {(#F_PRORATA>=0.0)&&(#F_PRORATA<=100.0)}
WARNING "La percentuale deve essere compresa tra 0 e 100"
FLAGS "R"
GROUP 1
END
NUMBER F_P8 15
BEGIN
PROMPT 4 7 "Plafond art. 8 "
HELP "?????????????"
PICTURE "."
FLAGS "R"
GROUP 1
END
NUMBER F_P8B 15
BEGIN
PROMPT 4 9 "Plafond art. 8b "
HELP "????????????"
PICTURE "."
FLAGS "R"
GROUP 1
END
NUMBER F_P9 15
BEGIN
PROMPT 4 11 "Plafond art. 9 "
HELP "?????????????"
PICTURE "."
FLAGS "R"
GROUP 1
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_NULL 9 2
BEGIN
PROMPT -23 -1 "Azzera"
MESSAGE RESET,1@
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK