Patch level : 4.0 905

Files correlati     :
Ricompilazione Demo : [ ]
Commento           :

Riportata la versione 3.2 patch 1092


git-svn-id: svn://10.65.10.50/trunk@16297 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-03-11 16:48:19 +00:00
parent 27c787605d
commit 1d7bc3d6b0
41 changed files with 1007 additions and 643 deletions

View File

@ -164,6 +164,8 @@
#define F_MAIL 303 #define F_MAIL 303
#define DLG_OGGETTI 304 #define DLG_OGGETTI 304
#define F_DIRTY 305 #define F_DIRTY 305
#define F_BYMAIL 306
#define F_DOCMAIL 307
////////////////////////////////////// //////////////////////////////////////

View File

@ -45,7 +45,7 @@ BEGIN
FIELD CODCF FIELD CODCF
FLAGS "GR" FLAGS "GR"
KEY 1 KEY 1
USE LF_CLIFO KEY 1 USE LF_CLIFO
INPUT TIPOCF F_TIPOCF SELECT INPUT TIPOCF F_TIPOCF SELECT
INPUT CODCF F_CODCF INPUT CODCF F_CODCF
DISPLAY "Codice@6R" CODCF DISPLAY "Codice@6R" CODCF
@ -412,7 +412,7 @@ BEGIN
GROUP 6 GROUP 6
END END
GROUPBOX DLG_NULL 76 8 GROUPBOX DLG_NULL 76 10
BEGIN BEGIN
PROMPT 1 4 "Numeri telefonici" PROMPT 1 4 "Numeri telefonici"
END END
@ -491,14 +491,29 @@ BEGIN
FIELD MAIL FIELD MAIL
END END
GROUPBOX DLG_NULL 76 4 BOOLEAN F_BYMAIL
BEGIN BEGIN
PROMPT 1 12 "Percipiente" PROMPT 2 11 "Consenso spedizione documenti per posta elettronica"
FIELD BYMAIL
MESSAGE FALSE CLEAR,F_DOCMAIL
MESSAGE TRUE ENABLE,F_DOCMAIL
END
STRING F_DOCMAIL 50
BEGIN
PROMPT 2 12 "Indirizzo doc."
FIELD DOCMAIL
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 76 6
BEGIN
PROMPT 1 14 "Dati Percipiente/Nascita"
END END
LIST F_TIPOAPER 1 15 LIST F_TIPOAPER 1 15
BEGIN BEGIN
PROMPT 2 13 "Tipo " PROMPT 2 15 "Tipo "
FIELD TIPOAPER FIELD TIPOAPER
FLAGS "D" FLAGS "D"
ITEM "F|Fisica" ITEM "F|Fisica"
@ -507,7 +522,7 @@ END
NUMBER F_CODANAGPER 5 NUMBER F_CODANAGPER 5
BEGIN BEGIN
PROMPT 61 13 "Codice " PROMPT 59 15 "Codice "
FIELD CODANAGPER FIELD CODANAGPER
FLAGS "R" FLAGS "R"
GROUP 4 GROUP 4
@ -527,7 +542,7 @@ END
STRING F_RAGSOC1 50 STRING F_RAGSOC1 50
BEGIN BEGIN
PROMPT 2 14 "Ragione sociale " PROMPT 2 16 "Ragione sociale "
GROUP 4 GROUP 4
USE LF_ANAG KEY 2 USE LF_ANAG KEY 2
INPUT TIPOA F_TIPOAPER SELECT INPUT TIPOA F_TIPOAPER SELECT
@ -539,12 +554,6 @@ BEGIN
ADD RUN ba4 -1 #F_TIPOAPER ADD RUN ba4 -1 #F_TIPOAPER
END END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 1 16 "Dati di nascita"
GROUP 5
END
DATE F_DATANASC DATE F_DATANASC
BEGIN BEGIN
PROMPT 2 17 "Data " PROMPT 2 17 "Data "

View File

@ -1236,7 +1236,21 @@ void TProgressivi_iva::setta_intestazione()
r++; r++;
if (_livelloprog == 1) if (_livelloprog == 1)
set_header(r++, "IVA %s",(const char*) _codivamsk); set_header(r++, "IVA %s",(const char*) _codivamsk);
else set_header(r++, FR("ATTIVITA' %s"),(const char*)_codattmsk); else
{
if (_annoiva > 2007)
{
TString key;
key.format("%ld|%s", _codditta, (const char *)_codattmsk);
const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO);
set_header(r++, FR("ATTIVITA' %s"), (const char*) codateco);
}
else
set_header(r++, FR("ATTIVITA' %s"),(const char*) _codattmsk);
}
set_header(++r, FR("@31gImponibile@64gImposta")); set_header(++r, FR("@31gImponibile@64gImposta"));
} }

View File

