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 DLG_OGGETTI 304
#define F_DIRTY 305
#define F_BYMAIL 306
#define F_DOCMAIL 307
//////////////////////////////////////

View File

@ -45,7 +45,7 @@ BEGIN
FIELD CODCF
FLAGS "GR"
KEY 1
USE LF_CLIFO KEY 1
USE LF_CLIFO
INPUT TIPOCF F_TIPOCF SELECT
INPUT CODCF F_CODCF
DISPLAY "Codice@6R" CODCF
@ -412,7 +412,7 @@ BEGIN
GROUP 6
END
GROUPBOX DLG_NULL 76 8
GROUPBOX DLG_NULL 76 10
BEGIN
PROMPT 1 4 "Numeri telefonici"
END
@ -491,14 +491,29 @@ BEGIN
FIELD MAIL
END
GROUPBOX DLG_NULL 76 4
BOOLEAN F_BYMAIL
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
LIST F_TIPOAPER 1 15
BEGIN
PROMPT 2 13 "Tipo "
PROMPT 2 15 "Tipo "
FIELD TIPOAPER
FLAGS "D"
ITEM "F|Fisica"
@ -507,7 +522,7 @@ END
NUMBER F_CODANAGPER 5
BEGIN
PROMPT 61 13 "Codice "
PROMPT 59 15 "Codice "
FIELD CODANAGPER
FLAGS "R"
GROUP 4
@ -527,7 +542,7 @@ END
STRING F_RAGSOC1 50
BEGIN
PROMPT 2 14 "Ragione sociale "
PROMPT 2 16 "Ragione sociale "
GROUP 4
USE LF_ANAG KEY 2
INPUT TIPOA F_TIPOAPER SELECT
@ -539,12 +554,6 @@ BEGIN
ADD RUN ba4 -1 #F_TIPOAPER
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 1 16 "Dati di nascita"
GROUP 5
END
DATE F_DATANASC
BEGIN
PROMPT 2 17 "Data "

View File

@ -1236,7 +1236,21 @@ void TProgressivi_iva::setta_intestazione()
r++;
if (_livelloprog == 1)
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"));
}

View File

@ -305,6 +305,11 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
const long protiva = causale().reg().protocol() + 1;
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())
@ -741,9 +746,24 @@ void TPrimanota_application::init_insert_mode(TMask& m)
ini2mask(ini, m, false);
// Controllo se e' stato salvato il campo virtuale col codice IVA
const TString& codiva = ini.get("CODIVA", "23");
if (!codiva.empty())
m.set(F_CODIVA, codiva, 3);
if (m.id2pos(F_CODIVA) > 0)
{
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);
}
@ -952,6 +972,7 @@ int TPrimanota_application::read(TMask& m)
TBill c; c.get(r);
c.add_to(riga, 4, 0x7); // Conto 105-110
riga.add(r.get(RMI_NAVP));
}
calcola_imp(); // Calcola totale imponibile ed imposte
@ -961,7 +982,7 @@ int TPrimanota_application::read(TMask& m)
pags().reset(); // Azzera sheet rate
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
}
}
@ -1004,14 +1025,13 @@ void TPrimanota_application::mask2rel(const TMask& m)
_rel->destroy_rows(numreg); // Destroy all records
cgs_pack(); // Destroy all null rows
TArray& rows = cgs().rows_array();
// Controlla se e' un movimento con righe contabili
if (iva() == nessuna_iva || !m.get_bool(F_SOLAIVA))
{
TString_array& rows = cgs().rows_array();
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;
const TBill conto(row, 2, 0x3);
@ -1101,12 +1121,11 @@ void TPrimanota_application::mask2rel(const TMask& m)
const bool intra = causale().intra();
TArray& irows = ivas().rows_array();
ivas_pack();
TString_array& irows = ivas().rows_array();
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);
r.zero();
@ -1128,26 +1147,24 @@ void TPrimanota_application::mask2rel(const TMask& m)
r.put(RMI_IMPOSTA, imposta);
r.put(RMI_TIPOCR, row.get());
r.put("CODCMS", row.get(10));
r.put("FASCMS", row.get(11));
// Roba obsoleta allo stato brado
const TBill c(row, 6);
const int rimp = bill2pos(c, 'I')+1;
r.put(RMI_RIGAIMP, rimp);
c.put(r);
r.put(RMI_NAVP, row.get(10));
}
}
void TPrimanota_application::check_saldi()
{
const int anno = _rel->curr().get_int(MOV_ANNOES);
TString_array& rows = cgs().rows_array();
const int anno = _rel->curr().get_int("ANNOES");
for (int i = 0; i < rows.items(); i++)
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();
const char sez = conto.sezione();
if (sez > ' ')
@ -1839,7 +1856,7 @@ bool TPrimanota_application::link_cesp(const TMask& msk, const char* action)
if (!fexist("ce1.exe"))
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;
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 TBill zio(rec);
char tipo_cr = char('0' + zio.tipo_cr());
if (strchr("2348", tipo_cr))
if (strchr("234", tipo_cr))
break;
}
if (i < 0)

View File

@ -83,6 +83,18 @@
#define CG_ROWTYPE 115
#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
#define H_DATAREG 201
#define H_NUMREG 202
@ -156,4 +168,4 @@
#define K_ANNOES 415
#define K_DATACOMP 416
#endif
#endif

View File

@ -1986,7 +1986,7 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
provv << c.provvisorio();
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" : " ");
return true;
}
@ -3179,4 +3179,4 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
shiva.force_update();
}
return true;
}
}

View File

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

View File