@ -305,6 +305,11 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
const long protiva = causale().reg().protocol() + 1; const long protiva = causale().reg().protocol() + 1;
m->set(F_PROTIVA, protiva, true); // Aggiorna protocollo IVA m->set(F_PROTIVA, protiva, true); // Aggiorna protocollo IVA
} }
const bool show_notevar = iva == iva_vendite || iva == iva_acquisti;
TSheet_field& ivasheet = m->sfield(F_SHEETIVA);
ivasheet.enable_column(IVA_NOTAVARECF, show_notevar);
ivasheet.sheet_mask().enable(IVA_NOTAVARECF, show_notevar);
} }
if (ins && !ci_sono_importi()) if (ins && !ci_sono_importi())
@ -741,9 +746,24 @@ void TPrimanota_application::init_insert_mode(TMask& m)
ini2mask(ini, m, false); ini2mask(ini, m, false);
// Controllo se e' stato salvato il campo virtuale col codice IVA // Controllo se e' stato salvato il campo virtuale col codice IVA
const TString& codiva = ini.get("CODIVA", "23"); if (m.id2pos(F_CODIVA) > 0)
if (!codiva.empty()) {
m.set(F_CODIVA, codiva, 3); const TString& codiva = ini.get("CODIVA", "23");
if (codiva.full())
m.set(F_CODIVA, codiva, 3);
}
// Devo ricalcolare il numero di protocollo nel caso di cambio causale al volo
if (m.id2pos(F_PROTIVA) > 0)
{
if (causale().iva() != nessuna_iva)
{
const long protiva = causale().reg().protocol() + 1;
m.set(F_PROTIVA, protiva, true); // Aggiorna protocollo IVA
}
else
m.reset(F_PROTIVA);
}
xvt_fsys_removefile(tmp); xvt_fsys_removefile(tmp);
} }
@ -952,6 +972,7 @@ int TPrimanota_application::read(TMask& m)
TBill c; c.get(r); TBill c; c.get(r);
c.add_to(riga, 4, 0x7); // Conto 105-110 c.add_to(riga, 4, 0x7); // Conto 105-110
riga.add(r.get(RMI_NAVP));
} }
calcola_imp(); // Calcola totale imponibile ed imposte calcola_imp(); // Calcola totale imponibile ed imposte
@ -961,7 +982,7 @@ int TPrimanota_application::read(TMask& m)
pags().reset(); // Azzera sheet rate pags().reset(); // Azzera sheet rate
if (!read_scadenze(m)) // Se non esiste fattura if (!read_scadenze(m)) // Se non esiste fattura
{ {
const TString dd(m.get(F_DATADOC)); const TString& dd = m.get(F_DATADOC);
set_pagamento(NULL, dd); // Ignora codice pagamento in testata set_pagamento(NULL, dd); // Ignora codice pagamento in testata
} }
} }
@ -1004,14 +1025,13 @@ void TPrimanota_application::mask2rel(const TMask& m)
_rel->destroy_rows(numreg); // Destroy all records _rel->destroy_rows(numreg); // Destroy all records
cgs_pack(); // Destroy all null rows cgs_pack(); // Destroy all null rows
TArray& rows = cgs().rows_array();
// Controlla se e' un movimento con righe contabili // Controlla se e' un movimento con righe contabili
if (iva() == nessuna_iva || !m.get_bool(F_SOLAIVA)) if (iva() == nessuna_iva || !m.get_bool(F_SOLAIVA))
{ {
TString_array& rows = cgs().rows_array();
for (int i = 0; i < rows.items(); i++) for (int i = 0; i < rows.items(); i++)
{ {
TToken_string& row = (TToken_string&)rows[i]; TToken_string& row = rows.row(i);
TImporto n; n = row; TImporto n; n = row;
const TBill conto(row, 2, 0x3); const TBill conto(row, 2, 0x3);
@ -1101,12 +1121,11 @@ void TPrimanota_application::mask2rel(const TMask& m)
const bool intra = causale().intra(); const bool intra = causale().intra();
TArray& irows = ivas().rows_array();
ivas_pack(); ivas_pack();
TString_array& irows = ivas().rows_array();
for (int i = 0; i < irows.items(); i++) for (int i = 0; i < irows.items(); i++)
{ {
TToken_string& row = (TToken_string&)irows[i]; TToken_string& row = irows.row(i);
TRectype &r = _rel->iva(i); TRectype &r = _rel->iva(i);
r.zero(); r.zero();
@ -1128,26 +1147,24 @@ void TPrimanota_application::mask2rel(const TMask& m)
r.put(RMI_IMPOSTA, imposta); r.put(RMI_IMPOSTA, imposta);
r.put(RMI_TIPOCR, row.get()); r.put(RMI_TIPOCR, row.get());
r.put("CODCMS", row.get(10));
r.put("FASCMS", row.get(11));
// Roba obsoleta allo stato brado // Roba obsoleta allo stato brado
const TBill c(row, 6); const TBill c(row, 6);
const int rimp = bill2pos(c, 'I')+1; const int rimp = bill2pos(c, 'I')+1;
r.put(RMI_RIGAIMP, rimp); r.put(RMI_RIGAIMP, rimp);
c.put(r); c.put(r);
r.put(RMI_NAVP, row.get(10));
} }
} }
void TPrimanota_application::check_saldi() void TPrimanota_application::check_saldi()
{ {
TString_array& rows = cgs().rows_array(); const int anno = _rel->curr().get_int(MOV_ANNOES);
const int anno = _rel->curr().get_int("ANNOES");
for (int i = 0; i < rows.items(); i++) TString_array& rows = cgs().rows_array();
FOR_EACH_ARRAY_ROW(rows, i, row)
{ {
TToken_string& row = (TToken_string&)rows[i]; TBill conto(*row, 2, 0x3);
TBill conto(row, 2, 0x3);
conto.find(); conto.find();
const char sez = conto.sezione(); const char sez = conto.sezione();
if (sez > ' ') if (sez > ' ')
@ -1839,7 +1856,7 @@ bool TPrimanota_application::link_cesp(const TMask& msk, const char* action)
if (!fexist("ce1.exe")) if (!fexist("ce1.exe"))
return false; return false;
// Cerca una riga con tipo costo/ricavo 2,3,4,8 // Cerca una riga con tipo costo/ricavo 2,3,4
int i; int i;
for (i = _rel->cg_items()-1; i >= 0; i--) for (i = _rel->cg_items()-1; i >= 0; i--)
@ -1847,7 +1864,7 @@ bool TPrimanota_application::link_cesp(const TMask& msk, const char* action)
const TRectype& rec = _rel->cg(i); const TRectype& rec = _rel->cg(i);
const TBill zio(rec); const TBill zio(rec);
char tipo_cr = char('0' + zio.tipo_cr()); char tipo_cr = char('0' + zio.tipo_cr());
if (strchr("2348", tipo_cr)) if (strchr("234", tipo_cr))
break; break;
} }
if (i < 0) if (i < 0)

View File

@ -83,6 +83,18 @@
#define CG_ROWTYPE 115 #define CG_ROWTYPE 115
#define CG_MASTRINO 200 #define CG_MASTRINO 200
// Sheet IVA
#define IVA_IMPONIBILE 101
#define IVA_CODIVA 102
#define IVA_INDETRAIBILE 103
#define IVA_IMPOSTA 104
#define IVA_TIPOCOSTORIC 105
#define IVA_TIPO 106
#define IVA_GRUPPO 107
#define IVA_CONTO 108
#define IVA_SOTTOCONTO 109
#define IVA_NOTAVARECF 111
// Campi ripetuti sulla seconda pagina // Campi ripetuti sulla seconda pagina
#define H_DATAREG 201 #define H_DATAREG 201
#define H_NUMREG 202 #define H_NUMREG 202

View File

@ -1986,7 +1986,7 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
provv << c.provvisorio(); provv << c.provvisorio();
m.set(F_PROVVISORIO, provv); m.set(F_PROVVISORIO, provv);
if (c.iva() != nessuna_iva) if (c.iva() != nessuna_iva && m.id2pos(F_SOLAIVA) > 0)
m.set(F_SOLAIVA, c.soloiva() ? "X" : " "); m.set(F_SOLAIVA, c.soloiva() ? "X" : " ");
return true; return true;
} }

View File

@ -153,6 +153,9 @@ const TString& TCausale::tipo_doc() const
int TCausale::tipomov() const int TCausale::tipomov() const
{ return _rec.get_int(CAU_TIPOMOV); } { return _rec.get_int(CAU_TIPOMOV); }
const TString& TCausale::tipodoc() const
{ return _rec.get(CAU_TIPODOC); }
bool TCausale::saldaconto(const TDate& datareg) const bool TCausale::saldaconto(const TDate& datareg) const
{ {
static TDate _data_sal(8,8,3); static TDate _data_sal(8,8,3);

View File

@ -349,7 +349,7 @@ bool TPrimanota_application::aggiusta_prorata()
if (annodoc < 1900) if (annodoc < 1900)
annodoc = _msk[2]->get_int(F_ANNOIVA); annodoc = _msk[2]->get_int(F_ANNOIVA);
const real prorata_attuale = reg.prorata(annodoc); const real prorata_attuale = reg.prorata(annodoc);
const real vecchio_prorata = prorata_attuale < 100.0 ? 100.0 : 0.0; const real vecchio_prorata = prorata_attuale < CENTO ? CENTO : ZERO;
TSheet_field& iva_sheet = ivas(); TSheet_field& iva_sheet = ivas();
TString_array& righe_iva = iva_sheet.rows_array(); TString_array& righe_iva = iva_sheet.rows_array();

View File

@ -454,13 +454,15 @@ void TEasySolder_mask::set_imp(short id, const TImporto& imp)
{ {
TEdit_field& e = efield(id); TEdit_field& e = efield(id);
CHECK(e.size() >= 15, "Campo troppo piccolo per contenere un importo"); CHECK(e.size() >= 15, "Campo troppo piccolo per contenere un importo");
TString80 str;
if (!imp.is_zero()) if (!imp.is_zero())
{ {
const TCurrency c(imp.valore()); const TCurrency c(imp.valore());
TString80 str;
str << c.string(true) << ' ' << imp.sezione(); str << c.string(true) << ' ' << imp.sezione();
e.set(str);
} }
e.set(str); else
e.reset();
} }

View File

@ -353,8 +353,6 @@ END
BUTTON DLG_DELREC 10 2 BUTTON DLG_DELREC 10 2
BEGIN BEGIN
PROMPT -34 -1 "Elimina" PROMPT -34 -1 "Elimina"
PICTURE BMP_DELREC
PICTURE BMP_DELRECDN
MESSAGE EXIT,K_DEL MESSAGE EXIT,K_DEL
END END

View File

@ -5,18 +5,18 @@ BEGIN
PROMPT 1 1 "@BImposta" PROMPT 1 1 "@BImposta"
END END
STRING 102 4 STRING IVA_CODIVA 4
BEGIN BEGIN
PROMPT 2 2 "IVA " PROMPT 2 2 "IVA "
HELP "Codice IVA della riga" HELP "Codice IVA della riga"
FLAGS "U" FLAGS "U"
USE %IVA USE %IVA
INPUT CODTAB 102 INPUT CODTAB IVA_CODIVA
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "%@6" R0 DISPLAY "%@6" R0
DISPLAY "Tipo" S1 DISPLAY "Tipo" S1
OUTPUT 102 CODTAB OUTPUT IVA_CODIVA CODTAB
OUTPUT 158 S0 OUTPUT 158 S0
CHECKTYPE NORMAL CHECKTYPE NORMAL
WARNING "Codice IVA assente" WARNING "Codice IVA assente"
@ -29,15 +29,15 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING 103 1 STRING IVA_INDETRAIBILE 1
BEGIN BEGIN
PROMPT 2 3 "Indetraibilita' " PROMPT 2 3 "Indetraibilita' "
USE %DET USE %DET
INPUT CODTAB 103 INPUT CODTAB IVA_INDETRAIBILE
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Tipo" I0 DISPLAY "Tipo" I0
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT 103 CODTAB OUTPUT IVA_INDETRAIBILE CODTAB
OUTPUT 99 S0 OUTPUT 99 S0
CHECTYPE NORMAL CHECTYPE NORMAL
FLAGS "U" FLAGS "U"
@ -49,12 +49,12 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
CURRENCY 101 18 CURRENCY IVA_IMPONIBILE 18
BEGIN BEGIN
PROMPT 2 4 "Imponibile " PROMPT 2 4 "Imponibile "
END END
CURRENCY 104 18 CURRENCY IVA_IMPOSTA 18
BEGIN BEGIN
PROMPT 48 4 "Imposta " PROMPT 48 4 "Imposta "
HELP "Importo dell'IVA. Se e' nullo, col tasto F8 si puo' effettuare lo scorporo" HELP "Importo dell'IVA. Se e' nullo, col tasto F8 si puo' effettuare lo scorporo"
@ -65,7 +65,7 @@ BEGIN
PROMPT 1 6 "@BConto" PROMPT 1 6 "@BConto"
END END
LIST 106 1 12 LIST IVA_TIPO 1 12
BEGIN BEGIN
PROMPT 2 7 "Tipo " PROMPT 2 7 "Tipo "
HELP "Tipo del conto" HELP "Tipo del conto"
@ -79,27 +79,27 @@ BEGIN
FLAGS "U" FLAGS "U"
END END
NUMBER 107 3 NUMBER IVA_GRUPPO 3
BEGIN BEGIN
PROMPT 22 7 "Gruppo " PROMPT 22 7 "Gruppo "
HELP "Codice del gruppo" HELP "Codice del gruppo"
FIELD GRUPPO FIELD GRUPPO
END END
NUMBER 108 3 NUMBER IVA_CONTO 3
BEGIN BEGIN
PROMPT 38 7 "Conto " PROMPT 38 7 "Conto "
FIELD CONTO FIELD CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 107 INPUT GRUPPO IVA_GRUPPO
INPUT CONTO 108 INPUT CONTO IVA_CONTO
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TMCF DISPLAY "Tipo" TMCF
OUTPUT 106 TMCF OUTPUT IVA_TIPO TMCF
OUTPUT 107 GRUPPO OUTPUT IVA_GRUPPO GRUPPO
OUTPUT 108 CONTO OUTPUT IVA_CONTO CONTO
OUTPUT 110 DESCR OUTPUT 110 DESCR
ADD RUN cg0 -0 ADD RUN cg0 -0
MESSAGE DIRTY,109|DIRTY,209|DIRTY,309 MESSAGE DIRTY,109|DIRTY,209|DIRTY,309
@ -108,26 +108,26 @@ BEGIN
END END
NUMBER 109 6 NUMBER IVA_SOTTOCONTO 6
BEGIN BEGIN
PROMPT 55 7 "Sottoconto " PROMPT 55 7 "Sottoconto "
FIELD SOTTOCONTO FIELD SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!="" USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO 107 INPUT GRUPPO IVA_GRUPPO
INPUT CONTO 108 INPUT CONTO IVA_CONTO
INPUT SOTTOCONTO 109 INPUT SOTTOCONTO IVA_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "C/R" TIPOSPRIC DISPLAY "C/R" TIPOSPRIC
OUTPUT 109 SOTTOCONTO OUTPUT IVA_SOTTOCONTO SOTTOCONTO
OUTPUT 107 GRUPPO OUTPUT IVA_GRUPPO GRUPPO
OUTPUT 108 CONTO OUTPUT IVA_CONTO CONTO
OUTPUT 110 DESCR OUTPUT 110 DESCR
ADD RUN cg0 -0 ADD RUN cg0 -0
CHECKTYPE NORMAL CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 IVA_IMPONIBILE
WARNING "Sottoconto assente" WARNING "Sottoconto assente"
END END
@ -147,8 +147,8 @@ BEGIN
OUTPUT 210 RAGSOC OUTPUT 210 RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN cg0 -1 C ADD RUN cg0 -1 C
MESSAGE COPY,109 MESSAGE COPY,IVA_SOTTOCONTO
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 IVA_IMPONIBILE
WARNING "Cliente assente" WARNING "Cliente assente"
END END
@ -165,8 +165,8 @@ BEGIN
OUTPUT 310 RAGSOC OUTPUT 310 RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN cg0 -1 F ADD RUN cg0 -1 F
MESSAGE COPY,109 MESSAGE COPY,IVA_SOTTOCONTO
VALIDATE REQIF_FUNC 1 101 VALIDATE REQIF_FUNC 1 IVA_IMPONIBILE
WARNING "Fornitore assente" WARNING "Fornitore assente"
END END
@ -181,7 +181,7 @@ BEGIN
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "C/R" TIPOSPRIC DISPLAY "C/R" TIPOSPRIC
COPY OUTPUT 109 COPY OUTPUT IVA_SOTTOCONTO
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN cg0 -0 ADD RUN cg0 -0
END END
@ -220,7 +220,7 @@ BEGIN
CHECKTYPE SEARCH CHECKTYPE SEARCH
END END
LIST 105 1 51 LIST IVA_TIPOCOSTORIC 1 51
BEGIN BEGIN
PROMPT 2 9 "Tipo Costo/Ricavo " PROMPT 2 9 "Tipo Costo/Ricavo "
ITEM " |0. Acquisti o vendite in genere" ITEM " |0. Acquisti o vendite in genere"
@ -235,6 +235,12 @@ BEGIN
HELP "Tipo Costo/Ricavo del conto" HELP "Tipo Costo/Ricavo del conto"
END END
BOOLEAN IVA_NOTAVARECF
BEGIN
PROMPT 2 15 "Nota di variazione riferita ad anni precedenti (per Elenco Clienti/Fornitori)"
FIELD NOTAVARECF
END
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
@ -248,8 +254,6 @@ END
BUTTON DLG_DELREC 10 2 BUTTON DLG_DELREC 10 2
BEGIN BEGIN
PROMPT -33 -1 "Elimina" PROMPT -33 -1 "Elimina"
PICTURE BMP_DELREC
PICTURE BMP_DELRECDN
MESSAGE EXIT,K_DEL MESSAGE EXIT,K_DEL
END END

View File

@ -267,7 +267,7 @@ void TProvvisori_app::inizia_saldi(const TRectype& r)
_saldi.reset(); _saldi.reset();
tiposal tsal = normale; tiposal tsal = normale;
const TString16 c = r.get(MOV_CODCAUS); const TString4 c = r.get(MOV_CODCAUS);
if (c.not_empty()) if (c.not_empty())
{ {
const TRectype& cau = cache().get(LF_CAUSALI, c); const TRectype& cau = cache().get(LF_CAUSALI, c);

View File

@ -11,6 +11,7 @@
#include <reputils.h> #include <reputils.h>
#include <textset.h> #include <textset.h>
#include <validate.h> #include <validate.h>
#include <utility.h>
#include <anafis.h> #include <anafis.h>
#include <anagr.h> #include <anagr.h>
@ -112,15 +113,22 @@ TVariant TAllegato_info::get(const TString& field) const
} else } else
if (field == COM_DENCOM || field == COM_PROVCOM) if (field == COM_DENCOM || field == COM_PROVCOM)
{ {
TString8 key; TToken_string key;
key << get(CLI_STATOCF) << '|' << get(CLI_COMCF); key << get(CLI_STATOCF);
const bool italy = key.blank() || key == "IT";
key << '|' << get(CLI_COMCF);
var = cache().get(LF_COMUNI, key, field); var = cache().get(LF_COMUNI, key, field);
if (var.is_empty() && key[0] == '|') // Ritento col CAP per gli Italiani if (var.is_empty() && italy) // Ritento col CAP per gli Italiani
{ {
key = " |"; key = " |";
key << cap2comune(get(CLI_CAPCF).as_string(), get(CLI_LOCCF).as_string()); key << cap2comune(get(CLI_CAPCF).as_string(), get(CLI_LOCCF).as_string());
var = cache().get(LF_COMUNI, key, field); var = cache().get(LF_COMUNI, key, field);
} }
if (var.is_empty() && field == COM_PROVCOM)
{
if (!italy || key.get_char(1) == 'Z')
var = "EE";
}
} }
else else
{ {
@ -187,12 +195,7 @@ void TAllegato_info::key(TString& tmp) const
{ {
tmp = get(CLI_COFI).as_string(); tmp = get(CLI_COFI).as_string();
if (tmp.blank()) if (tmp.blank())
{ tmp.cut(0) << _codice;
if (occasionale())
tmp = _occas;
else
tmp = _codice;
}
} }
tmp.insert(_tipo == 'F' ? "F|" : "C|"); tmp.insert(_tipo == 'F' ? "F|" : "C|");
} }
@ -273,7 +276,8 @@ class TPadoaSchioppa_set : public TAS400_recordset
void add_trc(int trc); void add_trc(int trc);
protected: protected:
int primo_campo_libero(); int primo_campo_libero(); // Posizione primo campo libero per record 1 e 2
void init_trc(); // Constructor helper
public: public:
long new_rec(int tiporec); // 0, 1, 2, 3, 9, -1 (1 o 2 a seconda del tipo corrente) long new_rec(int tiporec); // 0, 1, 2, 3, 9, -1 (1 o 2 a seconda del tipo corrente)
@ -290,6 +294,7 @@ public:
bool set(int fldcode, const TVariant& val); bool set(int fldcode, const TVariant& val);
TPadoaSchioppa_set(); TPadoaSchioppa_set();
TPadoaSchioppa_set(const TFilename& name);
}; };
long TPadoaSchioppa_set::new_rec(int tiporec) long TPadoaSchioppa_set::new_rec(int tiporec)
@ -309,7 +314,6 @@ void TPadoaSchioppa_set::add_field(int trc, int da, int a, int lung, const char*
{ {
CHECKS(da > 0 && a >= da, "Posizioni incoerenti sul campo ", name); CHECKS(da > 0 && a >= da, "Posizioni incoerenti sul campo ", name);
CHECKS(lung == a-da+1, "Lunghezza incoerente sul campo ", name); CHECKS(lung == a-da+1, "Lunghezza incoerente sul campo ", name);
CHECKS(lung == a-da+1, "Lunghezza incoerente sul campo ", name);
TString80 field; field.format("%d.%s", trc, (const char*)name); TString80 field; field.format("%d.%s", trc, (const char*)name);
TFieldtypes ft = _alfafld; TFieldtypes ft = _alfafld;
@ -356,7 +360,7 @@ void TPadoaSchioppa_set::add_trc(int trc)
case 0: // Testata case 0: // Testata
case 9: // Coda case 9: // Coda
add_field(trc, 2, 4, 3, "IndentificativoFornitura", AN, true, "ECF"); add_field(trc, 2, 4, 3, "IndentificativoFornitura", AN, true, "ECF");
add_field(trc, 5, 6, 2, "IdentificativoAnno" , AN, true, "00"); add_field(trc, 5, 6, 2, "IdentificativoAnno" , NU, true, "00");
add_field(trc, 7, 8, 2, "CodiceFornitura" , NU, true, "38"); add_field(trc, 7, 8, 2, "CodiceFornitura" , NU, true, "38");
add_field(trc, 9, 24, 16, "CodiceFiscale" , CF, true); add_field(trc, 9, 24, 16, "CodiceFiscale" , CF, true);
add_field(trc, 25, 35, 11, "PartitaIVA" , PI, true); add_field(trc, 25, 35, 11, "PartitaIVA" , PI, true);
@ -416,16 +420,6 @@ void TPadoaSchioppa_set::add_trc(int trc)
add_field(trc,1799,1800, 2, "FineRiga" , AN, true, "\r\n"); // 0D 0A add_field(trc,1799,1800, 2, "FineRiga" , AN, true, "\r\n"); // 0D 0A
} }
TPadoaSchioppa_set::TPadoaSchioppa_set()
: TAS400_recordset("AS400(1800,1)")
{
add_trc(0);
add_trc(1);
add_trc(2);
add_trc(3);
add_trc(9);
}
int TPadoaSchioppa_set::primo_campo_libero() int TPadoaSchioppa_set::primo_campo_libero()
{ {
const TToken_string& curr = row(-1); // Record corrente const TToken_string& curr = row(-1); // Record corrente
@ -521,7 +515,7 @@ bool TPadoaSchioppa_set::set(const char* name, const TDate& value)
// Usata per 1001, 2001 e 3001 // Usata per 1001, 2001 e 3001
bool TPadoaSchioppa_set::set(int fldcode, const TString& val) bool TPadoaSchioppa_set::set(int fldcode, const TString& val)
{ {
CHECKD(fldcode >= 1001 && fldcode <= 3001, "Codice campo non valido", fldcode); CHECKD(fldcode >= 1001 && fldcode <= 3001, "Codice campo non valido ", fldcode);
CHECKD(val.full(), "Campo non posizionale vuoto ", fldcode); CHECKD(val.full(), "Campo non posizionale vuoto ", fldcode);
const int tiporec = atoi(rec_type()); const int tiporec = atoi(rec_type());
@ -534,7 +528,7 @@ bool TPadoaSchioppa_set::set(int fldcode, const TString& val)
// Usata solo per 1001 // Usata solo per 1001
bool TPadoaSchioppa_set::set(int fldcode, long val) bool TPadoaSchioppa_set::set(int fldcode, long val)
{ {
CHECKD(fldcode == 1001, "Codice campo non valido", fldcode); CHECKD(fldcode == 1001, "Codice campo non valido ", fldcode);
CHECKD(val > 0, "Campo non posizionale vuoto ", fldcode); CHECKD(val > 0, "Campo non posizionale vuoto ", fldcode);
TString16 value; TString16 value;
value.format("%16ld", val); value.format("%16ld", val);
@ -544,7 +538,7 @@ bool TPadoaSchioppa_set::set(int fldcode, long val)
// Usata dal 4001 in poi // Usata dal 4001 in poi
bool TPadoaSchioppa_set::set(int fldcode, const TVariant& val) bool TPadoaSchioppa_set::set(int fldcode, const TVariant& val)
{ {
CHECKD(fldcode >= 4001 && fldcode <= 13001, "Codice campo non valido", fldcode); CHECKD(fldcode >= 4001 && fldcode <= 13001, "Codice campo non valido ", fldcode);
if (val.is_zero()) if (val.is_zero())
return true; return true;
@ -554,6 +548,28 @@ bool TPadoaSchioppa_set::set(int fldcode, const TVariant& val)
return set(field, val); return set(field, val);
} }
void TPadoaSchioppa_set::init_trc()
{
add_trc(0);
add_trc(1);
add_trc(2);
add_trc(3);
add_trc(9);
}
TPadoaSchioppa_set::TPadoaSchioppa_set()
: TAS400_recordset("AS400(1800,1)")
{
init_trc();
}
TPadoaSchioppa_set::TPadoaSchioppa_set(const TFilename& name)
: TAS400_recordset("AS400(1800,1)")
{
init_trc();
load_file(name);
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TCodiva_cache // TCodiva_cache
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -672,6 +688,27 @@ TAlleg_report::TAlleg_report(TRecordset* rs, const TMask& am, bool hide_not_alle
set_recordset(rs); set_recordset(rs);
} }
///////////////////////////////////////////////////////////
// TAlleg_log
///////////////////////////////////////////////////////////
class TAlleg_log : public TLog_report
{
bool _red_alert;
public:
virtual bool log(int severity, const char* msg);
bool red_alert() const { return _red_alert; }
TAlleg_log() : TLog_report(TR("Errori riscontrati")), _red_alert(false) {}
};
bool TAlleg_log::log(int severity, const char* msg)
{
if (severity > 0)
_red_alert = true;
return TLog_report::log(severity, msg);
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TAlleg_mask // TAlleg_mask
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -680,7 +717,6 @@ class TAlleg_mask : public TAutomask
{ {
TCodiva_cache _codiva; TCodiva_cache _codiva;
TCausali_cache _causali; TCausali_cache _causali;
bool _red_alert;
protected: // TAutomask protected: // TAutomask
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
@ -691,21 +727,30 @@ protected: // Elaborazione
bool documento_corrispettivi(const TString& tipodoc) const; bool documento_corrispettivi(const TString& tipodoc) const;
int imp_iva(char tipocf, bool non_esposti, const TRecordset& riga, real& imp, real& iva); int imp_iva(char tipocf, bool non_esposti, const TRecordset& riga, real& imp, real& iva);
real indetraibile_al(const TRecordset& riga, bool prorata100) const; real indetraibile_al(const TRecordset& riga, bool prorata100) const;
bool scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool strict); bool scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool invio, bool ministeriale);
TRecordset* new_recordset(char tipocf = ' ', bool strict = false); TRecordset* new_recordset(char tipocf = ' ', bool strict = false);
void log_error(const char* ragsoc, const char* msg1, const char* msg2, void log_error(const char* ragsoc, const char* msg1, const char* msg2,
TLog_report& errlog, int severity = 2); TAlleg_log& errlog, int severity = 2);
void log_error(const TRecordset& clifo, const char* msg1, const char* msg2, void log_error(const TRecordset& clifo, const char* msg1, const char* msg2,
TLog_report& errlog, int severity = 2); TAlleg_log& errlog, int severity = 2);
void copia_importo(const TRecordset& clifo, const char* fldname, void copia_importo(const TRecordset& clifo, const char* fldname,
TPadoaSchioppa_set& pss, int fldcode) const; TPadoaSchioppa_set& pss, int fldcode) const;
void add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log); protected: // Generazione
void add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TLog_report& log); bool build_output_name(TFilename& fname) const;
void add_0_9(int trc, TPadoaSchioppa_set& pss, TAlleg_log& log);
void add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TAlleg_log& log);
void add_3(TPadoaSchioppa_set& pss); void add_3(TPadoaSchioppa_set& pss);
bool show_errors(TAlleg_log& log) const;
void generazione(); void generazione();
protected: // Fusione
bool test_file(const TFilename& name, TString& error) const;
void import_clifo(const TFilename& name, TAssoc_array& clips, TAssoc_array& forps, TAlleg_log& log);
TRecnotype export_clifo(int tiporec, TAssoc_array& clifo, TAllegati_set& all, TPadoaSchioppa_set& pss);
void fusione();
public: public:
TAlleg_mask(); TAlleg_mask();
~TAlleg_mask(); ~TAlleg_mask();
@ -754,7 +799,8 @@ int TAlleg_mask::imp_iva(char tipocf, bool non_esposti, const TRecordset& riga,
return allegato; return allegato;
} }
bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool invio) bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi,
bool invio, bool ministeriale)
{ {
// Informazioni base sul cliente in testata: vengono ignorati gli importi // Informazioni base sul cliente in testata: vengono ignorati gli importi
const TAllegato_info clifo(mov); const TAllegato_info clifo(mov);
@ -813,24 +859,23 @@ bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool
const bool non_esposti = movintra || reverse_charge; const bool non_esposti = movintra || reverse_charge;
const bool prorata100 = caus.reg().prorata100(annoiva); const bool prorata100 = caus.reg().prorata100(annoiva);
bool anno_prec = false; // In attesa di modifiche a prima nota
if (get(F_ALGO) == "R")
anno_prec = datadoc.year() == anno-1; // Serve per quadrature
TAllegato_importi& allimp = ai->importi(anno_prec);
TISAM_recordset righe_iva("USE RMOVIVA\nFROM NUMREG=#NR\nTO NUMREG=#NR"); TISAM_recordset righe_iva("USE RMOVIVA\nFROM NUMREG=#NR\nTO NUMREG=#NR");
righe_iva.set_var("#NR", mov.get(MOV_NUMREG)); righe_iva.set_var("#NR", mov.get(MOV_NUMREG));
real imponibile, imposta, indecifrabile; real imponibile, imposta, indecifrabile;
for (bool ok = righe_iva.move_first(); ok; ok = righe_iva.move_next()) for (bool ok = righe_iva.move_first(); ok; ok = righe_iva.move_next())
{ {
bool anno_prec = false;
if (ministeriale)
anno_prec = righe_iva.get(RMI_NAVP).as_bool();
else
anno_prec = datadoc.year() == anno-1; // Serve per quadrature
TAllegato_importi& allimp = ai->importi(anno_prec);
const int allegato = imp_iva(clifo.tipo(), non_esposti, righe_iva, imponibile, imposta); const int allegato = imp_iva(clifo.tipo(), non_esposti, righe_iva, imponibile, imposta);
switch (allegato) switch (allegato)
{ {
case 1: allimp._imp += imponibile; case 1: allimp._imp += imponibile; allimp._iva += imposta; break;
allimp._iva += imposta;
break;
case 2: allimp._impNI += imponibile; break; case 2: allimp._impNI += imponibile; break;
case 3: allimp._impES += imponibile; break; case 3: allimp._impES += imponibile; break;
case 4: allimp._ivaNE += imponibile; break; // Importi con IVA non esposta case 4: allimp._ivaNE += imponibile; break; // Importi con IVA non esposta
@ -845,7 +890,7 @@ bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool
// algo: R=data Registrazione; D=data Documento // algo: R=data Registrazione; D=data Documento
TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio) TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
{ {
const int algo_dick = get(F_ALGO) == "D"; const bool ministeriale = get(F_ALGO) == "D";
// Compito: tradurre in ISAM la seguente query: // Compito: tradurre in ISAM la seguente query:
// SELECT * FROM MOV // SELECT * FROM MOV
@ -853,7 +898,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
// ORDER BY TIPO,CODCF; // ORDER BY TIPO,CODCF;
TString query = "USE MOV KEY 3"; // La chiave 3 e' TIPO+CODCF+DATAREG+NUMREG TString query = "USE MOV KEY 3"; // La chiave 3 e' TIPO+CODCF+DATAREG+NUMREG
query << "\nSELECT "; query << "\nSELECT ";
if (algo_dick) if (ministeriale)
query << "(ANNOIVA>=#ANNO)"; // Seleziona dall'anno desiderato in poi query << "(ANNOIVA>=#ANNO)"; // Seleziona dall'anno desiderato in poi
else else
query << "(ANNOIVA==#ANNO)"; // Seleziona solo l'anno desiderato query << "(ANNOIVA==#ANNO)"; // Seleziona solo l'anno desiderato
@ -895,7 +940,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
continue; continue;
// Controllo inutilmente anche il tipo documento // Controllo inutilmente anche il tipo documento
const TString& tipodoc = caus.tipo_doc(); const TString& tipodoc = caus.tipodoc();
if (documento_corrispettivi(tipodoc)) if (documento_corrispettivi(tipodoc))
continue; continue;
@ -909,8 +954,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
if (keep) if (keep)
keep = (tipocf == 'C') ^ (tipoiva == iva_acquisti); // compatibile keep = (tipocf == 'C') ^ (tipoiva == iva_acquisti); // compatibile
// Cavolata interpretativa tipicamente italiana if (keep && ministeriale)
if (keep && algo_dick)
{ {
const int annodoc = mov.get(MOV_DATADOC).as_date().year(); const int annodoc = mov.get(MOV_DATADOC).as_date().year();
const bool is_nota = (tipodoc=="NC") || (tipodoc=="ND"); const bool is_nota = (tipodoc=="NC") || (tipodoc=="ND");
@ -920,7 +964,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
if (!keep) if (!keep)
continue; continue;
scan_iva_rows(mov, clifi, invio); scan_iva_rows(mov, clifi, invio, ministeriale);
} }
TAllegati_set* hullygully = new TAllegati_set; TAllegati_set* hullygully = new TAllegati_set;
@ -945,7 +989,7 @@ const TRectype& TAlleg_mask::contribuente() const
return anag; return anag;
} }
void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log) void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TAlleg_log& log)
{ {
pss.new_rec(trc); pss.new_rec(trc);
@ -960,7 +1004,7 @@ void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log)
else else
{ {
if (pariva[0] == '8' || pariva[0] == '9') if (pariva[0] == '8' || pariva[0] == '9')
log_error(ragsoc, TR("** Verificare esenzione dall'invio degli elenchi"), pariva, log, 2); log_error(ragsoc, TR("* Verificare esenzione dall'invio degli elenchi"), pariva, log, 2);
} }
const TString16 codfis = anag.get(ANA_COFI); const TString16 codfis = anag.get(ANA_COFI);
@ -1000,11 +1044,15 @@ void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log)
pss.set("ComuneSedeLegale", comres.get(COM_DENCOM)); pss.set("ComuneSedeLegale", comres.get(COM_DENCOM));
pss.set("ProvinciaSedeLegale", comres.get(COM_PROVCOM)); pss.set("ProvinciaSedeLegale", comres.get(COM_PROVCOM));
} }
pss.set("AnnoRiferimento", get(F_ANNO));
const long anno = get_int(F_ANNO);
pss.set("IdentificativoAnno", TVariant(anno-2006L)); // 00=2006, 01=2007, 02=2008, ...
pss.set("AnnoRiferimento", TVariant(anno)); // 2006, 2007, 2008, ...
// Compilare solo se diverso da dichiarante // Compilare solo se diverso da dichiarante
pss.set("CodiceSoggettoObbligato", get(F_SOGG)); pss.set("CodiceSoggettoObbligato", get(F_SOGG));
// Dati dell'intermediario che si cucca 50 Euro senza fare una mazza!
const TString& inter = get(F_INTR); const TString& inter = get(F_INTR);
if (inter.full()) if (inter.full())
{ {
@ -1067,7 +1115,6 @@ void TAlleg_mask::add_3(TPadoaSchioppa_set& pss)
} }
} }
void TAlleg_mask::copia_importo(const TRecordset& clifo, const char* fldname, void TAlleg_mask::copia_importo(const TRecordset& clifo, const char* fldname,
TPadoaSchioppa_set& pss, int fldcode) const TPadoaSchioppa_set& pss, int fldcode) const
{ {
@ -1080,29 +1127,27 @@ void TAlleg_mask::copia_importo(const TRecordset& clifo, const char* fldname,
} }
void TAlleg_mask::log_error(const char* ragsoc, const char* msg1, const char* msg2, void TAlleg_mask::log_error(const char* ragsoc, const char* msg1, const char* msg2,
TLog_report& errlog, int severity) TAlleg_log& errlog, int severity)
{ {
TString str; TString str;
str << ragsoc << " - " << msg1; str << ragsoc << " - " << msg1;
if (msg2 && *msg2) if (msg2 && *msg2)
str << " : " << msg2; str << " : " << msg2;
errlog.log(severity, str); errlog.log(severity, str);
if (severity > 0)
_red_alert = true;
} }
void TAlleg_mask::log_error(const TRecordset& clifo, const char* msg1, const char* msg2, void TAlleg_mask::log_error(const TRecordset& clifo, const char* msg1, const char* msg2,
TLog_report& errlog, int severity) TAlleg_log& errlog, int severity)
{ {
TString str; TString str;
str << clifo.get("#RECORD.NUMBER") << ". " str << clifo.get("#RECORD.NUMBER") << ". "
<< clifo.get(CLI_TIPOCF) << clifo.get(CLI_CODCF) << clifo.get(CLI_TIPOCF) << clifo.get(CLI_CODCF)
<< ' ' << clifo.get(CLI_RAGSOC); << ' ' << clifo.get(CLI_RAGSOC);
str.strip_double_spaces(); str.strip_d_spaces();
log_error(str, msg1, msg2, errlog, severity); log_error(str, msg1, msg2, errlog, severity);
} }
void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TLog_report& log) void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TAlleg_log& log)
{ {
const int anno = get_int(F_ANNO); const int anno = get_int(F_ANNO);
const bool coffee = get_bool(F_COFI); // Codice fiscale voluto o obbligatorio const bool coffee = get_bool(F_COFI); // Codice fiscale voluto o obbligatorio
@ -1162,7 +1207,7 @@ void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, T
else else
{ {
if (paiv[0] == '8' || paiv[0] == '9') if (paiv[0] == '8' || paiv[0] == '9')
log_error(clifo, TR("** Verificare esclusione della Parita IVA"), paiv, log, 1); log_error(clifo, TR("* Verificare esclusione della Partita IVA"), paiv, log, 1);
} }
pss.set(3001, paiv); // Partita IVA (obbligatoria dal 2006) pss.set(3001, paiv); // Partita IVA (obbligatoria dal 2006)
@ -1205,35 +1250,62 @@ void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, T
} }
} }
bool TAlleg_mask::show_errors(TAlleg_log& log) const
{
if (yesno_box(TR("Sono stati rilevati errori sulla fornitura:\nSi desidera visualizzarli?")))
{
TReport_book errbuc;
errbuc.add(log);
errbuc.preview();
}
return yesno_box(TR("Si desidera generare ugualmente la fornitura?"));
}
// Pulisce e normalizza un nome di file
static bool normalize_name(TFilename& name)
{
name.trim();
if (name.not_empty())
{
name.lower();
name.replace('\\', '/');
}
return name.not_empty();
}
// Estrae un nome di file pulito da una riga di spreadsheet
static bool row2name(const TToken_string& row, TFilename& name)
{
row.get(0, name);
return normalize_name(name);
}
bool TAlleg_mask::build_output_name(TFilename& fname) const
{
fname = get(F_DIR);
fname.add(get(F_NAME));
return normalize_name(fname);
}
void TAlleg_mask::generazione() void TAlleg_mask::generazione()
{ {
_red_alert = false;
TLog_report log(TR("Errori riscontrati"));
TReport_book book;
TPadoaSchioppa_set pss; TPadoaSchioppa_set pss;
TAlleg_log log;
add_0_9(0, pss, log); // Testa add_0_9(0, pss, log); // Testa
TRecordset* cli = new_recordset('C', true); TRecordset* cli = new_recordset('C', true);
if (cli != NULL && cli->items())
if (cli != NULL)
{ {
log.log(0, TR("CLIENTI")); log.log(0, TR("CLIENTI"));
add_1_2(1, *cli, pss, log); // Clienti add_1_2(1, *cli, pss, log); // Clienti
TAlleg_report rep(cli, *this, true);
book.add(rep);
} }
TRecordset* ven = new_recordset('F', true); TRecordset* acq = new_recordset('F', true);
if (ven != NULL) if (acq != NULL && acq->items() > 0)
{ {
log.log(0, TR("FORNITORI")); log.log(0, TR("FORNITORI"));
add_1_2(2, *ven, pss, log); // Fornitori add_1_2(2, *acq, pss, log); // Fornitori
TAlleg_report rep(ven, *this, true);
book.add(rep);
} }
add_3(pss); // Totali Clienti e Fornitori add_3(pss); // Totali Clienti e Fornitori
@ -1241,25 +1313,261 @@ void TAlleg_mask::generazione()
add_0_9(9, pss, log); // Piede (= Testa) add_0_9(9, pss, log); // Piede (= Testa)
bool go_on = true; bool go_on = true;
if (_red_alert) if (log.red_alert())
go_on = show_errors(log);
if (go_on)
{ {
if (yesno_box(TR("Sono stati rilevati errori sulla fornitura:\nSi desidera visualizzarli?"))) TFilename fname;
{ if (build_output_name(fname))
TReport_book errbuc; pss.save_as(fname);
errbuc.add(log);
errbuc.preview(); TReport_book book;
} TAlleg_report clirep(cli, *this, true);
go_on = yesno_box("Si desidera generare ugualmente la fornitura?"); book.add(clirep);
TAlleg_report acqrep(acq, *this, true);
book.add(acqrep);
book.preview();
} }
else
{
delete cli;
delete acq;
}
}
void TAlleg_mask::import_clifo(const TFilename& name,
TAssoc_array& clips, TAssoc_array& forps,
TAlleg_log& log)
{
TString error;
if (test_file(name, error))
{
TPadoaSchioppa_set inps(name);
TProgind pi(inps.items(), name, true, true);
TAssoc_array* cur_clifo = NULL;
for (bool ok = inps.move_first(); ok; ok = inps.move_next())
{
if (!pi.addstatus(1))
break;
const int trc = inps.rec_type()[0]-'0';
if (trc == 1 || trc == 2)
{
TAssoc_array& clifo = trc == 1 ? clips : forps;
int i = 0, pos = 1;
const TString& rec = inps.curr_row();
for (i = 0; i < npCount; i++, pos += npSize) // Scandisce i 70 campi non posizionali
{
const TString& fld = rec.mid(pos, npSize);
const TString8 code = fld.mid(2,6);
const int ncode = atoi(code);
if (ncode > 1000)
{
switch (ncode)
{
case 1001: // Inizia una nuova anagrafica
cur_clifo = NULL;
break;
case 3001: // Ho trovato la Partita IVA della nuova anagrafica
if (cur_clifo == NULL)
{
// Cerco l'anagrafica corrispondente alla Partita IVA
const TString16 piva = fld.mid(8);
cur_clifo = (TAssoc_array*)clifo.objptr(piva);
if (cur_clifo == NULL) // Se non la trovo ...
{
cur_clifo = new TAssoc_array; // ... allora la creo nuova
clifo.add(piva, cur_clifo);
}
}
else
log.log(2, "Dati inconsistenti");
break;
default :
if (cur_clifo != NULL)
{
if (ncode > 4000) // Importi
{
const real imp = fld.mid(8);
const TVariant value(imp); // Impossibile fondere con riga precedente :-?
TVariant* tot = (TVariant*)cur_clifo->objptr(code);
if (tot != NULL)
tot->add(value); // Incremento importo precedente
else
cur_clifo->add(code, value); // Creo nuovo importo
}
else // Non importi: praticamente solo Codice Fiscale
{
const TVariant value(fld.mid(8));
cur_clifo->add(code, value);
}
}
else
log.log(2, "Dati inconsistenti");
break;
}
}
else
break;
}
}
}
}
else
{
error.replace('\n', ' ');
log.log(1, error);
}
}
TRecnotype TAlleg_mask::export_clifo(int tiporec, TAssoc_array& clifo,
TAllegati_set& all, TPadoaSchioppa_set& pss)
{
TRecnotype count = 0;
if (!clifo.empty())
{
pss.new_rec(tiporec);
FOR_EACH_ASSOC_OBJECT(clifo, cash, ckey, cobj)
{
const TVariant piva = ckey;
pss.set(1001, ++count);
pss.set(3001, piva.as_string());
all.new_rec();
all.set(CLI_TIPOCF, tiporec == 1 ? "C" : "F");
all.set(CLI_CODCF, count);
all.set(CLI_PAIV, piva);
TString80 str = tiporec == 1 ? TR("Cliente") : TR("Fornitore");
str << ' ' << count;
all.set(CLI_RAGSOC, (const char*)str);
TAssoc_array& data = *(TAssoc_array*)cobj;
FOR_EACH_ASSOC_OBJECT(data, dash, dkey, dobj)
{
const int code = atoi(dkey);
const TVariant& var = *(TVariant*)dobj;
if (code > 4000)
{
pss.set(code, var);
if (tiporec == 1) // Clienti
{
switch (code)
{
case 4001: all.set("C_IMP", var); break;
case 4002: all.set("C_IVA", var); break;
case 5001: all.set("C_NI", var); break;
case 6001: all.set("C_ES", var); break;
case 7001: all.set("C_NE", var); break;
default : break;
}
}
else // Fornitori
{
switch (code)
{
case 4001: all.set("C_IMP", var); break;
case 4002: all.set("C_IVA", var); break;
case 5001: all.set("C_IND", var); break;
case 6001: all.set("C_NI", var); break;
case 7001: all.set("C_ES", var); break;
case 8001: all.set("C_NE", var); break;
default : break;
}
}
}
else
{
if (code != 1001 && code != 3001) // Gia' scritti da prima
pss.set(code, var.as_string());
}
}
}
}
return count;
}
void TAlleg_mask::fusione()
{
TPadoaSchioppa_set pss;
TAlleg_log log;
add_0_9(0, pss, log); // Testa
TAssoc_array clips, forps;
TSheet_field& sheet = sfield(F_FUSION);
TFilename name;
FOR_EACH_SHEET_ROW(sheet, r, row) if (row2name(*row, name))
{
TString error;
if (test_file(name, error))
import_clifo(name, clips, forps, log);
else
log.log(1, error);
}
TAllegati_set* all = new TAllegati_set;
export_clifo(1, clips, *all, pss); // Clienti
export_clifo(2, forps, *all, pss); // Fornitori
add_3(pss); // Totali Clienti e Fornitori
add_0_9(9, pss, log); // Piede (= Testa)
bool go_on = all->items() > 0;
if (log.red_alert())
go_on = show_errors(log);
if (go_on) if (go_on)
{ {
TFilename fname = get(F_DIR); TFilename fname;
fname.add(get(F_NAME)); if (build_output_name(fname))
pss.save_as(fname); pss.save_as(fname);
TReport_book book;
TAlleg_report rep(all, *this, true);
book.add(rep);
book.preview(); book.preview();
} }
else
delete all;
}
bool TAlleg_mask::test_file(const TFilename& name, TString& error) const
{
TToken_string errors(80, ';');
error.cut(0);
if (!name.exist())
errors = TR("non e' accessibile o inesistente");
else
{
const TFixed_string ecf_ext("ecf");
if (ecf_ext.compare(name.ext(), true) != 0)
errors.add(TR("non ha un'estensione valida (ECF)"));
TFilename outname; build_output_name(outname);
if (name == outname)
errors.add(TR("ha lo stesso nome del file totale"));
const long sz = fsize(name);
if (sz % 1800)
errors.add(TR("non ha una dimensione valida (multipla di 1800)"));
ifstream ecf_file(name);
TString4 head; head.spaces();
ecf_file.read(head.get_buffer(), head.size());
if (!head.starts_with("0ECF"))
errors.add(TR("non ha un record di testata valido (0ECF)"));
}
if (errors.full())
{
error << '\'' << name << "' " << TR("non e' una fornitura valida")
<< ":\n" << errors;
}
return errors.empty();
} }
bool TAlleg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TAlleg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
@ -1381,10 +1689,47 @@ bool TAlleg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
if (e == fe_button) if (e == fe_button)
{ {
if (check_fields()) if (check_fields())
{
if (curr_page() == 0)
generazione(); generazione();
else
fusione();
}
return false; return false;
} }
break; break;
case F_FUSION:
if (e == se_notify_modify)
{
TFilename name;
if (row2name(((TSheet_field&)o).row(jolly), name))
{
TString error;
if (!test_file(name, error))
return error_box(error);
}
} else
if (e == fe_close)
{
TSheet_field& s = (TSheet_field&)o;
TString error;
TFilename name1, name2;
FOR_EACH_SHEET_ROW(s, i, row1) if (row2name(*row1, name1))
{
if (!test_file(name1, error))
return error_box(error);
FOR_EACH_SHEET_ROW(s, j, row2) if (j > i && row2name(*row2, name2))
{
if (name1 == name2)
{
error.format("La riga %d e' duplicata nella riga %d", i+1, j+1);
return error_box(error);
}
}
}
}
break;
default: default:
break; break;
} }