@ -349,7 +349,7 @@ bool TPrimanota_application::aggiusta_prorata()
if (annodoc < 1900)
annodoc = _msk[2]->get_int(F_ANNOIVA);
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();
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);
CHECK(e.size() >= 15, "Campo troppo piccolo per contenere un importo");
TString80 str;
if (!imp.is_zero())
{
const TCurrency c(imp.valore());
TString80 str;
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
BEGIN
PROMPT -34 -1 "Elimina"
PICTURE BMP_DELREC
PICTURE BMP_DELRECDN
MESSAGE EXIT,K_DEL
END

View File

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

View File

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

View File

@ -11,6 +11,7 @@
#include <reputils.h>
#include <textset.h>
#include <validate.h>
#include <utility.h>
#include <anafis.h>
#include <anagr.h>
@ -112,15 +113,22 @@ TVariant TAllegato_info::get(const TString& field) const
} else
if (field == COM_DENCOM || field == COM_PROVCOM)
{
TString8 key;
key << get(CLI_STATOCF) << '|' << get(CLI_COMCF);
TToken_string key;
key << get(CLI_STATOCF);
const bool italy = key.blank() || key == "IT";
key << '|' << get(CLI_COMCF);
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 << cap2comune(get(CLI_CAPCF).as_string(), get(CLI_LOCCF).as_string());
var = cache().get(LF_COMUNI, key, field);
}
if (var.is_empty() && field == COM_PROVCOM)
{
if (!italy || key.get_char(1) == 'Z')
var = "EE";
}
}
else
{
@ -187,12 +195,7 @@ void TAllegato_info::key(TString& tmp) const
{
tmp = get(CLI_COFI).as_string();
if (tmp.blank())
{
if (occasionale())
tmp = _occas;
else
tmp = _codice;
}
tmp.cut(0) << _codice;
}
tmp.insert(_tipo == 'F' ? "F|" : "C|");
}
@ -273,7 +276,8 @@ class TPadoaSchioppa_set : public TAS400_recordset
void add_trc(int trc);
protected:
int primo_campo_libero();
int primo_campo_libero(); // Posizione primo campo libero per record 1 e 2
void init_trc(); // Constructor helper
public:
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);
TPadoaSchioppa_set();
TPadoaSchioppa_set(const TFilename& name);
};
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(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);
TFieldtypes ft = _alfafld;
@ -356,7 +360,7 @@ void TPadoaSchioppa_set::add_trc(int trc)
case 0: // Testata
case 9: // Coda
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, 9, 24, 16, "CodiceFiscale" , CF, 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
}
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()
{
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
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);
const int tiporec = atoi(rec_type());
@ -534,7 +528,7 @@ bool TPadoaSchioppa_set::set(int fldcode, const TString& val)
// Usata solo per 1001
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);
TString16 value;
value.format("%16ld", val);
@ -544,7 +538,7 @@ bool TPadoaSchioppa_set::set(int fldcode, long val)
// Usata dal 4001 in poi
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())
return true;
@ -554,6 +548,28 @@ bool TPadoaSchioppa_set::set(int fldcode, const TVariant& 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
///////////////////////////////////////////////////////////
@ -672,6 +688,27 @@ TAlleg_report::TAlleg_report(TRecordset* rs, const TMask& am, bool hide_not_alle
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
///////////////////////////////////////////////////////////
@ -680,7 +717,6 @@ class TAlleg_mask : public TAutomask
{
TCodiva_cache _codiva;
TCausali_cache _causali;
bool _red_alert;
protected: // TAutomask
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;
int imp_iva(char tipocf, bool non_esposti, const TRecordset& riga, real& imp, real& iva);
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);
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,
TLog_report& errlog, int severity = 2);
TAlleg_log& errlog, int severity = 2);
void copia_importo(const TRecordset& clifo, const char* fldname,
TPadoaSchioppa_set& pss, int fldcode) const;
void add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log);
void add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TLog_report& log);
protected: // Generazione
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);
bool show_errors(TAlleg_log& log) const;
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:
TAlleg_mask();
~TAlleg_mask();
@ -754,7 +799,8 @@ int TAlleg_mask::imp_iva(char tipocf, bool non_esposti, const TRecordset& riga,
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
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 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");
righe_iva.set_var("#NR", mov.get(MOV_NUMREG));
real imponibile, imposta, indecifrabile;
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);
switch (allegato)
{
case 1: allimp._imp += imponibile;
allimp._iva += imposta;
break;
case 1: allimp._imp += imponibile; allimp._iva += imposta; break;
case 2: allimp._impNI += imponibile; break;
case 3: allimp._impES += imponibile; break;
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
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:
// SELECT * FROM MOV
@ -853,7 +898,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
// ORDER BY TIPO,CODCF;
TString query = "USE MOV KEY 3"; // La chiave 3 e' TIPO+CODCF+DATAREG+NUMREG
query << "\nSELECT ";
if (algo_dick)
if (ministeriale)
query << "(ANNOIVA>=#ANNO)"; // Seleziona dall'anno desiderato in poi
else
query << "(ANNOIVA==#ANNO)"; // Seleziona solo l'anno desiderato
@ -895,7 +940,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
continue;
// Controllo inutilmente anche il tipo documento
const TString& tipodoc = caus.tipo_doc();
const TString& tipodoc = caus.tipodoc();
if (documento_corrispettivi(tipodoc))
continue;
@ -909,8 +954,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
if (keep)
keep = (tipocf == 'C') ^ (tipoiva == iva_acquisti); // compatibile
// Cavolata interpretativa tipicamente italiana
if (keep && algo_dick)
if (keep && ministeriale)
{
const int annodoc = mov.get(MOV_DATADOC).as_date().year();
const bool is_nota = (tipodoc=="NC") || (tipodoc=="ND");
@ -920,7 +964,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio)
if (!keep)
continue;
scan_iva_rows(mov, clifi, invio);
scan_iva_rows(mov, clifi, invio, ministeriale);
}
TAllegati_set* hullygully = new TAllegati_set;
@ -945,7 +989,7 @@ const TRectype& TAlleg_mask::contribuente() const
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);
@ -960,7 +1004,7 @@ void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log)
else
{
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);
@ -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("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
pss.set("CodiceSoggettoObbligato", get(F_SOGG));
// Dati dell'intermediario che si cucca 50 Euro senza fare una mazza!
const TString& inter = get(F_INTR);
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,
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,
TLog_report& errlog, int severity)
TAlleg_log& errlog, int severity)
{
TString str;
str << ragsoc << " - " << msg1;
if (msg2 && *msg2)
str << " : " << msg2;
errlog.log(severity, str);
if (severity > 0)
_red_alert = true;
}
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;
str << clifo.get("#RECORD.NUMBER") << ". "
<< clifo.get(CLI_TIPOCF) << clifo.get(CLI_CODCF)
<< ' ' << clifo.get(CLI_RAGSOC);
str.strip_double_spaces();
str.strip_d_spaces();
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 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
{
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)
@ -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()
{
_red_alert = false;
TLog_report log(TR("Errori riscontrati"));
TReport_book book;
TPadoaSchioppa_set pss;
TAlleg_log log;
add_0_9(0, pss, log); // Testa
TRecordset* cli = new_recordset('C', true);
if (cli != NULL)
if (cli != NULL && cli->items())
{
log.log(0, TR("CLIENTI"));
add_1_2(1, *cli, pss, log); // Clienti
TAlleg_report rep(cli, *this, true);
book.add(rep);
}
TRecordset* ven = new_recordset('F', true);
if (ven != NULL)
TRecordset* acq = new_recordset('F', true);
if (acq != NULL && acq->items() > 0)
{
log.log(0, TR("FORNITORI"));
add_1_2(2, *ven, pss, log); // Fornitori
TAlleg_report rep(ven, *this, true);
book.add(rep);
add_1_2(2, *acq, pss, log); // Fornitori
}
add_3(pss); // Totali Clienti e Fornitori
@ -1241,25 +1313,261 @@ void TAlleg_mask::generazione()
add_0_9(9, pss, log); // Piede (= Testa)
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?")))
{
TReport_book errbuc;
errbuc.add(log);
errbuc.preview();
}
go_on = yesno_box("Si desidera generare ugualmente la fornitura?");
TFilename fname;
if (build_output_name(fname))
pss.save_as(fname);
TReport_book book;
TAlleg_report clirep(cli, *this, true);
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)
{
TFilename fname = get(F_DIR);
fname.add(get(F_NAME));
TFilename fname;
if (build_output_name(fname))
pss.save_as(fname);
TReport_book book;
TAlleg_report rep(all, *this, true);
book.add(rep);
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)
@ -1381,10 +1689,47 @@ bool TAlleg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
if (e == fe_button)
{
if (check_fields())
{
if (curr_page() == 0)
generazione();
else
fusione();
}
return false;
}
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:
break;
}