View File

@ -13,3 +13,7 @@
#define F_COMP 113 #define F_COMP 113
#define F_DATA 114 #define F_DATA 114
#define F_FILTRO 115 #define F_FILTRO 115
#define F_FUSION 201
#define F_DIR2 204
#define F_NAME2 205

View File

@ -60,7 +60,7 @@
<source>#INTERMEDIARIO</source> <source>#INTERMEDIARIO</source>
</field> </field>
<field x="50" y="6" type="Testo" width="4" pattern="1" text="CAF" /> <field x="50" y="6" type="Testo" width="4" pattern="1" text="CAF" />
<field x="54" y="6" type="Numero" align="right" width="5" pattern="1"> <field x="54" y="6" type="Numero" align="right" width="5" pattern="1" hide_zero="1">
<source>#CAF</source> <source>#CAF</source>
</field> </field>
<field x="63" y="6" type="Testo" width="27" pattern="1" text="Data impegno alla trasmissione" /> <field x="63" y="6" type="Testo" width="27" pattern="1" text="Data impegno alla trasmissione" />
@ -151,7 +151,7 @@
<source>P_NE</source> <source>P_NE</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,#F1.206</prescript> <prescript description="B1.0 PRESCRIPT">MESSAGE ADD,#F1.206</prescript>
</field> </field>
<field y="2" type="Numero" align="right" width="5" pattern="1"> <field y="2" type="Numero" align="right" width="5" pattern="1" hide_zero="1">
<source>CAPCF</source> <source>CAPCF</source>
</field> </field>
<field x="6" y="2" type="Stringa" width="50" pattern="1"> <field x="6" y="2" type="Stringa" width="50" pattern="1">