View File

@ -13,3 +13,7 @@
#define F_COMP 113
#define F_DATA 114
#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>
</field>
<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>
</field>
<field x="63" y="6" type="Testo" width="27" pattern="1" text="Data impegno alla trasmissione" />
@ -151,7 +151,7 @@
<source>P_NE</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,#F1.206</prescript>
</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>
</field>
<field x="6" y="2" type="Stringa" width="50" pattern="1">

View File

@ -49,16 +49,18 @@ BEGIN
PROMPT 1 4 "@bFornitura"
END
STRING F_DIR 128 50
STRING F_DIR 256 64
BEGIN
PROMPT 2 5 "Cartella "
CHECKTYPE REQUIRED
MESSAGE COPY,F_DIR2
END
STRING F_NAME 50
STRING F_NAME 64
BEGIN
PROMPT 2 6 "File "
CHECKTYPE REQUIRED
MESSAGE COPY,F_NAME2
END
GROUPBOX DLG_NULL 78 4
@ -119,7 +121,7 @@ END
DATE F_DATA
BEGIN
PROMPT 2 15 "Data dell'impegno alla trasmimssione "
PROMPT 2 15 "Data dell'impegno alla trasmissione "
VALIDATE REQIF_FUNC 1 F_INTR
WARNING "Data obbligatoria in presenza di un intermediario"
FIELD IMPEGNO
@ -177,4 +179,59 @@ END
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

View File

@ -5,9 +5,11 @@
// ------------------------------------------------------------
#include <currency.h>
#include <recarray.h>
#include <utility.h>
#include "cg4300.h"
#include <attiv.h>
// flags per annuale
#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->_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->_s4 = _freqviva;
@ -1804,7 +1814,7 @@ void TLiquidazione_app::set_plm(_DescrItem& d)
}
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));
}
if (! (d._r9.is_zero() && d._r10.is_zero()))

View File

@ -2496,11 +2496,27 @@ void TStampa_registri_app::preprocess_header()
if (_intesta_liq)
set_header(r, FR("Registro IVA: %s %s %s"), (const char*)_codreg,
(const char*)_desc_lib, (const char*) data);
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
{
if (_annoes > 2007)
{
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
{
@ -3694,8 +3710,19 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
row.put(codreg, 14);
row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18);
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);
}
else

View File

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

View File

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

View File

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

View File

@ -632,7 +632,7 @@ bool TVar_mov::setta_campi_maschera_iva(TMask& m)
regiva.trim();
TString codcaus = _rec_mov->get (MOV_CODCAUS);
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);
/*****************************************************

View File

@ -102,12 +102,12 @@ void TInv_cont::main_loop()
long ditta = msk->get_long(F_DITTAINV);
set_firm(ditta);
TConfig conf(CONFIG_DITTA);
TString std = conf.get("FlStInv");
TConfig conf(CONFIG_DITTA, "cg");
const TString& std = conf.get("FlStInv");
if (_scelta == 'S' && std != "D")
{
TString appname = "cg6 -8 L";
const char* const appname = "cg6 -8 L";
TString corpo = "";
TDate data = msk->get(F_DATALIM);
@ -182,9 +182,8 @@ void TInv_cont::main_loop()
{
// aggiorna_marker(str,23);
_trasf = "";
_trasf = firm2dir(0);
_trasf << "\\trasfer";
_trasf.add("trasfer");
::remove(_trasf);
_tras_file.open(_trasf,TRUE);
@ -573,11 +572,11 @@ bool TInv_cont::esiste_tabella_studio()
return TRUE;
}
bool TInv_cont::leggi_header()
{
_header = "";
_header = firm2dir(0);
_header << HEADER;
_header.add(HEADER);
_tras_file.open(_header);
@ -729,7 +728,7 @@ bool TInv_cont::controlla_stato_invio()
{
set_firm(_ditta);
TConfig conf(CONFIG_DITTA);
TConfig conf(CONFIG_DITTA, "cg");
_std = conf.get("FlStInv");
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;
TDate datareg;
bool inviva;
bool provvis;
int size = 1024;
const int size = 1024;
TString16 ocfpi;
TDate datareg;
bool inviva;
bool provvis;
_tras_file.open(_header);
long items = _rmoviva->items();
_prog = new TProgind(items,"Invio movimenti Iva in corso... Prego attendere.",FALSE);
const long items = _rmoviva->items();
_prog = new TProgind(items, TR("Invio movimenti Iva"), FALSE);
_rmoviva->setkey(1);
@ -1566,7 +1566,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
_rmoviva->first();
else
{
long numreg = atol(key.mid(0,7));
const long numreg = atol(key.mid(0,7));
_rmoviva->zero();
_rmoviva->put(RMI_NUMREG, numreg);
_rmoviva->put(RMI_NUMRIG, 1);
@ -1595,7 +1595,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
}
}
else
inviva = FALSE;
inviva = false;
// Controlla data limite invio
if ( inviva || datareg > _datalimsk )
@ -1625,10 +1625,8 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m)
}
leggi_record_controllo();
TString chiave;
chiave.format("%07ld", nreg);
TString sigla("U");
_control_rec.overwrite(sigla,240);
TString8 chiave; chiave.format("%07ld", nreg);
_control_rec.overwrite("U",240); // Sigla
_control_rec.overwrite(chiave,241);
_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.
leggi_record_controllo();
TString chiave,app,sigla;
app.format("%-60s", (const char*) chiave);
char sigla_p = _tras_file.ult_file()[0];
int posiz = _files.find(sigla_p);
TString nuova_sigla = " ";
const char sigla_p = _tras_file.ult_file()[0];
const int posiz = _files.find(sigla_p);
TString4 nuova_sigla = " ";
if (posiz < _files.len())
nuova_sigla = _files.mid(posiz+1,1);
_control_rec.overwrite(nuova_sigla,240);
TString80 app; app.spaces(60);
_control_rec.overwrite(app,241);
_tras_file.write_control_rec(_control_rec,size);
_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,
int anno,TString& numpart,int nriga)
int anno,const TString& numpart,int nriga)
{
_part->setkey(1);
_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)
{
int size = 1024;
const int size = 1024;
_tras_file.open(_header);
long items = _part->items();
_prog = new TProgind(items,"Invio movimenti di Saldaconto in corso... Prego attendere.",FALSE);
const long items = _part->items();
_prog = new TProgind(items, TR("Invio movimenti di Saldaconto."), FALSE);
_part->setkey(1);
@ -1703,7 +1703,7 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m)
int conto = atoi(key.mid(4,3));
long sottoc = atol(key.mid(7,6));
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));
_part->zero();
_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);
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);
TString sigla("B");
_control_rec.overwrite(sigla,240);
_control_rec.overwrite("B",240); // Sigla
_control_rec.overwrite(chiave,241);
_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,
int anno,TString& numpart,int nriga)
int anno,const TString& numpart,int nriga)
{
_scad->zero();
_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_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())
{
TString rec = scad.get(SCAD_NUMPART);
TString file = _scad->get(SCAD_NUMPART);
if (_scad->curr() != scad || file != rec) break;
const TString& numpart_file = _scad->get(SCAD_NUMPART);
if (_scad->curr() != scad || numpart_file != numpart_rec)
break;
_tscad->curr() = _scad->curr();
if (_tscad->read() == NOERR)
{
_tscad->zero();
_tscad->curr() = _scad->curr();
_tscad->rewrite();
}
else
{
_tscad->zero();
_tscad->curr() = _scad->curr();
_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[])
{
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);
delete main_app;
}
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);
delete main_app;
}
break;
case 'L':
case 'L':
{
TLista_archivi* a = new TLista_archivi;
a->run(argc, argv,"Lista controllo archivi");
a->run(argc, argv, TR("Lista controllo archivi"));
delete a;
}
break;
case 'R':
case 'R':
{
TRip_flag* a = new TRip_flag;
a->run(argc, argv,"Ripristino flag movimenti");
a->run(argc, argv,TR("Ripristino flag movimenti"));
delete a;
}
break;
case 'C':
case 'C':
{
TCanc_file_invio a;
a.run(argc, argv,"Eliminazione file invio");
a.run(argc, argv,TR("Eliminazione file invio"));
}
break;
default:
default:
break;
}

View File

@ -41,7 +41,8 @@ class TInv_cont : public TSkeleton_application
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 _ocfpi, _ragsococc, _indocc, _capocc, _localocc, _provocc, _codvali, _codval;
bool _esiste_ditta, _esiste_record, _inviato, _flag_provvis, _flag_bollato;
@ -102,18 +103,18 @@ public:
void scrivi_righePN(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);
void iva_inviata(long numreg);
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 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);
void aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TString& npart, int nrata);
int ultima_rata_partita(char tipo,int g,int c,long s,int anno,TString& npart);
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,const TString& npart);
void partita2trasfer(TString& record, bool crea_record_riferimento = TRUE);
void pagsca2trasfer (TString& record, real& importo, real& importoval);
long crea_record_riferimento_PN();

View File

@ -1186,7 +1186,8 @@ bool TInv_cont::testata_mov_IVA(long numreg)
_tmov->setkey(1);
_tmov->zero();
_tmov->put(MOV_NUMREG, numreg);
if (_tmov->read() == NOERR)
const bool ok = _tmov->read() == NOERR;
if (ok)
{
_codcf = _tmov->get_long(MOV_CODCF);
_data74ter = _tmov->get_date(MOV_DATA74TER);
@ -1194,18 +1195,15 @@ bool TInv_cont::testata_mov_IVA(long numreg)
_codvali = _tmov->get (MOV_CODVALI);
_cambioi = _tmov->get_real(MOV_CAMBIOI);
_corrval = _tmov->get_real(MOV_CORRVALUTA);
_ocfpi = _tmov->get (MOV_OCFPI);
_dataregiva = _tmov->get_date(MOV_DATAREG);
_inviato = _tmov->get_bool(MOV_INVIVA);
_tipodoc = _tmov->get (MOV_TIPODOC);
_provvis = _tmov->get_char(MOV_PROVVIS);
if (_ocfpi.not_empty())
_ocfpi = _tmov->get (MOV_OCFPI);
if (_ocfpi.full())
cerca_occasionale();
}
else
return FALSE;
return TRUE;
return ok;
}
void TInv_cont::cerca_occasionale()
@ -1233,6 +1231,7 @@ void TInv_cont::cerca_occasionale()
void TInv_cont::cerca_comune_occas(const TString& com)
{
/*
TLocalisamfile comuni (LF_COMUNI);
comuni.setkey(1);
@ -1243,30 +1242,34 @@ void TInv_cont::cerca_comune_occas(const TString& com)
_localocc = comuni.get(COM_DENCOM);
_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
bool TInv_cont::invio_mov_IVA()
{
const int size = 256;
TString record(size);
// TString256 record(size);
TString256 record;
long nreg_p;
int numero_righe = 0;
nreg_p = -1;
long cicli = _triva->items();
_prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per Sistema\nPrego attendere.",FALSE);
const long cicli = _triva->items();
_prog = new TProgind(cicli,TR("Movimenti Iva: generazione file TRASFER per Sistema\nPrego attendere."),FALSE);
_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);
int nrig = _triva->get_int (RMI_NUMRIG);
@ -1363,17 +1366,16 @@ bool TInv_cont::invio_mov_IVA()
str.format("%-.2s", (const char*) _provocc);
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);
record.overwrite(str,133); //Tipo attivita'
bool intra = _triva->get_bool(RMI_INTRA);
if (intra)
record.overwrite("X",134);
else
record.overwrite(" ",134); //Flag causale x acquisti intracomunitari
const bool intra = _triva->get_bool(RMI_INTRA);
record.overwrite(intra ? "X" : " ",134); //Flag causale x acquisti intracomunitari
/*
TString corrlire = _corrlire.string();
@ -1388,24 +1390,27 @@ bool TInv_cont::invio_mov_IVA()
/* Cambio intra con 5 decimali */
dec2integer(_cambioi,100000L);
TString cambioi = _cambioi.string();
TString16 cambioi = _cambioi.string();
if (_cambioi.sign() < 0)
negPC2negAS(cambioi);
str.format("%011s", (const char*) cambioi);
record.overwrite(str,149); //Cambio
dec2integer(_corrval,1000);
TString corrval = _corrval.string();
TString16 corrval = _corrval.string();
if (_corrval.sign() < 0)
negPC2negAS(corrval);
str.format("%014s", (const char*) corrval);
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->put(MOV_NUMREG, nreg);
if (_tmov->read() == NOERR)
{
int meseliq = _tmov->get_int(MOV_MESELIQ);
const int meseliq = _tmov->get_int(MOV_MESELIQ);
if (meseliq > 0)
{
str.format("%02d", meseliq);
@ -1430,11 +1435,11 @@ int TInv_cont::nprogre_interno(long numreg, int numrig)
{
int riga = 1;
TString key (format("%06ld%02d", numreg, numrig));
TString8 key; key.format("%06ld%02d", numreg, numrig);
if (!_riga_interna.is_key(key))
{
TString nr (format("%d", riga));
TString8 nr; nr.format("%d", riga);
_riga_interna.add(key,nr);
}
else
@ -1449,9 +1454,9 @@ int TInv_cont::nprogre_interno(long numreg, int numrig)
long TInv_cont::crea_record_riferimento_PN()
{
int size = 256;
TString record(size);
TString str;
const int size = 256;
TString256 record;
TString8 str;
_ultima_nreg++;
@ -1465,7 +1470,7 @@ long TInv_cont::crea_record_riferimento_PN()
str.format("%02d", 1);
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.format("%06s", (const char*) str);
record.overwrite(str,15); //Data di registrazione
@ -1502,7 +1507,7 @@ long TInv_cont::crea_record_riferimento_PN()
str.format("%c", tipocf);
record.overwrite(str,219); //Flag Cliente / Fornitore
TString codcaus (_tpart->get(PART_CODCAUS));
TString4 codcaus (_tpart->get(PART_CODCAUS));
if (tipocf != ' ' && codcaus.empty())
codcaus = (TString&)_tab_cau[_tpart->get_int(PART_TIPOMOV)-1]; // Causale
str.format("%03s",(const char*)codcaus);
@ -1702,7 +1707,8 @@ void TInv_cont::partita2trasfer(TString& record, bool crea_record_riferimento)
_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));
@ -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;
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))
{
TString nr (format("%2d", rata));
TString4 nr; nr.format("%2d", rata);
_ultima_rata.add(key,nr);
}
else