View File

@ -49,16 +49,18 @@ BEGIN
PROMPT 1 4 "@bFornitura" PROMPT 1 4 "@bFornitura"
END END
STRING F_DIR 128 50 STRING F_DIR 256 64
BEGIN BEGIN
PROMPT 2 5 "Cartella " PROMPT 2 5 "Cartella "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,F_DIR2
END END
STRING F_NAME 50 STRING F_NAME 64
BEGIN BEGIN
PROMPT 2 6 "File " PROMPT 2 6 "File "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,F_NAME2
END END
GROUPBOX DLG_NULL 78 4 GROUPBOX DLG_NULL 78 4
@ -119,7 +121,7 @@ END
DATE F_DATA DATE F_DATA
BEGIN BEGIN
PROMPT 2 15 "Data dell'impegno alla trasmimssione " PROMPT 2 15 "Data dell'impegno alla trasmissione "
VALIDATE REQIF_FUNC 1 F_INTR VALIDATE REQIF_FUNC 1 F_INTR
WARNING "Data obbligatoria in presenza di un intermediario" WARNING "Data obbligatoria in presenza di un intermediario"
FIELD IMPEGNO FIELD IMPEGNO
@ -177,4 +179,59 @@ END
ENDPAGE ENDPAGE
PAGE "Somma forniture" 0 0 0 -3
SPREADSHEET F_FUSION 78 15
BEGIN
PROMPT 1 1 ""
ITEM "Elenco Forniture da sommare@70"
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 17 "@bFornitura totale"
END
STRING F_DIR2 256 64
BEGIN
PROMPT 2 18 "Cartella "
FLAGS "D"
END
STRING F_NAME2 64
BEGIN
PROMPT 2 19 "File "
FLAGS "D"
END
ENDPAGE
ENDMASK
PAGE "File" -1 -1 78 5
STRING 101 256 70
BEGIN
PROMPT 1 1 "File "
FSELECT "*.ecf"
CHECKTYPE REQUIRED
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK ENDMASK

View File

@ -5,9 +5,11 @@
// ------------------------------------------------------------ // ------------------------------------------------------------
#include <currency.h> #include <currency.h>
#include <recarray.h>
#include <utility.h> #include <utility.h>
#include "cg4300.h" #include "cg4300.h"
#include <attiv.h>
// flags per annuale // flags per annuale
#define IS_PRORATA 0x0001 #define IS_PRORATA 0x0001
@ -152,7 +154,15 @@ void TLiquidazione_app::describe_name(int month, TToken_string& codatts, char fl
d->_s0 = _nditte->curr().get("CODDITTA"); d->_s0 = _nditte->curr().get("CODDITTA");
d->_s1 = _nditte->curr().get("RAGSOC"); d->_s1 = _nditte->curr().get("RAGSOC");
d->_s2 = _nditte->curr(LF_ATTIV).get("CODATT");
if (atoi(_year) > 2007)
{
const TString16 codateco = _nditte->curr(LF_ATTIV).get(ATT_CODATECO);
d->_s2 = codateco;
}
else
d->_s2 = _nditte->curr(LF_ATTIV).get("CODATT");
d->_s3 = codatts.items() == 1 ? (const char*)_nditte->curr(LF_ATTIV).get("DESCR") : ""; d->_s3 = codatts.items() == 1 ? (const char*)_nditte->curr(LF_ATTIV).get("DESCR") : "";
d->_s4 = _freqviva; d->_s4 = _freqviva;
@ -1804,7 +1814,7 @@ void TLiquidazione_app::set_plm(_DescrItem& d)
} }
if (!(d._r7.is_zero() && d._r8.is_zero())) if (!(d._r7.is_zero() && d._r8.is_zero()))
{ {
set_row(rw++,FR("Totali acquisti indeducibili per art.19@91g%r@107g%r"), set_row(rw++,FR("Totale acquisti indeducibili per art.19@91g%r@107g%r"),
&(d._r7), &(d._r8)); &(d._r7), &(d._r8));
} }
if (! (d._r9.is_zero() && d._r10.is_zero())) if (! (d._r9.is_zero() && d._r10.is_zero()))

View File

@ -2497,10 +2497,26 @@ void TStampa_registri_app::preprocess_header()
set_header(r, FR("Registro IVA: %s %s %s"), (const char*)_codreg, set_header(r, FR("Registro IVA: %s %s %s"), (const char*)_codreg,
(const char*)_desc_lib, (const char*) data); (const char*)_desc_lib, (const char*) data);
else else
set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"), {
(const char*) _codreg, (const char*) _desc_lib, if (_annoes > 2007)
(const char*) data, (const char*) _codatt, {
(const char*) _attivita); TString key;
key.format("%ld|%s", _ditta, (const char *)_codatt);
const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO);
set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"),
(const char*) _codreg, (const char*) _desc_lib,
(const char*) data, (const char*) codateco,
(const char*) _attivita);
}
else
set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"),
(const char*) _codreg, (const char*) _desc_lib,
(const char*) data, (const char*) _codatt,
(const char*) _attivita);
}
} }
else else
{ {
@ -3694,8 +3710,19 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
row.put(codreg, 14); row.put(codreg, 14);
row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18); row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18);
row.put(TR("Attivita\'"), 60); row.put(TR("Attivita\'"), 60);
row.put(codatt, 70);
row.put(desc, 76); if (_annoes > 2007)
{
TString key;
key.format("%ld|%s", _ditta, (const char *)codatt);
const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO);
row.put(codateco, 70);
}
else
row.put(codatt, 70);
row.put(desc, 77);
pr.print(row); pr.print(row);
} }
else else

View File

@ -24,7 +24,7 @@ public:
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
virtual void main_loop(); virtual void main_loop();
virtual bool check_autorization() const { return FALSE; } virtual bool check_autorization() const { return false; }
void stato_trasferimento(TString& std); void stato_trasferimento(TString& std);
bool controlli_preliminari(); bool controlli_preliminari();

View File

@ -38,10 +38,10 @@ class TRic_archivi : public TSkeleton_application
bool _sequenza,_disketto; bool _sequenza,_disketto;
bool _prima_volta,_baipassa; bool _prima_volta,_baipassa;
TString _nomeid,_nomeidp,_ragsoc_dittar; TString _nomeid,_nomeidp,_ragsoc_dittar;
TFilename _marker,_trasf,_trasfer,_pathname; TFilename _marker,_trasf,_trasfer,_pathname,_trasfhard;
long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp; long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp;
TDate _datatras,_datatrasp,_dataultras_tab,_dataultras; TDate _datatras,_datatrasp,_dataultras_tab,_dataultras;
TString _sigle_file,_nrec_file,_trasfhard; TString _sigle_file,_nrec_file;
char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo,_agg_fatatt,_agg_fatpas; char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo,_agg_fatatt,_agg_fatpas;
public: public:
@ -50,7 +50,7 @@ public:
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
virtual bool check_autorization() const virtual bool check_autorization() const
{return FALSE;} {return false;}
virtual void main_loop(); virtual void main_loop();
bool leggi_marker(); bool leggi_marker();
bool leggi_marker_rep(); bool leggi_marker_rep();
@ -106,7 +106,7 @@ bool TRic_archivi::create()
_prima_volta = TRUE; _prima_volta = TRUE;
_nultras = 0; _nultras = 0;
_nultras_tab = 0; _nultras_tab = 0;
_baipassa = FALSE; _baipassa = false;
return TSkeleton_application::create(); return TSkeleton_application::create();
} }
@ -139,7 +139,7 @@ void TRic_archivi::componi_path(TMask* msk)
if (drive == "A:" || drive == "B:") if (drive == "A:" || drive == "B:")
_disketto = TRUE; _disketto = TRUE;
else else
_disketto = FALSE; _disketto = false;
// Fine cazzata // Fine cazzata
const int pos = path.find(':'); const int pos = path.find(':');
@ -189,13 +189,13 @@ bool TRic_archivi::leggi_marker()
if (_numtotdisk == 0) if (_numtotdisk == 0)
{ {
message_box(TR("Il numero totale dischi su marker non e' significativo: impossibile proseguire")); message_box(TR("Il numero totale dischi su marker non e' significativo: impossibile proseguire"));
return FALSE; return false:
} }
if (_progdisk != _numdisk) if (_progdisk != _numdisk)
{ {
message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk); message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk);
_sequenza = FALSE; _sequenza = false;
return TRUE; return TRUE;
} }
else else
@ -206,7 +206,7 @@ bool TRic_archivi::leggi_marker()
_numinv = atoi(buffer.sub(14,17)); _numinv = atoi(buffer.sub(14,17));
const TString8 tmp = buffer.sub(17,23); const TString8 tmp = buffer.sub(17,23);
_datatras = converti(tmp,FALSE); _datatras = converti(tmp, false);
_totrectras = atol(buffer.sub(23,29)); _totrectras = atol(buffer.sub(23,29));
@ -238,7 +238,7 @@ bool TRic_archivi::leggi_marker()
return TRUE; return TRUE;
} }
return FALSE; return false;
} }
bool TRic_archivi::leggi_marker_rep() bool TRic_archivi::leggi_marker_rep()
@ -266,7 +266,7 @@ bool TRic_archivi::leggi_marker_rep()
if (_progdisk != _numdisk) if (_progdisk != _numdisk)
{ {
message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk); message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk);
_sequenza = FALSE; _sequenza = false;
return TRUE; return TRUE;
} }
else else
@ -478,7 +478,7 @@ void TRic_archivi::leggi_trasfer(const char* nome)
_nultras = 0; _nultras = 0;
_trasf = _tras_file->path(_dittaric); _trasf = _tras_file->path(_dittaric);
_trasf << nome; _trasf.add(nome);
_tras_file->open(_trasf); _tras_file->open(_trasf);
@ -513,7 +513,7 @@ void TRic_archivi::leggi_trasfer(const char* nome)
int TRic_archivi::controllo_ripartenza() int TRic_archivi::controllo_ripartenza()
{ {
TString std; TString std;
bool flag = FALSE; bool flag = false;
int var = 0; int var = 0;
set_firm(_dittaric); set_firm(_dittaric);
@ -568,7 +568,7 @@ bool TRic_archivi::video_ripartenza()
{ {
leggi_trasfer("\\trasfer"); leggi_trasfer("\\trasfer");
_prima_volta = FALSE; _prima_volta = false;
TMask maskera("cg6400a"); TMask maskera("cg6400a");
TMask* msk = &maskera; TMask* msk = &maskera;
@ -583,19 +583,19 @@ bool TRic_archivi::video_ripartenza()
msk->set(F_CODDITTARIC, _dittaric); msk->set(F_CODDITTARIC, _dittaric);
msk->set(F_RAGSOC, _ragsoc_dittar); msk->set(F_RAGSOC, _ragsoc_dittar);
msk->set(F_NULTRASDSK, _numinv); msk->set(F_NULTRASDSK, _numinv);
TString data1 = _datatras.string(); TString16 data1 = _datatras.string();
msk->set(F_DATAULTRASDSK, data1); msk->set(F_DATAULTRASDSK, data1);
if (_nultras != 0) if (_nultras != 0)
{ {
msk->set(F_NULTRASTAB, _nultras); msk->set(F_NULTRASTAB, _nultras);
TString data2 = _dataultras.string(); TString16 data2 = _dataultras.string();
msk->set(F_DATAULTRASTAB, data2); msk->set(F_DATAULTRASTAB, data2);
} }
else else
{ {
msk->set(F_NULTRASTAB, _nultras_tab); msk->set(F_NULTRASTAB, _nultras_tab);
TString data2 = _dataultras_tab.string(); TString16 data2 = _dataultras_tab.string();
msk->set(F_DATAULTRASTAB, data2); msk->set(F_DATAULTRASTAB, data2);
} }
@ -613,13 +613,13 @@ bool TRic_archivi::video_ripartenza()
tasto = msk->run(); tasto = msk->run();
if (tasto != K_ENTER) if (tasto != K_ENTER)
return FALSE; return false;
if (_baipassa) if (_baipassa)
return TRUE; return TRUE;
if (!ripartenza()) if (!ripartenza())
return FALSE; return false;
if (_numinv > (_nultras_tab + 1)) if (_numinv > (_nultras_tab + 1))
warning_box(FR("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio.\n" warning_box(FR("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio.\n"
@ -650,11 +650,8 @@ void TRic_archivi::ripristina_trasfer()
{ {
TProgind prg (1,TR("Trasferimento archivi"),false, false); TProgind prg (1,TR("Trasferimento archivi"),false, false);
if (_numdisk == 1) if (_numdisk == 1)
{
// set_firm(_dittaric);
fcopy(_trasfer,_trasf,false); fcopy(_trasfer,_trasf,false);
}
else else
fcopy(_trasfer,_trasf,true); fcopy(_trasfer,_trasf,true);
} }
@ -662,7 +659,7 @@ void TRic_archivi::ripristina_trasfer()
void TRic_archivi::trasfer2tempfile() void TRic_archivi::trasfer2tempfile()
{ {
_trasfhard = _tras_file->path(_dittaric); _trasfhard = _tras_file->path(_dittaric);
_trasfhard << HEADER; _trasfhard.add(HEADER);
switch (_scelta) switch (_scelta)
{ {
case 'S': _tras_file->fcopytemp(_trasf,_trasfhard); break; case 'S': _tras_file->fcopytemp(_trasf,_trasfhard); break;
@ -705,20 +702,15 @@ long TRic_archivi::leggi_tabella_tras()
bool TRic_archivi::set_flag() bool TRic_archivi::set_flag()
{ {
TString sigla;
long nrec;
int j;
int k = 0; int k = 0;
TString flag; TString4 flag;
TString record; TString record;
TString ana_com,pcon_cau; TString4 uselab;
TString uselab; bool fatto = true;
bool fatto = TRUE;
TConfig conf(CONFIG_DITTA); TConfig conf(CONFIG_DITTA, "cg");
const TString4 ana_com = conf.get("AnCfCm");
ana_com = conf.get("AnCfCm","cg"); const TString4 pcon_cau = conf.get("PcTcCm");
pcon_cau = conf.get("PcTcCm","cg");
_tras_file->open(_trasfhard); _tras_file->open(_trasfhard);
@ -733,43 +725,43 @@ bool TRic_archivi::set_flag()
record = _tras_file->record(); record = _tras_file->record();
} }
for (j = 0; j < _sigle_file.len(); j++) for (int j = 0; j < _sigle_file.len(); j++)
{ {
sigla = _sigle_file.mid(j,1); const char sigla = _sigle_file[j];
nrec = atol(_nrec_file.mid(k,6)); const long nrec = atol(_nrec_file.mid(k,6));
if (fatto) if (fatto)
{ {
if (sigla == "W" || sigla == "P") if (sigla == 'W' || sigla == 'P')
{ {
if (nrec > 0 && pcon_cau == "") if (nrec > 0 && pcon_cau == "")
{ {
flag = "T"; flag = "T";
fatto = FALSE; fatto = false;
} }
} }
else else
if (sigla == "A") if (sigla == 'A')
{ {
if (nrec > 0 && ana_com == "") if (nrec > 0 && ana_com == "")
{ {
flag = "T"; flag = "T";
fatto = FALSE; fatto = false;
} }
} }
else else
if (sigla == "Z" || sigla == "U" || sigla == "B") if (sigla == 'Z' || sigla == 'U' || sigla == 'B')
{ {
if (nrec > 0) if (nrec > 0)
{ {
flag = "C"; flag = "C";
fatto = FALSE; fatto = false;
} }
} }
else else
{ {
flag = "*"; flag = "*";
fatto = FALSE; fatto = false;
} }
if (flag == "T") if (flag == "T")
@ -778,7 +770,7 @@ bool TRic_archivi::set_flag()
uselab = ""; uselab = "";
} }
if (sigla == "W" || sigla == "P") if (sigla == 'W' || sigla == 'P')
{ {
if (pcon_cau == "X") if (pcon_cau == "X")
{ {
@ -787,7 +779,7 @@ bool TRic_archivi::set_flag()
} }
} }
if (sigla == "A") if (sigla == 'A')
{ {
if (ana_com == "X") if (ana_com == "X")
{ {
@ -798,11 +790,10 @@ bool TRic_archivi::set_flag()
k += 6; k += 6;
} }
record.overwrite(_sigle_file,86); record.overwrite(_sigle_file, 86);
record.overwrite(_nrec_file,95); record.overwrite(_nrec_file, 95);
TString agg(7);
char agg[8];
agg[0] = _agg_cls; agg[0] = _agg_cls;
agg[1] = _agg_cau; agg[1] = _agg_cau;
agg[2] = _agg_clifo; agg[2] = _agg_clifo;
@ -813,14 +804,12 @@ bool TRic_archivi::set_flag()
record.overwrite(agg,234); record.overwrite(agg,234);
record.overwrite(uselab,240); record.overwrite(uselab,240);
TString str; TString80 str; str.spaces(60);
str.spaces(60);
record.overwrite(str,241); record.overwrite(str,241);
const int size = 1024; const int size = 1024;
if (!_tras_file->write_control_rec(record, size)) if (!_tras_file->write_control_rec(record, size))
return FALSE; return false;
} }
conf.set("FlStTra", flag); conf.set("FlStTra", flag);
@ -852,5 +841,5 @@ int cg6400 (int argc, char* argv[])
TRic_archivi* main_app = new TRic_archivi(*argv[2],p3); TRic_archivi* main_app = new TRic_archivi(*argv[2],p3);
main_app->run(argc, argv,main_app->_titolo); main_app->run(argc, argv,main_app->_titolo);
delete main_app; delete main_app;
return TRUE; return 0;
} }

View File

@ -1277,11 +1277,10 @@ void TRic_tab::scrivi_righeIVA(long numreg)
_triva->setkey(1); _triva->setkey(1);
_triva->zero(); _triva->zero();
_triva->put(RMI_NUMREG, numreg); _triva->put(RMI_NUMREG, numreg);
TRectype riva(LF_RMOVIVA);
riva = _triva->curr();
for (_triva->read(); !_triva->eof(); _triva->next()) for (_triva->read(); !_triva->eof(); _triva->next())
{ {
if (_triva->curr() > riva) if (_triva->get_long(RMI_NUMREG) != numreg)
break; break;
_triva->put(RMI_NUMREG, _nuovareg); _triva->put(RMI_NUMREG, _nuovareg);
_rmoviva->curr() = _triva->curr(); _rmoviva->curr() = _triva->curr();

View File

@ -632,7 +632,7 @@ bool TVar_mov::setta_campi_maschera_iva(TMask& m)
regiva.trim(); regiva.trim();
TString codcaus = _rec_mov->get (MOV_CODCAUS); TString codcaus = _rec_mov->get (MOV_CODCAUS);
long codcf = _rec_mov->get_long(MOV_CODCF); long codcf = _rec_mov->get_long(MOV_CODCF);
TString ocfpi = _rec_mov->get (MOV_OCFPI); TString16 ocfpi = _rec_mov->get (MOV_OCFPI);
char provvis = _rec_mov->get_char(MOV_PROVVIS); char provvis = _rec_mov->get_char(MOV_PROVVIS);
/***************************************************** /*****************************************************

View File

@ -102,12 +102,12 @@ void TInv_cont::main_loop()
long ditta = msk->get_long(F_DITTAINV); long ditta = msk->get_long(F_DITTAINV);
set_firm(ditta); set_firm(ditta);
TConfig conf(CONFIG_DITTA); TConfig conf(CONFIG_DITTA, "cg");
TString std = conf.get("FlStInv"); const TString& std = conf.get("FlStInv");
if (_scelta == 'S' && std != "D") if (_scelta == 'S' && std != "D")
{ {
TString appname = "cg6 -8 L"; const char* const appname = "cg6 -8 L";
TString corpo = ""; TString corpo = "";
TDate data = msk->get(F_DATALIM); TDate data = msk->get(F_DATALIM);
@ -182,9 +182,8 @@ void TInv_cont::main_loop()
{ {
// aggiorna_marker(str,23); // aggiorna_marker(str,23);
_trasf = "";
_trasf = firm2dir(0); _trasf = firm2dir(0);
_trasf << "\\trasfer"; _trasf.add("trasfer");
::remove(_trasf); ::remove(_trasf);
_tras_file.open(_trasf,TRUE); _tras_file.open(_trasf,TRUE);
@ -573,11 +572,11 @@ bool TInv_cont::esiste_tabella_studio()
return TRUE; return TRUE;
} }
bool TInv_cont::leggi_header() bool TInv_cont::leggi_header()
{ {
_header = "";
_header = firm2dir(0); _header = firm2dir(0);
_header << HEADER; _header.add(HEADER);
_tras_file.open(_header); _tras_file.open(_header);
@ -729,7 +728,7 @@ bool TInv_cont::controlla_stato_invio()
{ {
set_firm(_ditta); set_firm(_ditta);
TConfig conf(CONFIG_DITTA); TConfig conf(CONFIG_DITTA, "cg");
_std = conf.get("FlStInv"); _std = conf.get("FlStInv");
if (_stato != _std) if (_stato != _std)
@ -1547,18 +1546,19 @@ void TInv_cont::iva_inviata(long numreg)
} }
} }
void TInv_cont::movIVA2tempfile(TString& key, TMask& m) void TInv_cont::movIVA2tempfile(const TString& key, TMask& m)
{ {
TString ocfpi; const int size = 1024;
TDate datareg;
bool inviva; TString16 ocfpi;
bool provvis; TDate datareg;
int size = 1024; bool inviva;
bool provvis;
_tras_file.open(_header); _tras_file.open(_header);
long items = _rmoviva->items(); const long items = _rmoviva->items();
_prog = new TProgind(items,"Invio movimenti Iva in corso... Prego attendere.",FALSE); _prog = new TProgind(items, TR("Invio movimenti Iva"), FALSE);
_rmoviva->setkey(1); _rmoviva->setkey(1);
@ -1566,7 +1566,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
_rmoviva->first(); _rmoviva->first();
else else
{ {
long numreg = atol(key.mid(0,7)); const long numreg = atol(key.mid(0,7));
_rmoviva->zero(); _rmoviva->zero();
_rmoviva->put(RMI_NUMREG, numreg); _rmoviva->put(RMI_NUMREG, numreg);
_rmoviva->put(RMI_NUMRIG, 1); _rmoviva->put(RMI_NUMRIG, 1);
@ -1595,7 +1595,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
} }
} }
else else
inviva = FALSE; inviva = false;
// Controlla data limite invio // Controlla data limite invio
if ( inviva || datareg > _datalimsk ) if ( inviva || datareg > _datalimsk )
@ -1625,10 +1625,8 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
} }
leggi_record_controllo(); leggi_record_controllo();
TString chiave; TString8 chiave; chiave.format("%07ld", nreg);
chiave.format("%07ld", nreg); _control_rec.overwrite("U",240); // Sigla
TString sigla("U");
_control_rec.overwrite(sigla,240);
_control_rec.overwrite(chiave,241); _control_rec.overwrite(chiave,241);
_tras_file.write_control_rec(_control_rec,size); _tras_file.write_control_rec(_control_rec,size);
@ -1646,16 +1644,18 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
//la chiave e' compilata con i dati del file precedente. //la chiave e' compilata con i dati del file precedente.
leggi_record_controllo(); leggi_record_controllo();
TString chiave,app,sigla;
app.format("%-60s", (const char*) chiave); const char sigla_p = _tras_file.ult_file()[0];
char sigla_p = _tras_file.ult_file()[0]; const int posiz = _files.find(sigla_p);
int posiz = _files.find(sigla_p); TString4 nuova_sigla = " ";
TString nuova_sigla = " ";
if (posiz < _files.len()) if (posiz < _files.len())
nuova_sigla = _files.mid(posiz+1,1); nuova_sigla = _files.mid(posiz+1,1);
_control_rec.overwrite(nuova_sigla,240); _control_rec.overwrite(nuova_sigla,240);
TString80 app; app.spaces(60);
_control_rec.overwrite(app,241); _control_rec.overwrite(app,241);
_tras_file.write_control_rec(_control_rec,size); _tras_file.write_control_rec(_control_rec,size);
_tras_file.close(); _tras_file.close();
@ -1664,7 +1664,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
} }
void TInv_cont::SC_inviato(char tipo,int gruppo,int conto,long sottoc, void TInv_cont::SC_inviato(char tipo,int gruppo,int conto,long sottoc,
int anno,TString& numpart,int nriga) int anno,const TString& numpart,int nriga)
{ {
_part->setkey(1); _part->setkey(1);
_part->zero(); _part->zero();
@ -1685,12 +1685,12 @@ void TInv_cont::SC_inviato(char tipo,int gruppo,int conto,long sottoc,
void TInv_cont::movSC2tempfile(TString& key, TMask& m) void TInv_cont::movSC2tempfile(TString& key, TMask& m)
{ {
int size = 1024; const int size = 1024;
_tras_file.open(_header); _tras_file.open(_header);
long items = _part->items(); const long items = _part->items();
_prog = new TProgind(items,"Invio movimenti di Saldaconto in corso... Prego attendere.",FALSE); _prog = new TProgind(items, TR("Invio movimenti di Saldaconto."), FALSE);
_part->setkey(1); _part->setkey(1);
@ -1703,7 +1703,7 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m)
int conto = atoi(key.mid(4,3)); int conto = atoi(key.mid(4,3));
long sottoc = atol(key.mid(7,6)); long sottoc = atol(key.mid(7,6));
int anno = atoi(key.mid(13,4)); int anno = atoi(key.mid(13,4));
TString numpart = key.mid(17,7); TString8 numpart= key.mid(17,7);
int nriga = atoi(key.mid(24,4)); int nriga = atoi(key.mid(24,4));
_part->zero(); _part->zero();
_part->put(PART_TIPOCF, tipo); _part->put(PART_TIPOCF, tipo);
@ -1756,10 +1756,10 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m)
scrivi_righePAGSCA(tipo,gruppo,conto,sottoc,anno,numpart,nriga); scrivi_righePAGSCA(tipo,gruppo,conto,sottoc,anno,numpart,nriga);
leggi_record_controllo(); leggi_record_controllo();
TString chiave; TString80 chiave;
chiave.format("%c%03d%03d%06ld%04d%7s%04d", tipo,gruppo,conto,sottoc,anno,(const char*)numpart,nriga); chiave.format("%c%03d%03d%06ld%04d%7s%04d", tipo,gruppo,conto,sottoc,anno,(const char*)numpart,nriga);
TString sigla("B");
_control_rec.overwrite(sigla,240); _control_rec.overwrite("B",240); // Sigla
_control_rec.overwrite(chiave,241); _control_rec.overwrite(chiave,241);
_tras_file.write_control_rec(_control_rec,size); _tras_file.write_control_rec(_control_rec,size);
@ -1788,7 +1788,7 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m)
} }
void TInv_cont::scrivi_righeSCAD(char tipocf,int gruppo,int conto,long sottoc, void TInv_cont::scrivi_righeSCAD(char tipocf,int gruppo,int conto,long sottoc,
int anno,TString& numpart,int nriga) int anno,const TString& numpart,int nriga)
{ {
_scad->zero(); _scad->zero();
_scad->put(SCAD_TIPOCF, tipocf); _scad->put(SCAD_TIPOCF, tipocf);
@ -1802,26 +1802,24 @@ void TInv_cont::scrivi_righeSCAD(char tipocf,int gruppo,int conto,long sottoc,
_scad->put(SCAD_NUMPART, numpart); _scad->put(SCAD_NUMPART, numpart);
_scad->put(SCAD_NRIGA, nriga); _scad->put(SCAD_NRIGA, nriga);
TRectype scad (_scad->curr()); const TRectype scad = _scad->curr();
const TString16 numpart_rec = scad.get(SCAD_NUMPART);
for (_scad->read(_isgteq); !_scad->eof(); _scad->next()) for (_scad->read(_isgteq); !_scad->eof(); _scad->next())
{ {
TString rec = scad.get(SCAD_NUMPART); const TString& numpart_file = _scad->get(SCAD_NUMPART);
TString file = _scad->get(SCAD_NUMPART); if (_scad->curr() != scad || numpart_file != numpart_rec)
break;
if (_scad->curr() != scad || file != rec) break;
_tscad->curr() = _scad->curr(); _tscad->curr() = _scad->curr();
if (_tscad->read() == NOERR) if (_tscad->read() == NOERR)
{ {
_tscad->zero();
_tscad->curr() = _scad->curr(); _tscad->curr() = _scad->curr();
_tscad->rewrite(); _tscad->rewrite();
} }
else else
{ {
_tscad->zero();
_tscad->curr() = _scad->curr(); _tscad->curr() = _scad->curr();
_tscad->write(); _tscad->write();
} }
@ -1872,44 +1870,45 @@ void TInv_cont::scrivi_righePAGSCA(char tipocf,int gruppo,int conto,long sottoc,
int cg6900 (int argc, char* argv[]) int cg6900 (int argc, char* argv[])
{ {
switch (*argv[2]) const char t = argc > 2 ? argv[2][0] : ' ';
switch (t)
{ {
case 'S': case 'S':
{ {
TInv_cont* main_app = new TInv_cont(*argv[2]); TInv_cont* main_app = new TInv_cont('S');
main_app->run(argc, argv,main_app->_titolo); main_app->run(argc, argv,main_app->_titolo);
delete main_app; delete main_app;
} }
break; break;
case 'P': case 'P':
{ {
TInv_cont* main_app = new TInv_cont(*argv[2]); TInv_cont* main_app = new TInv_cont('P');
main_app->run(argc, argv,main_app->_titolo); main_app->run(argc, argv,main_app->_titolo);
delete main_app; delete main_app;
} }
break; break;
case 'L': case 'L':
{ {
TLista_archivi* a = new TLista_archivi; TLista_archivi* a = new TLista_archivi;
a->run(argc, argv,"Lista controllo archivi"); a->run(argc, argv, TR("Lista controllo archivi"));
delete a; delete a;
} }
break; break;
case 'R': case 'R':
{ {
TRip_flag* a = new TRip_flag; TRip_flag* a = new TRip_flag;
a->run(argc, argv,"Ripristino flag movimenti"); a->run(argc, argv,TR("Ripristino flag movimenti"));
delete a; delete a;
} }
break; break;
case 'C': case 'C':
{ {
TCanc_file_invio a; TCanc_file_invio a;
a.run(argc, argv,"Eliminazione file invio"); a.run(argc, argv,TR("Eliminazione file invio"));
} }
break; break;
default: default:
break; break;
} }

View File

@ -41,7 +41,8 @@ class TInv_cont : public TSkeleton_application
char _scelta; char _scelta;
TString _control_rec, _header, _trasf, _std, _stato, _marker, _nome_simbolico; TFilename _trasf, _header;
TString _control_rec, _std, _stato, _marker, _nome_simbolico;
TString _files, _codcaus, _numdoc, _reg, _codpag, _tipodoc, _codcausm, _sigle,_cpg_nc; TString _files, _codcaus, _numdoc, _reg, _codpag, _tipodoc, _codcausm, _sigle,_cpg_nc;
TString _ocfpi, _ragsococc, _indocc, _capocc, _localocc, _provocc, _codvali, _codval; TString _ocfpi, _ragsococc, _indocc, _capocc, _localocc, _provocc, _codvali, _codval;
bool _esiste_ditta, _esiste_record, _inviato, _flag_provvis, _flag_bollato; bool _esiste_ditta, _esiste_record, _inviato, _flag_provvis, _flag_bollato;
@ -102,18 +103,18 @@ public:
void scrivi_righePN(long numreg); void scrivi_righePN(long numreg);
void primanota_inviata(long numreg); void primanota_inviata(long numreg);
void movIVA2tempfile(TString& key,TMask& m); void movIVA2tempfile(const TString& key,TMask& m);
bool occasionali(const TString& ocfpi); bool occasionali(const TString& ocfpi);
void iva_inviata(long numreg); void iva_inviata(long numreg);
void movSC2tempfile(TString& key,TMask& m); void movSC2tempfile(TString& key,TMask& m);
void scrivi_righeSCAD(char,int,int,long,int,TString&,int); void scrivi_righeSCAD(char,int,int,long,int,const TString&,int);
void scrivi_righePAGSCA(char,int,int,long,int,TString&,int); void scrivi_righePAGSCA(char,int,int,long,int,TString&,int);
void SC_inviato(char,int,int,long,int,TString&,int); void SC_inviato(char,int,int,long,int,const TString&,int);
int nprogre_interno(long nreg, int nrig); int nprogre_interno(long nreg, int nrig);
void aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TString& npart, int nrata); void aggiorna_array_rate(char tipo,int g,int c,long s,int anno,const TString& npart, int nrata);
int ultima_rata_partita(char tipo,int g,int c,long s,int anno,TString& npart); int ultima_rata_partita(char tipo,int g,int c,long s,int anno,const TString& npart);
void partita2trasfer(TString& record, bool crea_record_riferimento = TRUE); void partita2trasfer(TString& record, bool crea_record_riferimento = TRUE);
void pagsca2trasfer (TString& record, real& importo, real& importoval); void pagsca2trasfer (TString& record, real& importo, real& importoval);
long crea_record_riferimento_PN(); long crea_record_riferimento_PN();

View File

@ -1186,7 +1186,8 @@ bool TInv_cont::testata_mov_IVA(long numreg)
_tmov->setkey(1); _tmov->setkey(1);
_tmov->zero(); _tmov->zero();
_tmov->put(MOV_NUMREG, numreg); _tmov->put(MOV_NUMREG, numreg);
if (_tmov->read() == NOERR) const bool ok = _tmov->read() == NOERR;
if (ok)
{ {
_codcf = _tmov->get_long(MOV_CODCF); _codcf = _tmov->get_long(MOV_CODCF);
_data74ter = _tmov->get_date(MOV_DATA74TER); _data74ter = _tmov->get_date(MOV_DATA74TER);
@ -1194,18 +1195,15 @@ bool TInv_cont::testata_mov_IVA(long numreg)
_codvali = _tmov->get (MOV_CODVALI); _codvali = _tmov->get (MOV_CODVALI);
_cambioi = _tmov->get_real(MOV_CAMBIOI); _cambioi = _tmov->get_real(MOV_CAMBIOI);
_corrval = _tmov->get_real(MOV_CORRVALUTA); _corrval = _tmov->get_real(MOV_CORRVALUTA);
_ocfpi = _tmov->get (MOV_OCFPI);
_dataregiva = _tmov->get_date(MOV_DATAREG); _dataregiva = _tmov->get_date(MOV_DATAREG);
_inviato = _tmov->get_bool(MOV_INVIVA); _inviato = _tmov->get_bool(MOV_INVIVA);
_tipodoc = _tmov->get (MOV_TIPODOC); _tipodoc = _tmov->get (MOV_TIPODOC);
_provvis = _tmov->get_char(MOV_PROVVIS); _provvis = _tmov->get_char(MOV_PROVVIS);
if (_ocfpi.not_empty()) _ocfpi = _tmov->get (MOV_OCFPI);
if (_ocfpi.full())
cerca_occasionale(); cerca_occasionale();
} }
else return ok;
return FALSE;
return TRUE;
} }
void TInv_cont::cerca_occasionale() void TInv_cont::cerca_occasionale()
@ -1233,6 +1231,7 @@ void TInv_cont::cerca_occasionale()
void TInv_cont::cerca_comune_occas(const TString& com) void TInv_cont::cerca_comune_occas(const TString& com)
{ {
/*
TLocalisamfile comuni (LF_COMUNI); TLocalisamfile comuni (LF_COMUNI);
comuni.setkey(1); comuni.setkey(1);
@ -1243,30 +1242,34 @@ void TInv_cont::cerca_comune_occas(const TString& com)
_localocc = comuni.get(COM_DENCOM); _localocc = comuni.get(COM_DENCOM);
_provocc = comuni.get(COM_PROVCOM); _provocc = comuni.get(COM_PROVCOM);
} }
*/
TString8 comkey; comkey << " |" << com;
const TRectype& comrec = cache().get(LF_COMUNI, comkey);
_localocc = comrec.get(COM_DENCOM);
_provocc = comrec.get(COM_PROVCOM);
} }
// Invia a sistema un movimento IVA // Invia a sistema un movimento IVA
bool TInv_cont::invio_mov_IVA() bool TInv_cont::invio_mov_IVA()
{ {
const int size = 256; const int size = 256;
TString record(size); // TString256 record(size);
TString256 record;
long nreg_p; long nreg_p;
int numero_righe = 0; int numero_righe = 0;
nreg_p = -1; nreg_p = -1;
long cicli = _triva->items(); const long cicli = _triva->items();
_prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per Sistema\nPrego attendere.",FALSE); _prog = new TProgind(cicli,TR("Movimenti Iva: generazione file TRASFER per Sistema\nPrego attendere."),FALSE);
_tras_file.open(_trasf,TRUE); _tras_file.open(_trasf,TRUE);
for (_triva->first(); !_triva->eof(); _triva->next()) TString str;
for (int err = _triva->first(); err == NOERR; err = _triva->next())
{ {
TString str; _prog->addstatus(1);
record.spaces();
_prog->addstatus(1);
record.spaces();
long nreg = _triva->get_long(RMI_NUMREG); long nreg = _triva->get_long(RMI_NUMREG);
int nrig = _triva->get_int (RMI_NUMRIG); int nrig = _triva->get_int (RMI_NUMRIG);
@ -1363,17 +1366,16 @@ bool TInv_cont::invio_mov_IVA()
str.format("%-.2s", (const char*) _provocc); str.format("%-.2s", (const char*) _provocc);
record.overwrite(str,131); //Provincia cliente occasionale record.overwrite(str,131); //Provincia cliente occasionale
record.overwrite(_ocfpi, 199); //Codice occasionale alla pos 200 (aggiunta AGA)
} }
int tipoatt = _triva->get_int(RMI_TIPOATT); const int tipoatt = _triva->get_int(RMI_TIPOATT);
str.format("%01d", tipoatt); str.format("%01d", tipoatt);
record.overwrite(str,133); //Tipo attivita' record.overwrite(str,133); //Tipo attivita'
bool intra = _triva->get_bool(RMI_INTRA); const bool intra = _triva->get_bool(RMI_INTRA);
if (intra) record.overwrite(intra ? "X" : " ",134); //Flag causale x acquisti intracomunitari
record.overwrite("X",134);
else
record.overwrite(" ",134); //Flag causale x acquisti intracomunitari
/* /*
TString corrlire = _corrlire.string(); TString corrlire = _corrlire.string();
@ -1388,24 +1390,27 @@ bool TInv_cont::invio_mov_IVA()
/* Cambio intra con 5 decimali */ /* Cambio intra con 5 decimali */
dec2integer(_cambioi,100000L); dec2integer(_cambioi,100000L);
TString cambioi = _cambioi.string(); TString16 cambioi = _cambioi.string();
if (_cambioi.sign() < 0) if (_cambioi.sign() < 0)
negPC2negAS(cambioi); negPC2negAS(cambioi);
str.format("%011s", (const char*) cambioi); str.format("%011s", (const char*) cambioi);
record.overwrite(str,149); //Cambio record.overwrite(str,149); //Cambio
dec2integer(_corrval,1000); dec2integer(_corrval,1000);
TString corrval = _corrval.string(); TString16 corrval = _corrval.string();
if (_corrval.sign() < 0) if (_corrval.sign() < 0)
negPC2negAS(corrval); negPC2negAS(corrval);
str.format("%014s", (const char*) corrval); str.format("%014s", (const char*) corrval);
record.overwrite(str,160); //Corrispettivo in valuta record.overwrite(str,160); //Corrispettivo in valuta
const bool nota = _triva->get_bool(RMI_NOTAVARECF);
record.overwrite(nota ? "1" : "0", 177); //Nota variazione relativa anni precedenti
_tmov->setkey(1); _tmov->setkey(1);
_tmov->put(MOV_NUMREG, nreg); _tmov->put(MOV_NUMREG, nreg);
if (_tmov->read() == NOERR) if (_tmov->read() == NOERR)
{ {
int meseliq = _tmov->get_int(MOV_MESELIQ); const int meseliq = _tmov->get_int(MOV_MESELIQ);
if (meseliq > 0) if (meseliq > 0)
{ {
str.format("%02d", meseliq); str.format("%02d", meseliq);
@ -1430,11 +1435,11 @@ int TInv_cont::nprogre_interno(long numreg, int numrig)
{ {
int riga = 1; int riga = 1;
TString key (format("%06ld%02d", numreg, numrig)); TString8 key; key.format("%06ld%02d", numreg, numrig);
if (!_riga_interna.is_key(key)) if (!_riga_interna.is_key(key))
{ {
TString nr (format("%d", riga)); TString8 nr; nr.format("%d", riga);
_riga_interna.add(key,nr); _riga_interna.add(key,nr);
} }
else else
@ -1449,9 +1454,9 @@ int TInv_cont::nprogre_interno(long numreg, int numrig)
long TInv_cont::crea_record_riferimento_PN() long TInv_cont::crea_record_riferimento_PN()
{ {
int size = 256; const int size = 256;
TString record(size); TString256 record;
TString str; TString8 str;
_ultima_nreg++; _ultima_nreg++;
@ -1465,7 +1470,7 @@ long TInv_cont::crea_record_riferimento_PN()
str.format("%02d", 1); str.format("%02d", 1);
record.overwrite(str,8); //Numero di riga record.overwrite(str,8); //Numero di riga
TString datareg (_tpart->get_date(PART_DATAREG)); TString16 datareg (_tpart->get_date(PART_DATAREG));
str = riconverti(datareg,FALSE); str = riconverti(datareg,FALSE);
str.format("%06s", (const char*) str); str.format("%06s", (const char*) str);
record.overwrite(str,15); //Data di registrazione record.overwrite(str,15); //Data di registrazione
@ -1502,7 +1507,7 @@ long TInv_cont::crea_record_riferimento_PN()
str.format("%c", tipocf); str.format("%c", tipocf);
record.overwrite(str,219); //Flag Cliente / Fornitore record.overwrite(str,219); //Flag Cliente / Fornitore
TString codcaus (_tpart->get(PART_CODCAUS)); TString4 codcaus (_tpart->get(PART_CODCAUS));
if (tipocf != ' ' && codcaus.empty()) if (tipocf != ' ' && codcaus.empty())
codcaus = (TString&)_tab_cau[_tpart->get_int(PART_TIPOMOV)-1]; // Causale codcaus = (TString&)_tab_cau[_tpart->get_int(PART_TIPOMOV)-1]; // Causale
str.format("%03s",(const char*)codcaus); str.format("%03s",(const char*)codcaus);
@ -1702,7 +1707,8 @@ void TInv_cont::partita2trasfer(TString& record, bool crea_record_riferimento)
_numrec_sc++; _numrec_sc++;
} }
void TInv_cont::aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TString& numpart, int rata) void TInv_cont::aggiorna_array_rate(char tipo,int g,int c,long s,int anno,
const TString& numpart, int rata)
{ {
TString key (format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*) numpart)); TString key (format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*) numpart));
@ -1720,14 +1726,16 @@ void TInv_cont::aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TStrin
} }
} }
int TInv_cont::ultima_rata_partita(char tipo,int g,int c,long s,int anno,TString& numpart) int TInv_cont::ultima_rata_partita(char tipo,int g,int c,long s,
int anno, const TString& numpart)
{ {
int rata = 1; int rata = 1;
TString key (format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*) numpart)); TString80 key;
key.format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*)numpart);
if (!_ultima_rata.is_key(key)) if (!_ultima_rata.is_key(key))
{ {
TString nr (format("%2d", rata)); TString4 nr; nr.format("%2d", rata);
_ultima_rata.add(key,nr); _ultima_rata.add(key,nr);
} }
else else

View File

@ -51,7 +51,7 @@ void TRip_flag::main_loop()
if (rippn || ripiva) if (rippn || ripiva)
{ {
long cicli = _mov->items(); long cicli = _mov->items();
_prog = new TProgind(cicli,"Ripristino movimenti in corso... Prego attendere.",FALSE); _prog = new TProgind(cicli, TR("Ripristino movimenti in corso"), FALSE);
_mov->setkey(1); _mov->setkey(1);
_mov->zero(); _mov->zero();

View File

@ -6,10 +6,8 @@
bool TInv_cont::invio_contabilita_PC() bool TInv_cont::invio_contabilita_PC()
{ {
char sigla;
TString nrec,files;
bool header = TRUE;
const int size = 1024; const int size = 1024;
bool header = true;
_numrec_cau = 0; _numrec_cau = 0;
_numrec_clifo = 0; _numrec_clifo = 0;
@ -22,15 +20,15 @@ bool TInv_cont::invio_contabilita_PC()
leggi_record_controllo(); leggi_record_controllo();
files = _tras_file.sigle_file(); TString16 files = _tras_file.sigle_file();
nrec = _tras_file.nrec_file(); TString nrec = _tras_file.nrec_file();
files.trim(); files.trim();
_tras_file.open(_trasf,TRUE); _tras_file.open(_trasf,TRUE);
for (int i = 0; i < files.len();i++) for (int i = 0; i < files.len();i++)
{ {
sigla = files[i]; const char sigla = files[i];
//_numrec = atol(nrec.mid(i * 6,6)); //_numrec = atol(nrec.mid(i * 6,6));
if (header) if (header)
@ -93,10 +91,8 @@ bool TInv_cont::invio_contabilita_PC()
aggiorna_header(files); aggiorna_header(files);
aggiorna_trasfer(files); aggiorna_trasfer(files);
TString str;
calcola_totale_record(); calcola_totale_record();
str.format("%06ld", _tot_rec); TString8 str; str.format("%06ld", _tot_rec);
aggiorna_marker(str,26); aggiorna_marker(str,26);
return TRUE; return TRUE;
@ -104,7 +100,7 @@ bool TInv_cont::invio_contabilita_PC()
void TInv_cont::invio_testata_causali() void TInv_cont::invio_testata_causali()
{ {
int size = 1024; const int size = 1024;
TString record(size); TString record(size);
TString cod; TString cod;
@ -964,8 +960,8 @@ void TInv_cont::invio_righe_contabili()
TString4 rowtype = _trmov->get(RMV_ROWTYPE); TString4 rowtype = _trmov->get(RMV_ROWTYPE);
record.overwrite(rowtype,158); record.overwrite(rowtype,158);
record.overwrite(_trmov->get("CODCMS"),159); // record.overwrite(_trmov->get("CODCMS"),159);
record.overwrite(_trmov->get("FASCMS"),179); // record.overwrite(_trmov->get("FASCMS"),179);
_tras_file.write_control_rec(record,size); _tras_file.write_control_rec(record,size);
_numrec_pn++; _numrec_pn++;
@ -1001,12 +997,11 @@ void TInv_cont::invio_righe_IVA()
_prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per PC\nPrego attendere.",FALSE); _prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per PC\nPrego attendere.",FALSE);
_tras_file.open(_trasf,TRUE); _tras_file.open(_trasf,TRUE);
TString tipodoc; TString4 tipodoc;
TString16 str;
for (_triva->first(); !_triva->eof(); _triva->next()) for (_triva->first(); !_triva->eof(); _triva->next())
{ {
TString str;
_prog->addstatus(1); _prog->addstatus(1);
record.spaces(); record.spaces();
@ -1022,7 +1017,7 @@ void TInv_cont::invio_righe_IVA()
str.format("%03d", nrig); str.format("%03d", nrig);
record.overwrite(str,9); //Numero di riga record.overwrite(str,9); //Numero di riga
TString codiva = _triva->get(RMI_CODIVA); TString4 codiva = _triva->get(RMI_CODIVA);
str.format("%-4s", (const char*) codiva); str.format("%-4s", (const char*) codiva);
record.overwrite(str,60); record.overwrite(str,60);
@ -1096,9 +1091,6 @@ void TInv_cont::invio_righe_IVA()
str.format("%03d", rigaiva); str.format("%03d", rigaiva);
record.overwrite(str,113); record.overwrite(str,113);
record.overwrite(_triva->get("CODCMS"),118);
record.overwrite(_triva->get("FASCMS"),138);
_tmov->setkey(1); _tmov->setkey(1);
_tmov->put(MOV_NUMREG, nreg); _tmov->put(MOV_NUMREG, nreg);
if (_tmov->read() == NOERR) if (_tmov->read() == NOERR)
@ -1111,6 +1103,10 @@ void TInv_cont::invio_righe_IVA()
} }
} }
// record.overwrite(_triva->get(RMI_CODCMS),118);
// record.overwrite(_triva->get(RMI_FASCMS),138);
record.overwrite(_triva->get(RMI_NAVP),148);
_numrec_iva++; _numrec_iva++;
_tras_file.write_control_rec(record,size); _tras_file.write_control_rec(record,size);

View File

@ -256,26 +256,31 @@ const TString& cap2comune(const TString& cap, const TString& denom)
if (cappone[2] == '1') //e' un capoluogo di provincia if (cappone[2] == '1') //e' un capoluogo di provincia
cappone.overwrite("00", 3, 2); cappone.overwrite("00", 3, 2);
TString80 up_denom = denom;
up_denom.upper();
TRelation relcom(LF_COMUNI); TRelation relcom(LF_COMUNI);
TRectype& comrec = relcom.curr(); TRectype& comrec = relcom.curr();
comrec.put(COM_CAPCOM, cappone); comrec.put(COM_CAPCOM, cappone);
TString4 codone;
TCursor comuni (&relcom, "", 3, &comrec, &comrec); TCursor comuni (&relcom, "", 3, &comrec, &comrec);
const TRecnotype items = comuni.items(); const TRecnotype items = comuni.items();
comuni.freeze(); comuni.freeze();
TString4 codone;
double cmp = 0.69; double cmp = 0.69;
for (comuni = 0L; comuni.pos() < items; ++comuni) for (comuni = 0L; comuni.pos() < items; ++comuni)
{ {
const TString& denominazione = comrec.get(COM_DENCOM); TString80 denominazione = comrec.get(COM_DENCOM);
const double fc = xvt_str_fuzzy_compare (denom, denominazione); denominazione.upper();
const double fc = xvt_str_fuzzy_compare (up_denom, denominazione);
if (fc > cmp) if (fc > cmp)
{ {
codone = comrec.get(COM_COM); codone = comrec.get(COM_COM);
cmp = fc; cmp = fc;
} }
} }
if (codone.full()) if (codone.full())
return get_tmp_string() = codone; return get_tmp_string() = codone;
} }

View File

@ -130,7 +130,7 @@ TInteressi_IVA_table::~TInteressi_IVA_table()
int TInteressi_IVA_table::read(int anno, int mese) int TInteressi_IVA_table::read(int anno, int mese)
{ {
TString16 k; k.format("%04d%02d",anno,mese); TString8 k; k.format("%04d%02d",anno,mese);
zero();put("CODTAB",k); zero();put("CODTAB",k);
if (TTable::read(_isgteq) == NOERR) if (TTable::read(_isgteq) == NOERR)
{ {
@ -214,9 +214,12 @@ bool TRigaiva_array::add_riga(const TRectype& iva)
{ {
const int dec = TCurrency::get_firm_dec(); const int dec = TCurrency::get_firm_dec();
real impo_ind = impo * percind / CENTO; impo_ind.round(dec); real impo_ind = impo * percind / CENTO; impo_ind.round(dec);
real impos_ind = impos * percind / CENTO; impos_ind.round(dec);
const real impo_det = impo - impo_ind; const real impo_det = impo - impo_ind;
const real impos_det = impos - impos_ind;
const TCodiceIVA iva(codiva);
real impos_ind = iva.imposta(impo_ind, dec);
const real impos_det = impos - impos_ind;
ok = add_riga(impo_det,impos_det,ZERO,ZERO,codiva,0,tipocr,intra,tipoatt); ok = add_riga(impo_det,impos_det,ZERO,ZERO,codiva,0,tipocr,intra,tipoatt);
ok &= add_riga(impo_ind,impos_ind,ZERO,ZERO,codiva,tipodet,tipocr,intra,tipoatt); ok &= add_riga(impo_ind,impos_ind,ZERO,ZERO,codiva,tipodet,tipocr,intra,tipoatt);
@ -244,13 +247,14 @@ bool TRiga_array::add_riga(const real& imponibile, const real& imposta,
TRiga& r = riga(i); TRiga& r = riga(i);
if (r._codiva==codiva) if (r._codiva==codiva)
{ {
found = TRUE; found = true;
r._imponibile += imponibile; r._imponibile += imponibile;
r._imposta += imposta; r._imposta += imposta;
r._implordo += implordo; r._implordo += implordo;
r._imponibilep += imponibilep; r._imponibilep += imponibilep;
r._impostap += impostap; r._impostap += impostap;
r._implordop += implordop; r._implordop += implordop;
break;
} }
} }
if (!found) if (!found)
@ -267,13 +271,13 @@ bool TRiga_array::add_riga(const real& imponibile, const real& imposta,
bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc)
{ {
bool found = FALSE; bool found = false;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TDociva& r = riga(i); TDociva& r = riga(i);
if (r._descrdoc==_descrdociva) if (r._descrdoc==_descrdociva)
{ {
found = TRUE; found = true;
if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4)) if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4))
r._totdociva += _importo; r._totdociva += _importo;
} }
@ -291,13 +295,13 @@ bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,cons
bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc) bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc)
{ {
bool found = FALSE; bool found = false;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TTipodoc& r = (TTipodoc&)(*this)[i]; TTipodoc& r = (TTipodoc&)(*this)[i];
if (r._tipodoc==tipodoc) if (r._tipodoc==tipodoc)
{ {
found = TRUE; found = true;
r._totdoc += totdoc; r._totdoc += totdoc;
} }
} }

View File

@ -7,7 +7,6 @@
#include <diction.h> #include <diction.h>
#include <extcdecl.h> #include <extcdecl.h>
#include <progind.h> #include <progind.h>
#include <relation.h>
#include <scanner.h> #include <scanner.h>
#include <tabutil.h> #include <tabutil.h>
#include <utility.h> #include <utility.h>
@ -295,7 +294,7 @@ TRic_recfield::operator const char*() const
// Ritorna il record di controllo del trasfer // Ritorna il record di controllo del trasfer
const char* TTransfer_file::record() const const char* TTransfer_file::record() const
{ {
return (const char*)*_control_rec; return *_control_rec;
} }
TTransfer_file::TTransfer_file(char scelta) TTransfer_file::TTransfer_file(char scelta)
@ -533,10 +532,10 @@ bool TTransfer_file::read_control_rec_t()
_sigle_file = _control_rec_t.sub(38,47); _sigle_file = _control_rec_t.sub(38,47);
_nrec_file = _control_rec_t.sub(47,101); _nrec_file = _control_rec_t.sub(47,101);
TString ult_file = _control_rec_t.sub(240,241); _ult_file = _control_rec_t.sub(240,241);
TString key = _control_rec_t.sub(241,256); _ult_file = _ult_file.trim();
_ult_file = ult_file.trim(); _key = _control_rec_t.sub(241,256);
_key = key.trim(); _key = _key.trim();
fill_index(_sigle_file,_nrec_file); fill_index(_sigle_file,_nrec_file);
} }
else else
@ -591,14 +590,14 @@ long TTransfer_file::start(int i)
return 1; return 1;
else else
{ {
TToken_string data = (TToken_string&)_index[i-1]; TToken_string& data = (TToken_string&)_index[i-1];
return data.get_long(1) + 1; return data.get_long(1) + 1;
} }
} }
long TTransfer_file::end(int i) long TTransfer_file::end(int i)
{ {
TToken_string data = (TToken_string&)_index[i]; TToken_string& data = (TToken_string&)_index[i];
return data.get_long(4); return data.get_long(4);
} }
@ -608,7 +607,7 @@ long TTransfer_file::rec(int i)
if (i > 0) if (i > 0)
{ {
TToken_string data = (TToken_string&)_index[i-1]; TToken_string& data = (TToken_string&)_index[i-1];
rec = (data.get_long(1)) + 1; rec = (data.get_long(1)) + 1;
} }
@ -618,11 +617,9 @@ long TTransfer_file::rec(int i)
int TTransfer_file::num(char sigla) int TTransfer_file::num(char sigla)
{ {
const int items = _index.items(); const int items = _index.items();
TString16 dep;
for (int i = 0; i < items; i++) for (int i = 0; i < items; i++)
{ {
dep = name(i); const char* dep = name(i);
if ( dep[0] == sigla) if ( dep[0] == sigla)
return i; return i;
} }
@ -655,13 +652,12 @@ void TTransfer_file::readat(long recnum)
pos = end(i-1) + 1; pos = end(i-1) + 1;
offset = recnum - nrec(i-1); offset = recnum - nrec(i-1);
pos += offset * lenrec(i); pos += offset * lenrec(i);
break;
} }
else else
{ {
pos = recnum * lenrec(i); pos = recnum * lenrec(i);
break;
} }
break;
} }
} }
_curpos = recnum; _curpos = recnum;
@ -676,54 +672,37 @@ int TTransfer_file::read_rec_trasfer(long numrec, int size)
return letti; return letti;
} }
char TTransfer_file::flg_agg(char sigla) char TTransfer_file::flg_agg(char sigla) const
{ {
char flag; char flag;
switch (sigla)
if (sigla == 'W') {
flag = _control_rec->sub(235,236)[0]; case 'W': flag = (*_control_rec)[235]; break;
case 'A': flag = (*_control_rec)[236]; break;
if (sigla == 'A') case 'P': flag = (*_control_rec)[237]; break;
flag = _control_rec->sub(236,237)[0]; default : flag = ' '; break;
}
if (sigla == 'P')
flag = _control_rec->sub(237,238)[0];
return flag; return flag;
} }
bool TTransfer_file::numprot_att() bool TTransfer_file::numprot_att() const
{ {
char flag; char flag = (*_control_rec)[238];
return flag == 'X';
flag = _control_rec->sub(238,239)[0];
if (flag == 'X')
return true;
else
return false;
return true;
} }
bool TTransfer_file::numprot_pas() bool TTransfer_file::numprot_pas() const
{ {
char flag; char flag = (*_control_rec)[239];
return flag == 'X';
flag = _control_rec->sub(239,240)[0];
if (flag == 'X')
return true;
else
return false;
return true;
} }
char TTransfer_file::flg_agg_IV(char sigla) char TTransfer_file::flg_agg_IV(char sigla) const
{ {
char flag = ' '; char flag = ' ';
if (sigla == 'P') if (sigla == 'P')
flag = _control_rec->sub(234,235)[0]; flag = (*_control_rec)[234];
return flag; return flag;
} }
@ -757,20 +736,20 @@ void TTransfer_file::writeat(const char* str,int size,int fieldnum,const char* f
int TTransfer_file::go2field(int fieldnum, const char* file, const long nrec, bool seek) int TTransfer_file::go2field(int fieldnum, const char* file, const long nrec, bool seek)
{ {
TString256 key; int pos_campo = 0;
if (nrec < 0) if (nrec < 0)
readat(_curpos); // Mi posiziono all' inizio del record readat(_curpos); // Mi posiziono all' inizio del record
else else
readat(nrec); readat(nrec);
TString16 key;
if (!file) if (!file)
key.format("%2s%d",(const char*)_curfile,fieldnum); key.format("%2s%d",(const char*)_curfile,fieldnum);
else else
key.format("%2s%d", file, fieldnum); key.format("%2s%d", file, fieldnum);
int pos_campo = 0; if (_trc.is_key(key))
if (_trc.is_key((const char *) key))
{ {
TToken_string * data = (TToken_string *) _trc.objptr(key); TToken_string * data = (TToken_string *) _trc.objptr(key);
@ -1814,12 +1793,12 @@ void TTransfer_file::scrivi_occasionali(const TString& record, TString& cfpi)
err = _toccas->rewrite(); err = _toccas->rewrite();
} }
void TTransfer_file::write_tmp_movIVA(TString& record) void TTransfer_file::write_tmp_movIVA(const TString& record)
{ {
TString key,str; TString key,str;
int numfield = 3; //Per i movimenti i primi due campi della mappa non sono significativi int numfield = 3; //Per i movimenti i primi due campi della mappa non sono significativi
//ai fini del trasferimento (flag record gia trasferito e nuovo ultimo numero di registrazione). //ai fini del trasferimento (flag record gia trasferito e nuovo ultimo numero di registrazione).
const TMappa_trc& trc = mappa(); const TMappa_trc& trc = mappa();
TIsamtempfile* file = NULL; TIsamtempfile* file = NULL;
TRectype* dep = NULL; TRectype* dep = NULL;
int logicnum; int logicnum;
@ -1831,9 +1810,9 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
const TString4 sigla = record.mid(0,2); const TString4 sigla = record.mid(0,2);
key.format("%2s%d", (const char*)sigla, numfield); key.format("%2s%d", (const char*)sigla, numfield);
if (trc.is_key((const char *) key)) if (trc.is_key(key))
{ {
TString cfpi; TString16 cfpi;
int logicnum_p = 0; int logicnum_p = 0;
@ -1882,21 +1861,21 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
logicnum_p = logicnum; logicnum_p = logicnum;
int from = trc.from(key); const int from = trc.from(key);
int to = trc.to(key); const int to = trc.to(key);
TString16 fname = trc.field_name(key); const TString16 fname = trc.field_name(key);
TString80 field = record.sub(from-1,to); TString80 field = record.sub(from-1,to);
int flag = trc.flag(key); int flag = trc.flag(key);
int dec = trc.flag_bis(key); int dec = trc.flag_bis(key);
if (logicnum == LF_MOV && fname == "TOTDOC") if (logicnum == LF_MOV && fname == MOV_TOTDOC)
{ {
numfield++; numfield++;
key.format("%2s%d", (const char*) sigla,numfield); key.format("%2s%d", (const char*) sigla,numfield);
continue; continue;
} }
TRecfield campo (*dep,fname); const TRecfield campo(*dep, fname);
if (campo.type() == _realfld) if (campo.type() == _realfld)
{ {
negativo(field); negativo(field);
@ -1919,19 +1898,19 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
if (logicnum == LF_RMOVIVA) if (logicnum == LF_RMOVIVA)
{ {
if (fname == "NUMRIG") if (fname == RMI_NUMRIG)
{ {
int nriga = atoi(field); const int nriga = atoi(field);
field.format("%3d", nriga); field.format("%3d", nriga);
} }
} }
if (logicnum == LF_MOV && ( fname == "NUMREG" || flag == 2 ) ) if (logicnum == LF_MOV && ( fname == MOV_NUMREG || flag == 2 ) )
{ {
if (fname == "NUMREG") if (fname == MOV_NUMREG)
{ {
dep->put("NUMREG", _numreg); dep->put(MOV_NUMREG, _numreg);
dep->put("OCFPI", cfpi); dep->put(MOV_OCFPI, cfpi);
} }
if (flag == 2) if (flag == 2)
@ -1941,7 +1920,7 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
} }
} }
else else
if (logicnum == LF_RMOVIVA && fname == "NUMREG") if (logicnum == LF_RMOVIVA && fname == RMI_NUMREG)
{ {
int annoes = cerca_annoes(_numreg,tipodoc); int annoes = cerca_annoes(_numreg,tipodoc);
dep->put("ANNOES", annoes); dep->put("ANNOES", annoes);
@ -1951,9 +1930,9 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
dep->put(fname, field); dep->put(fname, field);
numfield++; numfield++;
key.format("%2s%d", (const char*) sigla,numfield); key.format("%2s%d", (const char*)sigla,numfield);
} }
while (trc.is_key((const char*) key)); while (trc.is_key(key));
_prog->addstatus(1); _prog->addstatus(1);
trasfer_data_moviva(*file, *dep, logicnum_p); trasfer_data_moviva(*file, *dep, logicnum_p);
@ -3142,7 +3121,7 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
bool is_delete = false, tpcon_valid = false; bool is_delete = false, tpcon_valid = false;
const char* const rflag = "rb"; const char* const rflag = "rb";
const char* wflag = "ab"; const char* const wflag = "ab";
TLocalisamfile tabella(LF_TAB); TLocalisamfile tabella(LF_TAB);
@ -3187,11 +3166,11 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
if ( (pos = sigle.find('Z')) >= 0) if ( (pos = sigle.find('Z')) >= 0)
{ {
_tmpmov = "%"; _tmpmov = "%";
_tmpmov << path(); _tmpmov << path();
_tmpmov << SLASH << TEMP_MOV; _tmpmov.add(TEMP_MOV);
_tmprmov = "%"; _tmprmov = "%";
_tmprmov << path(); _tmprmov << path();
_tmprmov << SLASH << TEMP_RMOV; _tmprmov.add(TEMP_RMOV);
nrec_mov = atol(nrec.mid(pos*6,6)); nrec_mov = atol(nrec.mid(pos*6,6));
} }
if ( (pos = sigle.find('U')) >= 0) if ( (pos = sigle.find('U')) >= 0)
@ -3483,24 +3462,21 @@ void TTransfer_file::scrivi_PN(long nrec)
void TTransfer_file::scrivi_IVA(long nrec) void TTransfer_file::scrivi_IVA(long nrec)
{ {
TString buffer(sizeT); TString buffer(sizeT);
TString16 trec;
_prog = new TProgind (nrec,TR("Trasferimento Movimenti Iva in corso\nPrego attendere"),false, true, 1); _prog = new TProgind (nrec,TR("Trasferimento Movimenti Iva in corso\nPrego attendere"),false, true, 1);
TRic_recfield recf (_ttab->curr(), "S0", 0, sizeT); const TRic_recfield recf(_ttab->curr(), "S0", 0, sizeT);
_ttab->zero(); _ttab->zero();
_ttab->put("CODTAB", "U1"); _ttab->put("CODTAB", "U1");
for (_ttab->read(); !_ttab->eof(); _ttab->next()) for (int err = _ttab->read(_isgteq); err == NOERR; err = _ttab->next())
{ {
trec = (_ttab->get("CODTAB")).left(2); const TString& trec = _ttab->get("CODTAB").left(2);
if (trec != "U1") break; if (trec != "U1") break;
buffer = (const char*) recf; buffer = (const char*)recf;
write_tmp_movIVA(buffer); write_tmp_movIVA(buffer);
} }
delete _prog; delete _prog;
@ -3523,12 +3499,10 @@ void TTransfer_file::scrivi_SC(long nrec)
_ttab->put("CODTAB", "B1"); _ttab->put("CODTAB", "B1");
for (_ttab->read(); !_ttab->eof(); _ttab->next()) for (_ttab->read(); !_ttab->eof(); _ttab->next())
{ {
const TString& trec = (_ttab->get("CODTAB")).left(2); const TString& trec = _ttab->get("CODTAB").left(2);
if (trec != "B1") break; if (trec != "B1") break;
buffer = (const char*) recf; buffer = (const char*) recf;
write_tmp_movSC(buffer); write_tmp_movSC(buffer);
} }
delete _prog; delete _prog;
@ -3563,7 +3537,6 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
const word size = 1024; const word size = 1024;
TString buffer(size); TString buffer(size);
TString16 trec;
if (sigle.find('W') >= 0) if (sigle.find('W') >= 0)
{ {
@ -3666,9 +3639,9 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
while (ok) while (ok)
{ {
const word letti = fread((char*)(const char*)buffer, 1, size, i); const word letti = fread(buffer.get_buffer(size), 1, size, i);
trec = buffer.left(2); const TString4 trec = buffer.left(2);
if (trec == " 1") // Copio il record di controllo nel file di appoggio if (trec == " 1") // Copio il record di controllo nel file di appoggio
{ // header. { // header.
@ -3679,7 +3652,7 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
if (trec == "B1" || trec == "B2" || trec == "B3") if (trec == "B1" || trec == "B2" || trec == "B3")
{ {
TString app = buffer.mid(19,7); TString8 app = buffer.mid(19,7);
app.trim(); // Modifica del 06-09-96 relativa all'allineamento app.trim(); // Modifica del 06-09-96 relativa all'allineamento
app.format("%-7s", (const char*) app); // del numero di riferimento partita che per i file app.format("%-7s", (const char*) app); // del numero di riferimento partita che per i file
buffer.overwrite(app,19); // temporanei deve essere sempre a sinistra buffer.overwrite(app,19); // temporanei deve essere sempre a sinistra
@ -4302,6 +4275,7 @@ void TTransfer_file::write_testata_movimenti(TString& record)
{ {
field = converti(field,TRUE); field = converti(field,TRUE);
} }
else
if (fname == OCC_CFPI) if (fname == OCC_CFPI)
{ {
_depmov->put(fname,field); _depmov->put(fname,field);
@ -4383,13 +4357,15 @@ void TTransfer_file::write_testata_movimenti(TString& record)
void TTransfer_file::write_righe_contabili(const TString& record) void TTransfer_file::write_righe_contabili(const TString& record)
{ {
TString16 key;
int numfield = 1;
const TMappa_trc& trc = mappa(); const TMappa_trc& trc = mappa();
int numfield = 1;
real importo = ZERO; real importo = ZERO;
int gruppo = 0; int gruppo = 0;
const TString4 sigla = record.mid(0,2); const TString4 sigla = record.mid(0,2);
TString16 key;
key.format("%2s%d", (const char*)sigla,numfield); key.format("%2s%d", (const char*)sigla,numfield);
_deprmov->zero(); _deprmov->zero();
@ -4630,18 +4606,14 @@ void TTransfer_file::write_righe_IVA(TString& record)
key.format("%2s%d", (const char*) sigla,numfield); key.format("%2s%d", (const char*) sigla,numfield);
} }
_triva->zero();
_triva->curr() = *_depriva; _triva->curr() = *_depriva;
if (_triva->read() == NOERR) if (_triva->read() == NOERR)
{ {
_triva->zero();
_triva->curr() = *_depriva; _triva->curr() = *_depriva;
_triva->rewrite(); _triva->rewrite();
} }
else else
{ {
_triva->zero();
_triva->curr() = *_depriva; _triva->curr() = *_depriva;
_triva->write(); _triva->write();
} }

View File

@ -146,9 +146,6 @@ class TTransfer_file
TRectype* _deprmov; TRectype* _deprmov;
TRectype* _depriva; TRectype* _depriva;
TRectype* _depoccas; TRectype* _depoccas;
//TRectype* _deppart;
//TRectype* _depscad;
//TRectype* _deppagsca;
TExtrectype* _deppart; TExtrectype* _deppart;
TExtrectype* _depscad; TExtrectype* _depscad;
TExtrectype* _deppagsca; TExtrectype* _deppagsca;
@ -160,10 +157,10 @@ class TTransfer_file
long _numreg, _numreg_p, _numreg_piva, _npoccas; long _numreg, _numreg_p, _numreg_piva, _npoccas;
long _nregSC, _nregSC_p; long _nregSC, _nregSC_p;
int _numrigSC, _numrigSC_p, _annoSC, _annoSC_p, _nrigaSC; int _numrigSC, _numrigSC_p, _annoSC, _annoSC_p, _nrigaSC;
TString _numpartSC, _numpartSC_p; TString8 _numpartSC, _numpartSC_p;
int _annoes; int _annoes;
TDate _datareg; TDate _datareg;
TString _cod_com; TString4 _cod_com;
long _curpos; long _curpos;
long _tot_rec; // Numero totale di record nel transfer long _tot_rec; // Numero totale di record nel transfer
@ -171,7 +168,7 @@ class TTransfer_file
int _last_tab,_last_mov; int _last_tab,_last_mov;
long _ditta; long _ditta;
TString16 _tiporec; TString4 _tiporec;
TString16 _nome_simb; TString16 _nome_simb;
TString16 _dataultras; TString16 _dataultras;
TString16 _sigle_file; TString16 _sigle_file;
@ -206,7 +203,7 @@ private:
int trasfer_data_tab(TIsamtempfile& file, TRectype& dep); int trasfer_data_tab(TIsamtempfile& file, TRectype& dep);
void write_tmp_movPN(TString& record); void write_tmp_movPN(TString& record);
int trasfer_data_mov(TIsamtempfile& file, TRectype& dep); int trasfer_data_mov(TIsamtempfile& file, TRectype& dep);
void write_tmp_movIVA(TString& record); void write_tmp_movIVA(const TString& record);
int trasfer_data_moviva(TIsamtempfile& file, TRectype& dep, int ln); int trasfer_data_moviva(TIsamtempfile& file, TRectype& dep, int ln);
// Funzioni per la ricezione del Saldaconto da Sistema // Funzioni per la ricezione del Saldaconto da Sistema
void write_tmp_movSC(TString& record); void write_tmp_movSC(TString& record);
@ -288,7 +285,7 @@ public:
// Funzioni che agiscono sul record di controllo del file trasfer. // Funzioni che agiscono sul record di controllo del file trasfer.
bool read_control_rec(); // Legge il record del file header bool read_control_rec(); // Legge il record del file header
bool read_control_rec_t(); // Legge il record di controllo del file trasfer bool read_control_rec_t(); // Legge il record di controllo del file trasfer
bool write_control_rec(const char* str, const int size); // Scrive una stringa di lunghezza size bool write_control_rec(const char* str, const int size); // Scrive una stringa di lunghezza size
@ -296,13 +293,13 @@ public:
const char* nome_simb () const { return _nome_simb; } // Ritorna il nome simbolico del sistema inviante const char* nome_simb () const { return _nome_simb; } // Ritorna il nome simbolico del sistema inviante
long ditta () const { return _ditta; } // Ritorna la ditta inviante long ditta () const { return _ditta; } // Ritorna la ditta inviante
int nultras () const { return _nultras; } // Ritorna il numero ultimo trasferimento int nultras () const { return _nultras; } // Ritorna il numero ultimo trasferimento
const char* dataultras() const { return (const char*) _dataultras; } // Ritorna la data ultimo trasferimento const char* dataultras() const { return _dataultras; } // Ritorna la data ultimo trasferimento
const char* sigle_file() const { return (const char*) _sigle_file; } // Ritorna una stringa contenente le sigle dei file da ricevere const char* sigle_file() const { return _sigle_file; } // Ritorna una stringa contenente le sigle dei file da ricevere
const char* nrec_file () const { return (const char*) _nrec_file; } // Ritorna una stringa con il numero totale di record corrispondenti ad ogni sigla dei file da ricevere const char* nrec_file () const { return _nrec_file; } // Ritorna una stringa con il numero totale di record corrispondenti ad ogni sigla dei file da ricevere
char flg_agg(char sigla); // Ritorna i flag tipo aggiornamento relativi alle tabelle char flg_agg(char sigla) const; // Ritorna i flag tipo aggiornamento relativi alle tabelle
bool numprot_att(); // Ritorna il flag riattribuzione numero protocollo su fatture attive bool numprot_att() const; // Ritorna il flag riattribuzione numero protocollo su fatture attive
bool numprot_pas(); // Ritorna il flag riattribuzione numero protocollo su fatture passive bool numprot_pas() const; // Ritorna il flag riattribuzione numero protocollo su fatture passive
char flg_agg_IV(char sigla); // Ritorna il flag tipo aggiornamento classi piano dei conti char flg_agg_IV(char sigla) const; // Ritorna il flag tipo aggiornamento classi piano dei conti
const char* ult_file () const { return (const char*) _ult_file; } // Ritorna l'ultima sigla file elaborato const char* ult_file () const { return (const char*) _ult_file; } // Ritorna l'ultima sigla file elaborato
const char* key () const { return (const char*) _key; } // Ritorna la chiave ultimo record elaborato const char* key () const { return (const char*) _key; } // Ritorna la chiave ultimo record elaborato
const char* record () const; // Ritorna il record di controllo del trasfer const char* record () const; // Ritorna il record di controllo del trasfer

View File

@ -1,8 +1,10 @@
#include "cgpagame.h"
#include <diction.h>
#include <msksheet.h> #include <msksheet.h>
#include <recarray.h> #include <recarray.h>
#include <tabutil.h> #include <tabutil.h>
#include "cgpagame.h"
#include "cg2100.h" #include "cg2100.h"
#include <cfven.h> #include <cfven.h>
@ -19,26 +21,29 @@ inline void swap(int& x, int& y) {int tmp = x; x = y; y = tmp; }
int TPagamento::_rata_ifield(int n, int f) const int TPagamento::_rata_ifield(int n, int f) const
{ {
TToken_string& t = (TToken_string&)_rate[n]; int v = 0;
return t.get_int(f); _rate.row(n).get(f, v);
return v;
} }
long TPagamento::_rata_lfield(int n, int f) const long TPagamento::_rata_lfield(int n, int f) const
{ {
TToken_string& t = (TToken_string&)_rate[n]; long v = 0;
return t.get_long(f); _rate.row(n).get(f, v);
return v;
} }
real TPagamento::_rata_rfield(int n, int f) const real TPagamento::_rata_rfield(int n, int f) const
{ {
TToken_string& t = (TToken_string&)_rate[n]; real v;
return real(t.get(f)); _rate.row(n).get(f, v);
return v;
} }
TDate TPagamento::_rata_dfield(int n, int f) const TDate TPagamento::_rata_dfield(int n, int f) const
{ {
TToken_string& t = (TToken_string&)_rate[n]; const TDate v = _rata_sfield(n, f);
return TDate(t.get(f)); return v;
} }
/* Funzione sgradita al nuovo C ed anche a Guy: static bleah! /* Funzione sgradita al nuovo C ed anche a Guy: static bleah!
@ -490,30 +495,30 @@ void TPagamento::next_scad(TDate& d, int scad, bool mcomm, int rata)
void TPagamento::set_default_type(int type, bool change_existing) void TPagamento::set_default_type(int type, bool change_existing)
{ {
_def_tpr = type; _def_tpr = type;
if (change_existing) if (change_existing)
{ {
for (int i = 0; i < n_rate(); i++) for (int i = 0; i < n_rate(); i++)
{ {
TToken_string& tt = rata(i); TToken_string& tt = rata(i);
tt.add(type, 2); tt.add(type, 2);
} }
_dirty = true; _dirty = true;
} }
} }
void TPagamento::set_default_ulc(const char* ulc, bool change_existing) void TPagamento::set_default_ulc(const char* ulc, bool change_existing)
{ {
_def_ulc = ulc; _def_ulc = ulc;
if (change_existing) if (change_existing)
{ {
for (int i = 0; i < n_rate(); i++) for (int i = 0; i < n_rate(); i++)
{ {
TToken_string& tt = rata(i); TToken_string& tt = rata(i);
tt.add(ulc, 5); tt.add(ulc, 5);
} }
_dirty = true; _dirty = true;
} }
} }
void TPagamento::remove_rata(int i) void TPagamento::remove_rata(int i)
@ -827,31 +832,22 @@ const char* TPagamento::desc_tipo(int tipo, char ulc, bool* ok) const
if (ulc > ' ') if (ulc > ' ')
{ {
const char key[3] = { tipo+'0', toupper(ulc), '\0' }; const char key[3] = { tipo+'0', toupper(ulc), '\0' };
/*
TTable clr("%CLR");
clr.put("CODTAB", key);
const int err = clr.read();
if (err == NOERR)
o = clr.get("S0"); // Bravo merlo: <clr> e' locale!
else if (ok != NULL)
*ok = false;
*/
o = cache().get("%CLR", key).get("S0"); o = cache().get("%CLR", key).get("S0");
} }
if (*o == '\0') if (*o == '\0')
{ {
switch (tipo) switch (tipo)
{ {
case 0: o = "Altro pagamento"; break; case 0: o = TR("Altro pagamento"); break;
case 1: o = "Rimessa diretta o contanti"; break; case 1: o = TR("Rimessa diretta o contanti"); break;
case 2: o = "Tratta"; break; case 2: o = TR("Tratta"); break;
case 3: o = "Ricevuta Bancaria"; break; case 3: o = TR("Ricevuta Bancaria"); break;
case 4: o = "Cessione"; break; case 4: o = TR("Cessione"); break;
case 5: o = "Paghero'"; break; case 5: o = TR("Paghero'"); break;
case 6: o = "Lettera di credito"; break; case 6: o = TR("Lettera di credito"); break;
case 7: o = "Tratta accettata"; break; case 7: o = TR("Tratta accettata"); break;
case 8: o = "Rapporti interban. diretti"; break; case 8: o = TR("Rapporti interban. diretti"); break;
case 9: o = "Bonifici"; break; case 9: o = TR("Bonifici"); break;
default: if (ok != NULL) *ok = false; break; default: if (ok != NULL) *ok = false; break;
} }
} }

Binary file not shown.

View File

@ -223,14 +223,15 @@ U1|19|46|47|25|GRUPPO|||
U1|20|48|49|25|CONTO||| U1|20|48|49|25|CONTO|||
U1|21|50|55|25|SOTTOCONTO||| U1|21|50|55|25|SOTTOCONTO|||
U1|22|135|135|25|INTRA||| U1|22|135|135|25|INTRA|||
U1|23|175|176|23|MESELIQ|||
U1|24|178|178|25|NOTAVARECF|||
U1|25|200|215|23|OCFPI|||
U1|50|62|86||||| U1|50|62|86|||||
U1|51|249|249|23|||| U1|51|249|249|23||||
U1|52|109|126||||| U1|52|109|126|||||
U1|53|127|131||||| U1|53|127|131|||||
U1|54|132|133||||| U1|54|132|133|||||
U1|56|87|108||||| U1|56|87|108|||||
U1|57|175|176|23|MESELIQ|||
U1|58|177|192|23|OCFPI|||
# #
# Tracciato Partite in caso di Fattura # Tracciato Partite in caso di Fattura
# #

View File

@ -200,6 +200,7 @@ U1|14|114|116|25|RIGAIVA|||
U1|15|117|118|24|MESELIQ||| U1|15|117|118|24|MESELIQ|||
U1|16|119|138|25|CODCMS||| U1|16|119|138|25|CODCMS|||
U1|17|139|148|25|FASCMS||| U1|17|139|148|25|FASCMS|||
U1|18|149|149|25|NOTAVARECF|||
B1|1|3|3|28|TIPOC||| B1|1|3|3|28|TIPOC|||
B1|2|4|6|28|GRUPPO||| B1|2|4|6|28|GRUPPO|||
B1|3|7|9|28|CONTO||| B1|3|7|9|28|CONTO|||

View File

@ -1,3 +1,3 @@
20 20
0 0
$clifo|0|0|679|0|Clienti/Fornitori||| $clifo|0|0|730|0|Clienti/Fornitori|||

View File

@ -1,5 +1,6 @@
20 20
54
56
TIPOCF|1|1|0|Tipo ( <C>liente <F>ornitore TIPOCF|1|1|0|Tipo ( <C>liente <F>ornitore
CODCF|3|6|0|Codice CODCF|3|6|0|Codice
RAGSOC|1|50|0|Ragione sociale RAGSOC|1|50|0|Ragione sociale
@ -32,7 +33,9 @@ PFAX|1|10|0|Prefisso del numero di FAX
FAX|1|30|0|Numero di FAX FAX|1|30|0|Numero di FAX
PTELEX|1|10|0|Prefisso del numero di TELEX PTELEX|1|10|0|Prefisso del numero di TELEX
TELEX|1|30|0|Prefisso del numero di TELEX TELEX|1|30|0|Prefisso del numero di TELEX
MAIL|1|50|0|Indirizzo di posta elettronica MAIL|1|50|0|Indirizzo di posta elettronica generico
BYMAIL|8|1|0|Consenso all' invio dei documenti per posta elettronica
DOCMAIL|1|50|0|Indirizzo di posta elettronica per i documenti
DATANASC|5|8|0|Data di nascita DATANASC|5|8|0|Data di nascita
STATONASC|2|3|0|Codice stato di nascita STATONASC|2|3|0|Codice stato di nascita
COMNASC|1|4|0|Codice comune di nascita COMNASC|1|4|0|Codice comune di nascita

View File

@ -1,3 +1,3 @@
25 25
0 0
$rmoviva|0|0|108|0|Righe movimento IVA|NMOV*2|| $rmoviva|0|0|109|0|Righe movimento IVA|NMOV*2||

View File

@ -1,5 +1,5 @@
25 25
18 19
ANNOES|2|4|0|Codice esercizio ANNOES|2|4|0|Codice esercizio
NUMREG|3|7|0|Numero operazione NUMREG|3|7|0|Numero operazione
NUMRIG|2|3|0|Numero riga NUMRIG|2|3|0|Numero riga
@ -18,5 +18,6 @@ CONTO|2|3|0|Conto
SOTTOCONTO|3|6|0|Sottoconto o codice cliente/fornitore SOTTOCONTO|3|6|0|Sottoconto o codice cliente/fornitore
CODCMS|1|20|0|Codice Commessa CODCMS|1|20|0|Codice Commessa
FASCMS|1|10|0|Fase Commessa FASCMS|1|10|0|Fase Commessa
NAVP|8|1|0|Nota di variazione anni precedenti x Elenco CF
1 1
NUMREG+NUMRIG| NUMREG+NUMRIG|

View File

@ -1,83 +0,0 @@
# prassid.doc - File configurazione ditte (commentato]
# una copia di questo file viene affibbiata a ogni nuova ditta
# NON MODIFICARE! Copiare prima in prassid.ini
[cg]
# Maschera
EdMask = cg5100a.msk
# Anno liquidazione IVA
AnLiIv = %yr%
# Anagrafica clienti/fornitori in comune
AnCfCm =
# Piano conti/tabella causali in comune
PcTcCm =
# Gestione libro cronologico
GsLbCn =
# Codice libro incassi pagamenti
CodLIC =
# Stampa totali fatture a fine registro
StTfFr =
# Stampa libro giornale e libro IVA unico
StLgiU =
# Gestione saldaconto
GesSal =
# Ricalcolo imposte degli acquisti destinati a rivendita
RicAcq =
# N. rif. allineato a destra per clienti e fornitori
NrCliDx =
NrForDx =
# Campo misterioso che segue il precedente
CmSgPc =
# Riferimenti partite
RifPar =
# Gestione valuta
GesVal =
# Codice lingua
CodLin =
# Credito IVA anno precedente
CrIvAp =
# Gestione liquidazione differita
GeLiDi =
# Codice causale chiusura
CoCaCh =
# Codice causale apertura
CoCaAp =
# Codici sottoconto Bilancio di Chiusura
CsBiChG =
CsBiChC =
CsBiChS =
# Codici sottoconto Profitti e perdite
CsPrPeG =
CsPrPeC =
CsPrPeS =
# Codici sottoconto Bilancio di Apertura
CsBiApG =
CsBiApC =
CsBiApS =
# Codici sottoconto Utile esercizio conto patrimoniale
CsUeCpG =
CsUeCpC =
CsUeCpS =
# Codici sottoconto Perdite esercizio conto patrimoniale
CsPeCpG =
CsPeCpC =
CsPeCpS =
# Codici sottoconto Utile esercizio conto economico
CsUeCeG =
CsUeCeC =
CsUeCeS =
# Codici sottoconto Perdite esercizio conto economico
CsPeCeG =
CsPeCeC =
CsPeCeS =
# Frequenza ratei/riscontri
RrFrAm =
# Mese commerciale ratei/riscontri
RrMeCo =
# Codice causale ratei
RrCcRa =
# Codice causale riscontri
RrCcRi =
# Gestione Vendite
GesVen =
[EOF]

View File

@ -1,29 +0,0 @@
# File configurazione contabilita'
# Versione commentata da NON usare direttamente
# Guy 16-9-94
# Paragrafo Contabilita'
[cg]
# Maschera edit
EdMask = cg5000a.msk
#codice azienda banca
CodCAB =
#codice dipendenza
CodABI =
# Somma imposte non detraibiili agli acquisti/importazioni in mod. IVA 11
Sind11 =
# Stampa intestazione su registri bollati
StiReg =
# Non stampa data registrazione su registi IVA
NoDtRg =
# Posizionamento cursore su data registrazione in immissione documenti
PoCuDr =
# Codice IVA per ricavi misti relativi ad agenzie di viaggio
CodAgv =
# Interessi liquid. trimestrali per i 4 trimestri
InTr(0) = 1.5
InTr(1) = 1.5
InTr(2) = 1.5
InTr(3) = 1.5
[EOF]