View File

@ -51,7 +51,7 @@ void TRip_flag::main_loop()
if (rippn || ripiva)
{
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->zero();

View File

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

View File

@ -256,26 +256,31 @@ const TString& cap2comune(const TString& cap, const TString& denom)
if (cappone[2] == '1') //e' un capoluogo di provincia
cappone.overwrite("00", 3, 2);
TString80 up_denom = denom;
up_denom.upper();
TRelation relcom(LF_COMUNI);
TRectype& comrec = relcom.curr();
comrec.put(COM_CAPCOM, cappone);
comrec.put(COM_CAPCOM, cappone);
TString4 codone;
TCursor comuni (&relcom, "", 3, &comrec, &comrec);
const TRecnotype items = comuni.items();
comuni.freeze();
TString4 codone;
double cmp = 0.69;
for (comuni = 0L; comuni.pos() < items; ++comuni)
{
const TString& denominazione = comrec.get(COM_DENCOM);
const double fc = xvt_str_fuzzy_compare (denom, denominazione);
TString80 denominazione = comrec.get(COM_DENCOM);
denominazione.upper();
const double fc = xvt_str_fuzzy_compare (up_denom, denominazione);
if (fc > cmp)
{
codone = comrec.get(COM_COM);
cmp = fc;
}
}
}
if (codone.full())
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)
{
TString16 k; k.format("%04d%02d",anno,mese);
TString8 k; k.format("%04d%02d",anno,mese);
zero();put("CODTAB",k);
if (TTable::read(_isgteq) == NOERR)
{
@ -214,10 +214,13 @@ bool TRigaiva_array::add_riga(const TRectype& iva)
{
const int dec = TCurrency::get_firm_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 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_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);
if (r._codiva==codiva)
{
found = TRUE;
found = true;
r._imponibile += imponibile;
r._imposta += imposta;
r._implordo += implordo;
r._imponibilep += imponibilep;
r._impostap += impostap;
r._implordop += implordop;
break;
}
}
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 found = FALSE;
bool found = false;
for (int i = 0; i < items(); i++)
{
TDociva& r = riga(i);
if (r._descrdoc==_descrdociva)
{
found = TRUE;
found = true;
if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4))
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 found = FALSE;
bool found = false;
for (int i = 0; i < items(); i++)
{
TTipodoc& r = (TTipodoc&)(*this)[i];
if (r._tipodoc==tipodoc)
{
found = TRUE;
found = true;
r._totdoc += totdoc;
}
}

View File

@ -7,7 +7,6 @@
#include <diction.h>
#include <extcdecl.h>
#include <progind.h>
#include <relation.h>
#include <scanner.h>
#include <tabutil.h>
#include <utility.h>
@ -295,7 +294,7 @@ TRic_recfield::operator const char*() const
// Ritorna il record di controllo del trasfer
const char* TTransfer_file::record() const
{
return (const char*)*_control_rec;
return *_control_rec;
}
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);
_nrec_file = _control_rec_t.sub(47,101);
TString ult_file = _control_rec_t.sub(240,241);
TString key = _control_rec_t.sub(241,256);
_ult_file = ult_file.trim();
_key = key.trim();
_ult_file = _control_rec_t.sub(240,241);
_ult_file = _ult_file.trim();
_key = _control_rec_t.sub(241,256);
_key = _key.trim();
fill_index(_sigle_file,_nrec_file);
}
else
@ -591,14 +590,14 @@ long TTransfer_file::start(int i)
return 1;
else
{
TToken_string data = (TToken_string&)_index[i-1];
TToken_string& data = (TToken_string&)_index[i-1];
return data.get_long(1) + 1;
}
}
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);
}
@ -608,7 +607,7 @@ long TTransfer_file::rec(int i)
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;
}
@ -618,11 +617,9 @@ long TTransfer_file::rec(int i)
int TTransfer_file::num(char sigla)
{
const int items = _index.items();
TString16 dep;
for (int i = 0; i < items; i++)
{
dep = name(i);
const char* dep = name(i);
if ( dep[0] == sigla)
return i;
}
@ -655,13 +652,12 @@ void TTransfer_file::readat(long recnum)
pos = end(i-1) + 1;
offset = recnum - nrec(i-1);
pos += offset * lenrec(i);
break;
}
else
{
pos = recnum * lenrec(i);
break;
}
break;
}
}
_curpos = recnum;
@ -676,54 +672,37 @@ int TTransfer_file::read_rec_trasfer(long numrec, int size)
return letti;
}
char TTransfer_file::flg_agg(char sigla)
char TTransfer_file::flg_agg(char sigla) const
{
char flag;
if (sigla == 'W')
flag = _control_rec->sub(235,236)[0];
if (sigla == 'A')
flag = _control_rec->sub(236,237)[0];
if (sigla == 'P')
flag = _control_rec->sub(237,238)[0];
switch (sigla)
{
case 'W': flag = (*_control_rec)[235]; break;
case 'A': flag = (*_control_rec)[236]; break;
case 'P': flag = (*_control_rec)[237]; break;
default : flag = ' '; break;
}
return flag;
}
bool TTransfer_file::numprot_att()
bool TTransfer_file::numprot_att() const
{
char flag;
flag = _control_rec->sub(238,239)[0];
if (flag == 'X')
return true;
else
return false;
return true;
char flag = (*_control_rec)[238];
return flag == 'X';
}
bool TTransfer_file::numprot_pas()
bool TTransfer_file::numprot_pas() const
{
char flag;
flag = _control_rec->sub(239,240)[0];
if (flag == 'X')
return true;
else
return false;
return true;
char flag = (*_control_rec)[239];
return flag == 'X';
}
char TTransfer_file::flg_agg_IV(char sigla)
char TTransfer_file::flg_agg_IV(char sigla) const
{
char flag = ' ';
if (sigla == 'P')
flag = _control_rec->sub(234,235)[0];
flag = (*_control_rec)[234];
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)
{
TString256 key;
int pos_campo = 0;
if (nrec < 0)
readat(_curpos); // Mi posiziono all' inizio del record
else
readat(nrec);
TString16 key;
if (!file)
key.format("%2s%d",(const char*)_curfile,fieldnum);
else
key.format("%2s%d", file, fieldnum);
int pos_campo = 0;
if (_trc.is_key((const char *) key))
if (_trc.is_key(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();
}
void TTransfer_file::write_tmp_movIVA(TString& record)
void TTransfer_file::write_tmp_movIVA(const TString& record)
{
TString key,str;
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).
const TMappa_trc& trc = mappa();
const TMappa_trc& trc = mappa();
TIsamtempfile* file = NULL;
TRectype* dep = NULL;
int logicnum;
@ -1831,9 +1810,9 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
const TString4 sigla = record.mid(0,2);
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;
@ -1882,21 +1861,21 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
logicnum_p = logicnum;
int from = trc.from(key);
int to = trc.to(key);
TString16 fname = trc.field_name(key);
const int from = trc.from(key);
const int to = trc.to(key);
const TString16 fname = trc.field_name(key);
TString80 field = record.sub(from-1,to);
int flag = trc.flag(key);
int dec = trc.flag_bis(key);
if (logicnum == LF_MOV && fname == "TOTDOC")
if (logicnum == LF_MOV && fname == MOV_TOTDOC)
{
numfield++;
key.format("%2s%d", (const char*) sigla,numfield);
continue;
}
TRecfield campo (*dep,fname);
const TRecfield campo(*dep, fname);
if (campo.type() == _realfld)
{
negativo(field);
@ -1919,19 +1898,19 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
if (logicnum == LF_RMOVIVA)
{
if (fname == "NUMRIG")
if (fname == RMI_NUMRIG)
{
int nriga = atoi(field);
const int nriga = atoi(field);
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("OCFPI", cfpi);
dep->put(MOV_NUMREG, _numreg);
dep->put(MOV_OCFPI, cfpi);
}
if (flag == 2)
@ -1941,7 +1920,7 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
}
}
else
if (logicnum == LF_RMOVIVA && fname == "NUMREG")
if (logicnum == LF_RMOVIVA && fname == RMI_NUMREG)
{
int annoes = cerca_annoes(_numreg,tipodoc);
dep->put("ANNOES", annoes);
@ -1951,9 +1930,9 @@ void TTransfer_file::write_tmp_movIVA(TString& record)
dep->put(fname, field);
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);
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;
const char* const rflag = "rb";
const char* wflag = "ab";
const char* const wflag = "ab";
TLocalisamfile tabella(LF_TAB);
@ -3187,11 +3166,11 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
if ( (pos = sigle.find('Z')) >= 0)
{
_tmpmov = "%";
_tmpmov << path();
_tmpmov << SLASH << TEMP_MOV;
_tmpmov << path();
_tmpmov.add(TEMP_MOV);
_tmprmov = "%";
_tmprmov << path();
_tmprmov << SLASH << TEMP_RMOV;
_tmprmov.add(TEMP_RMOV);
nrec_mov = atol(nrec.mid(pos*6,6));
}
if ( (pos = sigle.find('U')) >= 0)
@ -3483,24 +3462,21 @@ void TTransfer_file::scrivi_PN(long nrec)
void TTransfer_file::scrivi_IVA(long nrec)
{
TString buffer(sizeT);
TString16 trec;
TString buffer(sizeT);
_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->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;
buffer = (const char*) recf;
buffer = (const char*)recf;
write_tmp_movIVA(buffer);
}
delete _prog;
@ -3523,12 +3499,10 @@ void TTransfer_file::scrivi_SC(long nrec)
_ttab->put("CODTAB", "B1");
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;
buffer = (const char*) recf;
write_tmp_movSC(buffer);
}
delete _prog;
@ -3563,7 +3537,6 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
const word size = 1024;
TString buffer(size);
TString16 trec;
if (sigle.find('W') >= 0)
{
@ -3666,9 +3639,9 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
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
{ // header.
@ -3679,7 +3652,7 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
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.format("%-7s", (const char*) app); // del numero di riferimento partita che per i file
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);
}
else
if (fname == OCC_CFPI)
{
_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)
{
TString16 key;
int numfield = 1;
const TMappa_trc& trc = mappa();
int numfield = 1;
real importo = ZERO;
int gruppo = 0;
const TString4 sigla = record.mid(0,2);
TString16 key;
key.format("%2s%d", (const char*)sigla,numfield);
_deprmov->zero();
@ -4630,18 +4606,14 @@ void TTransfer_file::write_righe_IVA(TString& record)
key.format("%2s%d", (const char*) sigla,numfield);
}
_triva->zero();
_triva->curr() = *_depriva;
_triva->curr() = *_depriva;
if (_triva->read() == NOERR)
{
_triva->zero();
_triva->curr() = *_depriva;
_triva->rewrite();
}
else
{
_triva->zero();
_triva->curr() = *_depriva;
_triva->write();
}

View File

@ -146,9 +146,6 @@ class TTransfer_file
TRectype* _deprmov;
TRectype* _depriva;
TRectype* _depoccas;
//TRectype* _deppart;
//TRectype* _depscad;
//TRectype* _deppagsca;
TExtrectype* _deppart;
TExtrectype* _depscad;
TExtrectype* _deppagsca;
@ -160,10 +157,10 @@ class TTransfer_file
long _numreg, _numreg_p, _numreg_piva, _npoccas;
long _nregSC, _nregSC_p;
int _numrigSC, _numrigSC_p, _annoSC, _annoSC_p, _nrigaSC;
TString _numpartSC, _numpartSC_p;
TString8 _numpartSC, _numpartSC_p;
int _annoes;
TDate _datareg;
TString _cod_com;
TString4 _cod_com;
long _curpos;
long _tot_rec; // Numero totale di record nel transfer
@ -171,7 +168,7 @@ class TTransfer_file
int _last_tab,_last_mov;
long _ditta;
TString16 _tiporec;
TString4 _tiporec;
TString16 _nome_simb;
TString16 _dataultras;
TString16 _sigle_file;
@ -206,7 +203,7 @@ private:
int trasfer_data_tab(TIsamtempfile& file, TRectype& dep);
void write_tmp_movPN(TString& record);
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);
// Funzioni per la ricezione del Saldaconto da Sistema
void write_tmp_movSC(TString& record);
@ -288,7 +285,7 @@ public:
// 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 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
long ditta () const { return _ditta; } // Ritorna la ditta inviante
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* sigle_file() const { return (const char*) _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
char flg_agg(char sigla); // Ritorna i flag tipo aggiornamento relativi alle tabelle
bool numprot_att(); // Ritorna il flag riattribuzione numero protocollo su fatture attive
bool numprot_pas(); // Ritorna il flag riattribuzione numero protocollo su fatture passive
char flg_agg_IV(char sigla); // Ritorna il flag tipo aggiornamento classi piano dei conti
const char* dataultras() const { return _dataultras; } // Ritorna la data ultimo trasferimento
const char* sigle_file() const { return _sigle_file; } // Ritorna una stringa contenente le sigle 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) const; // Ritorna i flag tipo aggiornamento relativi alle tabelle
bool numprot_att() const; // Ritorna il flag riattribuzione numero protocollo su fatture attive
bool numprot_pas() const; // Ritorna il flag riattribuzione numero protocollo su fatture passive
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* key () const { return (const char*) _key; } // Ritorna la chiave ultimo record elaborato
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 <recarray.h>
#include <tabutil.h>
#include "cgpagame.h"
#include "cg2100.h"
#include <cfven.h>
@ -18,27 +20,30 @@
inline void swap(int& x, int& y) {int tmp = x; x = y; y = tmp; }
int TPagamento::_rata_ifield(int n, int f) const
{
TToken_string& t = (TToken_string&)_rate[n];
return t.get_int(f);
{
int v = 0;
_rate.row(n).get(f, v);
return v;
}
long TPagamento::_rata_lfield(int n, int f) const
{
TToken_string& t = (TToken_string&)_rate[n];
return t.get_long(f);
long v = 0;
_rate.row(n).get(f, v);
return v;
}
real TPagamento::_rata_rfield(int n, int f) const
{
TToken_string& t = (TToken_string&)_rate[n];
return real(t.get(f));
real v;
_rate.row(n).get(f, v);
return v;
}
TDate TPagamento::_rata_dfield(int n, int f) const
{
TToken_string& t = (TToken_string&)_rate[n];
return TDate(t.get(f));
const TDate v = _rata_sfield(n, f);
return v;
}
/* 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)
{
_def_tpr = type;
if (change_existing)
{
for (int i = 0; i < n_rate(); i++)
{
TToken_string& tt = rata(i);
tt.add(type, 2);
}
_dirty = true;
}
_def_tpr = type;
if (change_existing)
{
for (int i = 0; i < n_rate(); i++)
{
TToken_string& tt = rata(i);
tt.add(type, 2);
}
_dirty = true;
}
}
void TPagamento::set_default_ulc(const char* ulc, bool change_existing)
{
_def_ulc = ulc;
if (change_existing)
{
for (int i = 0; i < n_rate(); i++)
{
TToken_string& tt = rata(i);
tt.add(ulc, 5);
}
_dirty = true;
}
_def_ulc = ulc;
if (change_existing)
{
for (int i = 0; i < n_rate(); i++)
{
TToken_string& tt = rata(i);
tt.add(ulc, 5);
}
_dirty = true;
}
}
void TPagamento::remove_rata(int i)
@ -827,31 +832,22 @@ const char* TPagamento::desc_tipo(int tipo, char ulc, bool* ok) const
if (ulc > ' ')
{
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");
}
if (*o == '\0')
{
switch (tipo)
{
case 0: o = "Altro pagamento"; break;
case 1: o = "Rimessa diretta o contanti"; break;
case 2: o = "Tratta"; break;
case 3: o = "Ricevuta Bancaria"; break;
case 4: o = "Cessione"; break;
case 5: o = "Paghero'"; break;
case 6: o = "Lettera di credito"; break;
case 7: o = "Tratta accettata"; break;
case 8: o = "Rapporti interban. diretti"; break;
case 9: o = "Bonifici"; break;
case 0: o = TR("Altro pagamento"); break;
case 1: o = TR("Rimessa diretta o contanti"); break;
case 2: o = TR("Tratta"); break;
case 3: o = TR("Ricevuta Bancaria"); break;
case 4: o = TR("Cessione"); break;
case 5: o = TR("Paghero'"); break;
case 6: o = TR("Lettera di credito"); break;
case 7: o = TR("Tratta accettata"); break;
case 8: o = TR("Rapporti interban. diretti"); break;
case 9: o = TR("Bonifici"); 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|21|50|55|25|SOTTOCONTO|||
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|51|249|249|23||||
U1|52|109|126|||||
U1|53|127|131|||||
U1|54|132|133|||||
U1|56|87|108|||||
U1|57|175|176|23|MESELIQ|||
U1|58|177|192|23|OCFPI|||
#
# 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|16|119|138|25|CODCMS|||
U1|17|139|148|25|FASCMS|||
U1|18|149|149|25|NOTAVARECF|||
B1|1|3|3|28|TIPOC|||
B1|2|4|6|28|GRUPPO|||
B1|3|7|9|28|CONTO|||

View File

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

View File

@ -1,5 +1,6 @@
20
54
56
TIPOCF|1|1|0|Tipo ( <C>liente <F>ornitore
CODCF|3|6|0|Codice
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
PTELEX|1|10|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
STATONASC|2|3|0|Codice stato di nascita
COMNASC|1|4|0|Codice comune di nascita

View File

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