Corretta gestione valuta in prima nota e gestione dare/avere nelle causali
git-svn-id: svn://10.65.10.50/trunk@546 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d87826888b
commit
ab9480626f
662
cg/cg0500.cpp
662
cg/cg0500.cpp
@ -7,147 +7,19 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
|
||||||
#include <clifo.h>
|
|
||||||
#include <pconti.h>
|
|
||||||
#include <causali.h>
|
#include <causali.h>
|
||||||
#include <rcausali.h>
|
#include <rcausali.h>
|
||||||
|
#include <clifo.h>
|
||||||
|
#include <pconti.h>
|
||||||
|
|
||||||
#include "cglib.h"
|
#include "cglib.h"
|
||||||
#include "cg2103.h"
|
#include "cg2103.h"
|
||||||
#include "cg0500.h"
|
#include "cg0500.h"
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
typedef enum { no_descr, acquisto, vendita, incasso_pagamento,
|
||||||
// Funzioni legate ai parametri ditta
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
HIDDEN bool salda_conto()
|
|
||||||
{
|
|
||||||
static bool _saldaconto = 2;
|
|
||||||
|
|
||||||
if (_saldaconto == 2)
|
|
||||||
{
|
|
||||||
TConfig conf(CONFIG_DITTA);
|
|
||||||
_saldaconto = conf.get_bool("GesSal");
|
|
||||||
}
|
|
||||||
return _saldaconto;
|
|
||||||
}
|
|
||||||
|
|
||||||
HIDDEN bool gestione_valuta()
|
|
||||||
{
|
|
||||||
static bool _gest_val = 2;
|
|
||||||
|
|
||||||
if (_gest_val == 2)
|
|
||||||
{
|
|
||||||
TConfig conf(CONFIG_DITTA);
|
|
||||||
_gest_val = conf.get_bool("GesVal");
|
|
||||||
}
|
|
||||||
return _gest_val;
|
|
||||||
}
|
|
||||||
|
|
||||||
HIDDEN int anno_iva()
|
|
||||||
{
|
|
||||||
static int _anno_iva = 0;
|
|
||||||
if (_anno_iva == 0)
|
|
||||||
{
|
|
||||||
TConfig conf(CONFIG_DITTA);
|
|
||||||
_anno_iva = (int)conf.get_long("AnLiIv", "cg");
|
|
||||||
if (_anno_iva < 1900)
|
|
||||||
{
|
|
||||||
_anno_iva = TDate(TODAY).year();
|
|
||||||
error_box("Nei parametri ditta manca l'anno liquidazione IVA: assumo %d", _anno_iva);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return _anno_iva;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Le righe di causale:
|
|
||||||
//
|
|
||||||
// Righe_rcaus e' un array di TRiga_caus.
|
|
||||||
//
|
|
||||||
// - NB - Contiene solo le descrizioni fisse!
|
|
||||||
//
|
|
||||||
// I dati letti dal file sono memorizzati direttamente nello spreadsheet
|
|
||||||
// Quando cambiano i campi tipodoc, codreg, tpm della testata le nuove
|
|
||||||
// descrizioni vengono caricate in questo array e poi ricopiate (solo le
|
|
||||||
// descrizioni) nello spreadsheet.
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
class TRiga_caus : public TToken_string
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const TString& operator = (const TString& s) {return TToken_string::operator=(s);}
|
|
||||||
const TString& operator = (const char* s) {return TToken_string::operator=(s);}
|
|
||||||
|
|
||||||
TRiga_caus (const char *df="", // descrizione fissa
|
|
||||||
char sezione=' ', // dare/avere
|
|
||||||
TConto* tc = NULL, // il conto
|
|
||||||
const char * coddes="", // codice descr. aggiuntiva
|
|
||||||
const char * descagg=""); // descrizione aggiuntiva
|
|
||||||
};
|
|
||||||
|
|
||||||
TRiga_caus::TRiga_caus (const char * df, char sez, TConto* tc,
|
|
||||||
const char * coddes, const char * descagg)
|
|
||||||
: TToken_string(128)
|
|
||||||
{
|
|
||||||
add(df);
|
|
||||||
add(sez);
|
|
||||||
if (tc != NULL) add(tc->string(0x3));
|
|
||||||
else add(" | | | | ");
|
|
||||||
add(coddes);
|
|
||||||
add(descagg);
|
|
||||||
}
|
|
||||||
|
|
||||||
class TRighe_rcaus : public TArray
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void set_descr (int numrig=-1, const char * descr="");
|
|
||||||
void clear(int riga); // pulisce una riga in seguito ad Azzera
|
|
||||||
void clear_descr(); // cancella solo le descrizioni fisse
|
|
||||||
void CaricaRigheLibere();
|
|
||||||
void CausaleIncassoPagamento();
|
|
||||||
void CausaleRitenutaOccas ();
|
|
||||||
void CausaleVendite ();
|
|
||||||
void CausaleAcquisti();
|
|
||||||
TRighe_rcaus() : TArray(20) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Cancella tutte le descrizioni delle righe
|
|
||||||
void TRighe_rcaus::clear_descr()
|
|
||||||
{
|
|
||||||
for (int i=0; i < items(); i++)
|
|
||||||
{
|
|
||||||
TRiga_caus *r = (TRiga_caus*)objptr(i);
|
|
||||||
if (r) r->add("", 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cancella tutta la riga tranne la descrizione
|
|
||||||
void TRighe_rcaus::clear(int row)
|
|
||||||
{
|
|
||||||
TRiga_caus* r = (TRiga_caus*)objptr(row);
|
|
||||||
if (r != NULL) *r = (const char*)r->get(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setta la descrizione di una riga senza cmbiare il resto
|
|
||||||
void TRighe_rcaus::set_descr(int i, const char * dfi)
|
|
||||||
{
|
|
||||||
TRiga_caus *r = (TRiga_caus*)objptr(i);
|
|
||||||
|
|
||||||
if (r == NULL)
|
|
||||||
{
|
|
||||||
r = new TRiga_caus(dfi);
|
|
||||||
add(r,i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
r->add(dfi, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool filtra_reg(const TRelation * r);
|
|
||||||
|
|
||||||
typedef enum { acquisto, vendita, incasso_pagamento,
|
|
||||||
ritenuta_occas, incasso_pagamento_gesval } tipo_descr;
|
ritenuta_occas, incasso_pagamento_gesval } tipo_descr;
|
||||||
|
|
||||||
|
|
||||||
class TCaus_app : public TRelation_application
|
class TCaus_app : public TRelation_application
|
||||||
{
|
{
|
||||||
int _filtro; // tipo di filtro su tab. reg.
|
int _filtro; // tipo di filtro su tab. reg.
|
||||||
@ -156,23 +28,29 @@ typedef enum { acquisto, vendita, incasso_pagamento,
|
|||||||
// 3 acquisti
|
// 3 acquisti
|
||||||
// 4 sia acquisti che vendite
|
// 4 sia acquisti che vendite
|
||||||
|
|
||||||
friend bool filtra_reg(const TRelation * r);
|
TSheet_field* _sheet;
|
||||||
|
|
||||||
|
// Parametri ditta
|
||||||
|
bool _valuta, _saldaconto;
|
||||||
|
int _anno_iva;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static bool filtra_reg(const TRelation * r);
|
||||||
|
|
||||||
static bool tipocf_hndl (TMask_field& f, KEY k);
|
static bool tipocf_hndl (TMask_field& f, KEY k);
|
||||||
static bool cod_reg_hndl (TMask_field& f, KEY k);
|
static bool cod_reg_hndl (TMask_field& f, KEY k);
|
||||||
static bool tipodoc_hndl (TMask_field& f, KEY k);
|
static bool tipodoc_hndl (TMask_field& f, KEY k);
|
||||||
static bool tipomov_hndl (TMask_field& f, KEY k);
|
static bool tipomov_hndl (TMask_field& f, KEY k);
|
||||||
|
|
||||||
|
static bool sezione_hndl (TMask_field& f, KEY k);
|
||||||
static bool conto_hndl (TMask_field& f, KEY k);
|
static bool conto_hndl (TMask_field& f, KEY k);
|
||||||
static bool sottoconto_hndl (TMask_field& f, KEY k);
|
static bool sottoconto_hndl (TMask_field& f, KEY k);
|
||||||
static bool codcausim_hndl (TMask_field& f, KEY k);
|
static bool codcausim_hndl (TMask_field& f, KEY k);
|
||||||
static bool m770_hndl (TMask_field& f, KEY k);
|
static bool m770_hndl (TMask_field& f, KEY k);
|
||||||
static bool leggi_riga (int r, KEY k);
|
static bool ss_notify (int r, KEY k);
|
||||||
|
|
||||||
TRelation * _rel;
|
TRelation * _rel;
|
||||||
TMask * _msk;
|
TMask * _msk;
|
||||||
TLocalisamfile * _conti;
|
|
||||||
int _mode; // Modo maschera corrente
|
|
||||||
int _items;
|
|
||||||
|
|
||||||
// Bitarray delle righe lette da file all'inizio.
|
// Bitarray delle righe lette da file all'inizio.
|
||||||
// Quando leggo dal file la riga n setto il bit n.
|
// Quando leggo dal file la riga n setto il bit n.
|
||||||
@ -181,9 +59,17 @@ typedef enum { acquisto, vendita, incasso_pagamento,
|
|||||||
void togli_dal_file(const TString&);
|
void togli_dal_file(const TString&);
|
||||||
|
|
||||||
void read_rcaus(TMask&);
|
void read_rcaus(TMask&);
|
||||||
bool descr2array(TMask&, bool fromHandler);
|
|
||||||
bool fill_sheet(TMask&);
|
bool fill_sheet(TMask&);
|
||||||
|
|
||||||
|
void set_descr (int numrig=-1, const char * descr="");
|
||||||
|
void clear(int riga); // pulisce una riga in seguito ad Azzera
|
||||||
|
void clear_descr(); // cancella solo le descrizioni fisse
|
||||||
|
void carica_righe_libere();
|
||||||
|
void causale_inc_pag();
|
||||||
|
void causale_ritenute ();
|
||||||
|
void causale_vendite ();
|
||||||
|
void causale_acquisti();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
virtual bool user_destroy();
|
virtual bool user_destroy();
|
||||||
@ -193,6 +79,7 @@ protected:
|
|||||||
virtual bool changing_mask(int mode) {return FALSE; }
|
virtual bool changing_mask(int mode) {return FALSE; }
|
||||||
virtual bool remove();
|
virtual bool remove();
|
||||||
|
|
||||||
|
void read_firm_params();
|
||||||
void init_mask(TMask&);
|
void init_mask(TMask&);
|
||||||
virtual void init_query_mode(TMask&);
|
virtual void init_query_mode(TMask&);
|
||||||
virtual void init_insert_mode(TMask&);
|
virtual void init_insert_mode(TMask&);
|
||||||
@ -205,49 +92,33 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
bool _forcedCopy;
|
bool _forcedCopy;
|
||||||
TRighe_rcaus _righe_rcaus; // Array delle descrizioni delle righe
|
|
||||||
tipo_descr _tipo_des; // Il tipo di causale corrente
|
tipo_descr _tipo_des; // Il tipo di causale corrente
|
||||||
|
|
||||||
void compilaarray (const TString&, int, int, int);
|
void compila_array (const TString&, int, int, int);
|
||||||
void array2sheet(); // Copia le descrizioni dall'array allo sheet
|
|
||||||
|
TSheet_field& ss() const { return *_sheet; }
|
||||||
|
TMask& ss_mask() const { return _sheet->sheet_mask(); }
|
||||||
|
|
||||||
TMask* main_mask() const { return _msk; }
|
|
||||||
TMask& ss_mask() const { return ss().sheet_mask(); }
|
|
||||||
TSheet_field& ss() const { return (TSheet_field&)_msk->field(F_SHEET_GCS);}
|
|
||||||
void add_riga (int numrig, char sz, TConto& tc, const TString& d, const TString& da);
|
void add_riga (int numrig, char sz, TConto& tc, const TString& d, const TString& da);
|
||||||
bool mostra_campi(TMask_field& f);
|
bool mostra_campi(TMask_field& f);
|
||||||
TLocalisamfile & conti() { return *_conti; }
|
|
||||||
|
bool valuta() const { return _valuta; }
|
||||||
|
bool saldaconto() const { return _saldaconto; }
|
||||||
|
int anno_iva() const { return _anno_iva; }
|
||||||
|
|
||||||
TCaus_app() {}
|
TCaus_app() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
HIDDEN TCaus_app& app() { return (TCaus_app&) main_app(); }
|
HIDDEN TCaus_app& app() { return (TCaus_app&) main_app(); }
|
||||||
|
|
||||||
// Per sapere su che riga sono dello spreadsheet. v. set_notify piu' sotto
|
bool TCaus_app::filtra_reg(const TRelation * r)
|
||||||
// e per pulire la sezione Dare/avere in caso di riga azzerata
|
|
||||||
bool TCaus_app::leggi_riga(int r, KEY k)
|
|
||||||
{
|
|
||||||
if (k == K_ENTER)
|
|
||||||
{
|
|
||||||
TToken_string &riga = app().ss().row(r);
|
|
||||||
const int g = riga.get_int(3);
|
|
||||||
if (g == 0) // riga azzerata
|
|
||||||
{
|
|
||||||
app()._righe_rcaus.clear(r); // pulisco la riga anche nell'array
|
|
||||||
app().ss().force_update(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool filtra_reg(const TRelation * r)
|
|
||||||
{
|
{
|
||||||
bool ok = FALSE;
|
bool ok = FALSE;
|
||||||
|
|
||||||
const TRectype& rec = r->lfile().curr();
|
const TRectype& rec = r->lfile().curr();
|
||||||
const int anno = atoi(rec.get("CODTAB").left(4));
|
const int anno = atoi(rec.get("CODTAB").left(4));
|
||||||
|
|
||||||
if (anno == anno_iva())
|
if (anno == app().anno_iva())
|
||||||
{
|
{
|
||||||
const int tiporeg = rec.get_int("I0");
|
const int tiporeg = rec.get_int("I0");
|
||||||
const bool corrisp = rec.get_bool("B0");
|
const bool corrisp = rec.get_bool("B0");
|
||||||
@ -261,7 +132,7 @@ bool filtra_reg(const TRelation * r)
|
|||||||
case 3:
|
case 3:
|
||||||
ok = tiporeg == 2; break;
|
ok = tiporeg == 2; break;
|
||||||
case 4: // tiporeg 1 senza corrisp OPPURE 2 (NC ST ND AF)
|
case 4: // tiporeg 1 senza corrisp OPPURE 2 (NC ST ND AF)
|
||||||
ok = (tiporeg == 1 && !corrisp) || tiporeg == 2; break;
|
ok = tiporeg == 2 || (tiporeg == 1 && !corrisp) ; break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -270,6 +141,129 @@ bool filtra_reg(const TRelation * r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Funzioni che caricano le varie descrizioni fisse nell'array
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Cancella tutta la riga tranne la descrizione
|
||||||
|
void TCaus_app::clear(int riga)
|
||||||
|
{
|
||||||
|
TToken_string& r = ss().row(riga);
|
||||||
|
r = r.get(0);
|
||||||
|
ss().force_update(riga);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setta la descrizione di una riga senza cmbiare il resto
|
||||||
|
void TCaus_app::set_descr(int i, const char * dfi)
|
||||||
|
{
|
||||||
|
TToken_string& r = ss().row(i);
|
||||||
|
r.add(dfi, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCaus_app::carica_righe_libere()
|
||||||
|
{
|
||||||
|
for (int i = ss().items(); i < 20; i++)
|
||||||
|
set_descr(i);
|
||||||
|
ss().force_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancella tutte le descrizioni delle righe
|
||||||
|
void TCaus_app::clear_descr()
|
||||||
|
{
|
||||||
|
TArray& a = ss().rows_array();
|
||||||
|
for (int i=0; i < a.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string& r = (TToken_string&)a[i];
|
||||||
|
r.add("", 0);
|
||||||
|
}
|
||||||
|
app()._tipo_des = no_descr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCaus_app::causale_vendite()
|
||||||
|
{
|
||||||
|
if (_tipo_des == vendita)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clear_descr();
|
||||||
|
_tipo_des = vendita;
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
set_descr(i++, "C Clienti");
|
||||||
|
set_descr(i++, "C Di ricavo");
|
||||||
|
set_descr(i++, "C Iva vendite");
|
||||||
|
set_descr(i++, "C Iva non detraibile");
|
||||||
|
set_descr(i++, "C Imp. esenti");
|
||||||
|
set_descr(i++, "C Imp. non imponibili");
|
||||||
|
set_descr(i++, "C Imp. non soggetti");
|
||||||
|
set_descr(i++, "C Ritenute fiscali");
|
||||||
|
set_descr(i++, "C Ritenute soc.");
|
||||||
|
carica_righe_libere();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TCaus_app::causale_acquisti()
|
||||||
|
{
|
||||||
|
if (_tipo_des == acquisto)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clear_descr();
|
||||||
|
_tipo_des = acquisto;
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
set_descr( i++, "C Fornitori");
|
||||||
|
set_descr(i++, "C Di costo");
|
||||||
|
set_descr(i++, "C Iva acquisti");
|
||||||
|
set_descr(i++, "C Iva non detraibile");
|
||||||
|
set_descr(i++, "C Imp. esenti");
|
||||||
|
set_descr(i++, "C Imp. non imponibili");
|
||||||
|
set_descr(i++, "C Imp. non soggetti");
|
||||||
|
set_descr(i++, "C Ritenute fiscali");
|
||||||
|
set_descr(i++, "C Ritenute soc.");
|
||||||
|
carica_righe_libere();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCaus_app::causale_ritenute()
|
||||||
|
{
|
||||||
|
if (_tipo_des == ritenuta_occas)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clear_descr();
|
||||||
|
_tipo_des = ritenuta_occas;
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
set_descr (i++, "Costo");
|
||||||
|
set_descr (i++, "Cassa/banca");
|
||||||
|
set_descr (i++, "Erario");
|
||||||
|
carica_righe_libere();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCaus_app::causale_inc_pag()
|
||||||
|
{
|
||||||
|
const tipo_descr tipo_des = valuta() ? incasso_pagamento_gesval : incasso_pagamento;
|
||||||
|
|
||||||
|
if (_tipo_des == tipo_des)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clear_descr();
|
||||||
|
_tipo_des = tipo_des;
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
set_descr ( i++, "C Clienti/Fornitori");
|
||||||
|
set_descr ( i++, "C Cassa o banca");
|
||||||
|
set_descr ( i++, "C Tratta");
|
||||||
|
set_descr ( i++, "C Ricevuta bancaria");
|
||||||
|
set_descr ( i++, "C Cessione");
|
||||||
|
set_descr ( i++, "C Paghero'");
|
||||||
|
set_descr ( i++, "C Lettera di credito");
|
||||||
|
set_descr ( i++, "C Abb. pass/sc.");
|
||||||
|
set_descr ( i++, "C Abb. att/sc.");
|
||||||
|
set_descr ( i++, "C Spese e rimborsi");
|
||||||
|
set_descr ( i++, "C Ritenute fiscali");
|
||||||
|
if (_tipo_des == incasso_pagamento_gesval)
|
||||||
|
set_descr (i++, "C Differenza cambio");
|
||||||
|
carica_righe_libere();
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
// Handler della maschera principale
|
// Handler della maschera principale
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
@ -303,7 +297,7 @@ bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
|
|||||||
if (val.not_empty() && val != "IN" && val != "PG" && val != "AN")
|
if (val.not_empty() && val != "IN" && val != "PG" && val != "AN")
|
||||||
{
|
{
|
||||||
f.mask().hide(F_TIPO_MOV_2);
|
f.mask().hide(F_TIPO_MOV_2);
|
||||||
if (salda_conto()) f.mask().show(F_TIPO_MOV_1);
|
if (app().saldaconto()) f.mask().show(F_TIPO_MOV_1);
|
||||||
|
|
||||||
f.mask().enable(F_COD_REG);
|
f.mask().enable(F_COD_REG);
|
||||||
field_reg.check_type(CHECK_REQUIRED);
|
field_reg.check_type(CHECK_REQUIRED);
|
||||||
@ -346,7 +340,7 @@ bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
|
|||||||
f.mask().disable(F_COD_REG);
|
f.mask().disable(F_COD_REG);
|
||||||
|
|
||||||
f.mask().hide(F_TIPO_MOV_1);
|
f.mask().hide(F_TIPO_MOV_1);
|
||||||
if (salda_conto())
|
if (app().saldaconto())
|
||||||
f.mask().show(F_TIPO_MOV_2);
|
f.mask().show(F_TIPO_MOV_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,10 +348,10 @@ bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
|
|||||||
const TString16 codreg(f.mask().get(F_COD_REG));
|
const TString16 codreg(f.mask().get(F_COD_REG));
|
||||||
if (codreg.not_empty())
|
if (codreg.not_empty())
|
||||||
{
|
{
|
||||||
TRegistro registro(codreg, anno_iva());
|
TRegistro registro(codreg, app().anno_iva());
|
||||||
if (registro.name().empty())
|
if (registro.name().empty())
|
||||||
return f.error_box("Non esiste il registro %s per l'anno %d",
|
return f.error_box("Non esiste il registro %s per l'anno %d",
|
||||||
(const char *)codreg, anno_iva());
|
(const char *)codreg, app().anno_iva());
|
||||||
}
|
}
|
||||||
|
|
||||||
app().mostra_campi(f);
|
app().mostra_campi(f);
|
||||||
@ -421,14 +415,14 @@ bool TCaus_app::mostra_campi(TMask_field& f)
|
|||||||
m.show(F_OP_FINE_ANNO);
|
m.show(F_OP_FINE_ANNO);
|
||||||
m.show(F_COLL_CESP);
|
m.show(F_COLL_CESP);
|
||||||
m.show(F_M_770);
|
m.show(F_M_770);
|
||||||
if (salda_conto()) m.hide(F_MOV_VALU);
|
if (saldaconto()) m.hide(F_MOV_VALU);
|
||||||
m.hide(F_MOV_SEZ);
|
m.hide(F_MOV_SEZ);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
if (gestione_valuta()) m.show(F_MOV_VALU);
|
if (valuta()) m.show(F_MOV_VALU);
|
||||||
if (salda_conto()) m.show(F_MOV_SEZ);
|
if (saldaconto()) m.show(F_MOV_SEZ);
|
||||||
m.show(F_M_770);
|
m.show(F_M_770);
|
||||||
m.hide(F_OP_FINE_ANNO);
|
m.hide(F_OP_FINE_ANNO);
|
||||||
m.hide(F_COLL_CESP);
|
m.hide(F_COLL_CESP);
|
||||||
@ -441,8 +435,8 @@ bool TCaus_app::mostra_campi(TMask_field& f)
|
|||||||
{ // codreg non vuoto
|
{ // codreg non vuoto
|
||||||
m.hide(F_OP_FINE_ANNO);
|
m.hide(F_OP_FINE_ANNO);
|
||||||
m.hide(F_MOV_SEZ);
|
m.hide(F_MOV_SEZ);
|
||||||
if (gestione_valuta()) m.show(F_MOV_VALU);
|
if (valuta()) m.show(F_MOV_VALU);
|
||||||
if (!salda_conto())
|
if (!saldaconto())
|
||||||
m.show(F_COD_CAUS_IM);
|
m.show(F_COD_CAUS_IM);
|
||||||
m.show(F_AUTO_FAT);
|
m.show(F_AUTO_FAT);
|
||||||
m.show(F_ALLEGAT);
|
m.show(F_ALLEGAT);
|
||||||
@ -473,7 +467,7 @@ bool TCaus_app::cod_reg_hndl (TMask_field& f, KEY k)
|
|||||||
if (tpd.not_empty())
|
if (tpd.not_empty())
|
||||||
{
|
{
|
||||||
TipoIVA i = nessuna_iva;
|
TipoIVA i = nessuna_iva;
|
||||||
TRegistro grog(codreg, anno_iva());
|
TRegistro grog(codreg, app().anno_iva());
|
||||||
TTable tabtpd("%TPD");
|
TTable tabtpd("%TPD");
|
||||||
tabtpd.put("CODTAB", tpd);
|
tabtpd.put("CODTAB", tpd);
|
||||||
if (tabtpd.read() == NOERR)
|
if (tabtpd.read() == NOERR)
|
||||||
@ -496,6 +490,39 @@ bool TCaus_app::cod_reg_hndl (TMask_field& f, KEY k)
|
|||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
// Handler della maschera dello spreadsheet
|
// Handler della maschera dello spreadsheet
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TCaus_app::ss_notify(int r, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
TToken_string &riga = app().ss().row(r);
|
||||||
|
const int g = riga.get_int(3);
|
||||||
|
if (g == 0) // riga azzerata
|
||||||
|
app().clear(r); // pulisco la riga anche nell'array
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCaus_app::sezione_hndl (TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
if (f.mask().get(SS_GRUPPO).not_empty())
|
||||||
|
{
|
||||||
|
if (f.get().empty())
|
||||||
|
{
|
||||||
|
const int riga = app().ss().selected();
|
||||||
|
if (riga == 0 || riga == 8)
|
||||||
|
return f.error_box("E' necessario specificare la sezione D/A");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
f.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (k == K_ENTER)
|
if (k == K_ENTER)
|
||||||
@ -503,7 +530,7 @@ bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
|||||||
char scarta = 'Z';
|
char scarta = 'Z';
|
||||||
int ultima = 8;
|
int ultima = 8;
|
||||||
|
|
||||||
const TipoIVA tpr = (TipoIVA)app().main_mask()->get_int(F_TIPO_REG);
|
const TipoIVA tpr = (TipoIVA)app().curr_mask().get_int(F_TIPO_REG);
|
||||||
|
|
||||||
switch (tpr)
|
switch (tpr)
|
||||||
{
|
{
|
||||||
@ -528,7 +555,8 @@ bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
|||||||
char sezione = toupper(sez.get()[0]);
|
char sezione = toupper(sez.get()[0]);
|
||||||
if (sezione != 'A' && sezione != 'D') sezione = ' ';
|
if (sezione != 'A' && sezione != 'D') sezione = ' ';
|
||||||
char sezione_consigliata = ' ';
|
char sezione_consigliata = ' ';
|
||||||
const bool full = f.get().not_empty();
|
|
||||||
|
const bool full = f.mask().get(SS_GRUPPO).not_empty();
|
||||||
|
|
||||||
const int riga = app().ss().selected();
|
const int riga = app().ss().selected();
|
||||||
if (tpr != nessuna_iva && riga <= ultima)
|
if (tpr != nessuna_iva && riga <= ultima)
|
||||||
@ -560,19 +588,16 @@ bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
|||||||
"%s non valido con registro %s", cf == 'C' ? "Cliente" : "Fornitore", iva2name(tpr));
|
"%s non valido con registro %s", cf == 'C' ? "Cliente" : "Fornitore", iva2name(tpr));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sezione == ' ')
|
if (sezione == ' ' && sezione_consigliata != ' ')
|
||||||
{
|
{
|
||||||
const char sc[2] = { sezione_consigliata, '\0' };
|
const char sc[2] = { sezione_consigliata, '\0' };
|
||||||
sez.set(sc);
|
sez.set(sc);
|
||||||
if (full && sezione_consigliata == ' ')
|
|
||||||
return sez.error_box("E' necessario specificare la sezione D/A");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 1. Se specifico il sottoconto devono essere non vuoti gruppo e conto
|
// 1. Se specifico il sottoconto devono essere non vuoti gruppo e conto
|
||||||
// 2. g-c-s devono esistere
|
// 2. g-c-s devono esistere
|
||||||
bool TCaus_app::sottoconto_hndl(TMask_field& f, KEY k)
|
bool TCaus_app::sottoconto_hndl(TMask_field& f, KEY k)
|
||||||
@ -586,155 +611,80 @@ bool TCaus_app::sottoconto_hndl (TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Funzioni che caricano le varie descrizioni fisse nell'array
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
void TRighe_rcaus::CausaleVendite()
|
|
||||||
{
|
|
||||||
int i=0;
|
|
||||||
TConto tc();
|
|
||||||
app()._tipo_des = vendita;
|
|
||||||
// set_descr(i++, "C Clienti", 'C');
|
|
||||||
set_descr(i++, "C Clienti"); // Lascio scelta libera
|
|
||||||
set_descr(i++, "C Di ricavo");
|
|
||||||
set_descr(i++, "C Iva vendite");
|
|
||||||
set_descr(i++, "C Iva non detraibile");
|
|
||||||
set_descr(i++, "C Imp. esenti");
|
|
||||||
set_descr(i++, "C Imp. non imponibili");
|
|
||||||
set_descr(i++, "C Imp. non soggetti");
|
|
||||||
set_descr(i++, "C Ritenute fiscali");
|
|
||||||
set_descr(i++, "C Ritenute soc.");
|
|
||||||
CaricaRigheLibere();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
void TCaus_app::compila_array(const TString& tpd, int tpm, int tpr, int m770)
|
||||||
void TRighe_rcaus::CausaleAcquisti()
|
|
||||||
{
|
|
||||||
int i=0;
|
|
||||||
app()._tipo_des = acquisto;
|
|
||||||
// set_descr( i++, "C Fornitori", 'F');
|
|
||||||
set_descr( i++, "C Fornitori");
|
|
||||||
set_descr(i++, "C Di costo");
|
|
||||||
set_descr(i++, "C Iva acquisti");
|
|
||||||
set_descr(i++, "C Iva non detraibile");
|
|
||||||
set_descr(i++, "C Imp. esenti");
|
|
||||||
set_descr(i++, "C Imp. non imponibili");
|
|
||||||
set_descr(i++, "C Imp. non soggetti");
|
|
||||||
set_descr(i++, "C Ritenute fiscali");
|
|
||||||
set_descr(i++, "C Ritenute soc.");
|
|
||||||
CaricaRigheLibere();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TRighe_rcaus::CausaleRitenutaOccas()
|
|
||||||
{
|
|
||||||
int i=0;
|
|
||||||
app()._tipo_des = ritenuta_occas;
|
|
||||||
set_descr (i++, "Costo");
|
|
||||||
set_descr (i++, "Cassa/banca");
|
|
||||||
set_descr (i++, "Erario");
|
|
||||||
CaricaRigheLibere();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TRighe_rcaus::CaricaRigheLibere()
|
|
||||||
{
|
|
||||||
for (int i = items(); i < 20; i++)
|
|
||||||
set_descr(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TRighe_rcaus::CausaleIncassoPagamento()
|
|
||||||
{
|
|
||||||
int i=0;
|
|
||||||
app()._tipo_des = incasso_pagamento;
|
|
||||||
set_descr ( i++, "C Clienti/Fornitori");
|
|
||||||
set_descr ( i++, "C Cassa o banca");
|
|
||||||
set_descr ( i++, "C Tratta");
|
|
||||||
set_descr ( i++, "C Ricevuta bancaria");
|
|
||||||
set_descr ( i++, "C Cessione");
|
|
||||||
set_descr ( i++, "C Paghero'");
|
|
||||||
set_descr ( i++, "C Lettera di credito");
|
|
||||||
set_descr ( i++, "C Abb. pass/sc.");
|
|
||||||
set_descr ( i++, "C Abb. att/sc.");
|
|
||||||
set_descr ( i++, "C Spese e rimborsi");
|
|
||||||
set_descr ( i++, "C Ritenute fiscali");
|
|
||||||
if (gestione_valuta())
|
|
||||||
{
|
|
||||||
set_descr (i++, "C Differenza cambio");
|
|
||||||
app()._tipo_des = incasso_pagamento_gesval;
|
|
||||||
}
|
|
||||||
CaricaRigheLibere();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TCaus_app::compilaarray(const TString& tpd, int tpm, int tpr, int m770)
|
|
||||||
{
|
{
|
||||||
_forcedCopy = FALSE;
|
_forcedCopy = FALSE;
|
||||||
if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG")
|
if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG")
|
||||||
{
|
{
|
||||||
if (salda_conto())
|
if (saldaconto())
|
||||||
{
|
{
|
||||||
switch (tpm) {
|
switch (tpm) {
|
||||||
case 3:
|
case 3:
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
_righe_rcaus.CausaleIncassoPagamento();
|
causale_inc_pag();
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
if (m770 == 6)
|
if (m770 == 6)
|
||||||
_righe_rcaus.CausaleRitenutaOccas();
|
{
|
||||||
else {
|
causale_ritenute();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_forcedCopy = TRUE;
|
_forcedCopy = TRUE;
|
||||||
_righe_rcaus.clear_descr();
|
clear_descr();
|
||||||
_righe_rcaus.CaricaRigheLibere();
|
carica_righe_libere();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_forcedCopy = TRUE;
|
_forcedCopy = TRUE;
|
||||||
_righe_rcaus.clear_descr();
|
clear_descr();
|
||||||
_righe_rcaus.CaricaRigheLibere();
|
carica_righe_libere();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // NO saldaconto
|
else
|
||||||
|
{ // NO saldaconto
|
||||||
_forcedCopy = TRUE;
|
_forcedCopy = TRUE;
|
||||||
_righe_rcaus.clear_descr();
|
clear_descr();
|
||||||
_righe_rcaus.CaricaRigheLibere();
|
carica_righe_libere();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // C'e' il tipodoc.
|
else // C'e' il tipodoc.
|
||||||
{
|
{
|
||||||
if (tpr == 1)
|
if (tpr == 1)
|
||||||
_righe_rcaus.CausaleVendite();
|
causale_vendite();
|
||||||
else
|
else
|
||||||
if (tpr == 2)
|
if (tpr == 2)
|
||||||
_righe_rcaus.CausaleAcquisti();
|
causale_acquisti();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_forcedCopy = TRUE;
|
_forcedCopy = TRUE;
|
||||||
_righe_rcaus.clear_descr();
|
clear_descr();
|
||||||
_righe_rcaus.CaricaRigheLibere();
|
carica_righe_libere();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TCaus_app::fill_sheet(TMask& m)
|
|
||||||
{
|
///////////////////////////////////////////////////////////
|
||||||
descr2array(m, TRUE);
|
// Relapp functions
|
||||||
array2sheet();
|
///////////////////////////////////////////////////////////
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int TCaus_app::read(TMask& m)
|
int TCaus_app::read(TMask& m)
|
||||||
{
|
{
|
||||||
m.autoload(_rel);
|
m.autoload(_rel);
|
||||||
descr2array(m, FALSE);
|
|
||||||
array2sheet();
|
|
||||||
read_rcaus(m);
|
read_rcaus(m);
|
||||||
|
fill_sheet(m);
|
||||||
return NOERR;
|
return NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::add_riga(int numrig, char sz, TConto& tc, const TString& d, const TString& da)
|
void TCaus_app::add_riga(int numrig, char sz, TConto& tc, const TString& d, const TString& da)
|
||||||
{
|
{
|
||||||
TToken_string& riga = ss().row(numrig);
|
TToken_string& riga = ss().row(numrig);
|
||||||
riga = " ";
|
riga = riga.get(0); // Lascia invariata la descrizione ...
|
||||||
|
if (riga.empty()) riga = " "; // ... se esiste gia'
|
||||||
riga.add(sz);
|
riga.add(sz);
|
||||||
riga.add(tc.string(0x3));
|
riga.add(tc.string(0x3));
|
||||||
riga.add(d);
|
riga.add(d);
|
||||||
@ -752,7 +702,6 @@ void TCaus_app::read_rcaus(TMask& m)
|
|||||||
TString80 da;
|
TString80 da;
|
||||||
|
|
||||||
_righe_gia_presenti.reset();
|
_righe_gia_presenti.reset();
|
||||||
// _righe_rcaus.destroy();
|
|
||||||
|
|
||||||
rcaus.zero();
|
rcaus.zero();
|
||||||
rcaus.put(RCA_CODCAUS, cod);
|
rcaus.put(RCA_CODCAUS, cod);
|
||||||
@ -784,63 +733,17 @@ void TCaus_app::read_rcaus(TMask& m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ricopio l'array Righe_rcaus nello sheet
|
|
||||||
void TCaus_app::array2sheet()
|
|
||||||
{
|
|
||||||
TString80 dfi;
|
|
||||||
_items = _righe_rcaus.items();
|
|
||||||
bool update = FALSE;
|
|
||||||
|
|
||||||
for (int i = 0; i < _items; i++)
|
bool TCaus_app::fill_sheet(TMask& m)
|
||||||
{
|
|
||||||
TToken_string& riga = ss().row(i);
|
|
||||||
TToken_string* r = (TToken_string*)_righe_rcaus.objptr(i);
|
|
||||||
|
|
||||||
dfi = r->get(0);
|
|
||||||
// Ricopio la descrizione solo se non vuota
|
|
||||||
if (_forcedCopy)
|
|
||||||
{
|
|
||||||
update = TRUE;
|
|
||||||
riga.add(dfi,0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (dfi.not_empty())
|
|
||||||
{
|
|
||||||
update = TRUE;
|
|
||||||
riga.add(dfi,0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (update) ss().force_update();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TCaus_app::descr2array(TMask& m, bool fromHandler)
|
|
||||||
{
|
{
|
||||||
TLocalisamfile& caus = _rel->lfile();
|
TLocalisamfile& caus = _rel->lfile();
|
||||||
TString16 tpd, codreg;
|
TString16 tpd, codreg;
|
||||||
int tpm, m770, tpr;
|
int tpm, m770, tpr;
|
||||||
|
|
||||||
// if (m.mode() == MODE_MOD && !fromHandler)
|
|
||||||
if (fromHandler)
|
|
||||||
{
|
|
||||||
codreg = m.field(F_COD_REG).get();
|
codreg = m.field(F_COD_REG).get();
|
||||||
tpd = m.field(F_TIPO_DOC).get();
|
tpd = m.field(F_TIPO_DOC).get();
|
||||||
tpm = m.get_int(F_TIPO_MOV);
|
tpm = m.get_int(F_TIPO_MOV);
|
||||||
m770 = m.get_int(F_M_770);
|
m770 = m.get_int(F_M_770);
|
||||||
}
|
|
||||||
else if (m.mode() == MODE_MOD)
|
|
||||||
{
|
|
||||||
codreg = caus.get("REG");
|
|
||||||
tpd = caus.get("TIPODOC");
|
|
||||||
tpm = caus.get_int("TIPOMOV");
|
|
||||||
m770 = caus.get_int("M770");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // sono in inserimento e prima di entrare negli handler
|
|
||||||
codreg = m.field(F_COD_REG).get();
|
|
||||||
tpd = m.field(F_TIPO_DOC).get();
|
|
||||||
tpm = m.get_int(F_TIPO_MOV);
|
|
||||||
m770 = m.get_int(F_M_770);
|
|
||||||
}
|
|
||||||
|
|
||||||
TString16 chiave; chiave << anno_iva() << codreg;
|
TString16 chiave; chiave << anno_iva() << codreg;
|
||||||
TTable reg("REG");
|
TTable reg("REG");
|
||||||
@ -851,7 +754,7 @@ bool TCaus_app::descr2array(TMask& m, bool fromHandler)
|
|||||||
tpr = 0;
|
tpr = 0;
|
||||||
|
|
||||||
// carico le descrizioni fisse nell'array Righe_rcaus
|
// carico le descrizioni fisse nell'array Righe_rcaus
|
||||||
compilaarray(tpd,tpm,tpr,m770);
|
compila_array(tpd,tpm,tpr,m770);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -870,7 +773,6 @@ void TCaus_app::togli_dal_file(const TString& cau)
|
|||||||
rcaus.zero();
|
rcaus.zero();
|
||||||
rcaus.put(RCA_CODCAUS,cau);
|
rcaus.put(RCA_CODCAUS,cau);
|
||||||
rcaus.put(RCA_NRIGA, i);
|
rcaus.put(RCA_NRIGA, i);
|
||||||
// if (rcaus.read() == NOERR)
|
|
||||||
rcaus.remove();
|
rcaus.remove();
|
||||||
_righe_gia_presenti.reset(i);
|
_righe_gia_presenti.reset(i);
|
||||||
}
|
}
|
||||||
@ -887,9 +789,9 @@ int TCaus_app::rewrite(const TMask& m)
|
|||||||
return re_write(m, TRUE);
|
return re_write(m, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TCaus_app::re_write(const TMask& m,bool rewrite)
|
int TCaus_app::re_write(const TMask& m, bool re)
|
||||||
{
|
{
|
||||||
const TString16 cau(m.get(F_COD_CAUS));
|
const TString16 codcau(m.get(F_COD_CAUS));
|
||||||
TString16 coddesc;
|
TString16 coddesc;
|
||||||
|
|
||||||
TLocalisamfile& caus = _rel->lfile(LF_CAUSALI);
|
TLocalisamfile& caus = _rel->lfile(LF_CAUSALI);
|
||||||
@ -897,18 +799,15 @@ int TCaus_app::re_write(const TMask& m,bool rewrite)
|
|||||||
|
|
||||||
m.autosave(_rel);
|
m.autosave(_rel);
|
||||||
|
|
||||||
TSheet_field& cs = ss();
|
for (int i = 0; i < ss().items(); i++)
|
||||||
// _items = _righe_rcaus.items();
|
|
||||||
_items = cs.items();
|
|
||||||
|
|
||||||
for (int i = 0; i < _items; i++)
|
|
||||||
{
|
{
|
||||||
TToken_string &riga = cs.row(i);
|
TToken_string &riga = ss().row(i);
|
||||||
if (riga.empty_items()) continue;
|
|
||||||
|
|
||||||
char sezione = riga.get_char(1);
|
const char sezione = riga.get_char(1);
|
||||||
const char tipo_cf = riga.get_char();
|
const char tipo_cf = riga.get_char();
|
||||||
const int g = riga.get_int();
|
const int g = riga.get_int();
|
||||||
|
if (g == 0) continue;
|
||||||
|
|
||||||
const int c = riga.get_int();
|
const int c = riga.get_int();
|
||||||
long s = riga.get_long();
|
long s = riga.get_long();
|
||||||
riga.get(); // Salta descrizione conto
|
riga.get(); // Salta descrizione conto
|
||||||
@ -917,16 +816,14 @@ int TCaus_app::re_write(const TMask& m,bool rewrite)
|
|||||||
if (g > 0)
|
if (g > 0)
|
||||||
{
|
{
|
||||||
rcaus.zero();
|
rcaus.zero();
|
||||||
rcaus.put (RCA_CODCAUS, cau);
|
rcaus.put (RCA_CODCAUS, codcau);
|
||||||
rcaus.put (RCA_NRIGA, i+1); // Numerare da uno!
|
rcaus.put (RCA_NRIGA, i+1); // Numerare da uno!
|
||||||
rcaus.put (RCA_SEZIONE, sezione);
|
rcaus.put (RCA_SEZIONE, sezione);
|
||||||
rcaus.put (RCA_TIPOCF, tipo_cf);
|
rcaus.put (RCA_TIPOCF, tipo_cf);
|
||||||
rcaus.put (RCA_GRUPPO , g);
|
rcaus.put (RCA_GRUPPO , g);
|
||||||
rcaus.put (RCA_CONTO , c);
|
rcaus.put (RCA_CONTO , c);
|
||||||
rcaus.put (RCA_SOTTOCONTO, s);
|
rcaus.put (RCA_SOTTOCONTO, s);
|
||||||
rcaus.put (RCA_CODDESC, (const char *)coddesc);
|
rcaus.put (RCA_CODDESC, coddesc);
|
||||||
if (rewrite)
|
|
||||||
{
|
|
||||||
if (_righe_gia_presenti[i+1])
|
if (_righe_gia_presenti[i+1])
|
||||||
{
|
{
|
||||||
rcaus.rewrite();
|
rcaus.rewrite();
|
||||||
@ -935,14 +832,11 @@ int TCaus_app::re_write(const TMask& m,bool rewrite)
|
|||||||
else
|
else
|
||||||
rcaus.write();
|
rcaus.write();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rcaus.write();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rewrite)
|
if (re)
|
||||||
{
|
{
|
||||||
togli_dal_file(cau); // Elimina dal file le righe rimaste nel bitarray
|
togli_dal_file(codcau); // Elimina dal file le righe rimaste nel bitarray
|
||||||
return caus.rewrite();
|
return caus.rewrite();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -971,17 +865,22 @@ bool TCaus_app::remove()
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TCaus_app::init_mask(TMask& m)
|
||||||
|
{
|
||||||
|
m.set(F_ANNOES, _anno_iva);
|
||||||
|
}
|
||||||
|
|
||||||
void TCaus_app::init_query_mode(TMask& m)
|
void TCaus_app::init_query_mode(TMask& m)
|
||||||
{
|
{
|
||||||
_righe_rcaus.destroy();
|
read_firm_params();
|
||||||
ss().reset();
|
ss().reset();
|
||||||
init_mask(m);
|
init_mask(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::init_insert_mode(TMask& m)
|
void TCaus_app::init_insert_mode(TMask& m)
|
||||||
{
|
{
|
||||||
ss().reset();
|
|
||||||
init_mask(m);
|
init_mask(m);
|
||||||
|
_righe_gia_presenti.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::init_modify_mode(TMask& m)
|
void TCaus_app::init_modify_mode(TMask& m)
|
||||||
@ -989,44 +888,40 @@ void TCaus_app::init_modify_mode(TMask& m)
|
|||||||
init_mask(m);
|
init_mask(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::init_mask(TMask& m)
|
|
||||||
{
|
|
||||||
// 27/06/94 Setto il campo nascosto F_ANNOES all'anno di liq. Iva
|
|
||||||
// preso dai par.ditta
|
|
||||||
const int anno = anno_iva();
|
|
||||||
m.set(F_ANNOES, anno);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
void TCaus_app::read_firm_params()
|
||||||
|
{
|
||||||
|
TConfig conf(CONFIG_DITTA);
|
||||||
|
|
||||||
|
_saldaconto = conf.get_bool("GesSal");
|
||||||
|
_valuta = conf.get_bool("GesVal");
|
||||||
|
_anno_iva = (int)conf.get_long("AnLiIv", "cg");
|
||||||
|
if (_anno_iva < 1900)
|
||||||
|
{
|
||||||
|
_anno_iva = TDate(TODAY).year();
|
||||||
|
error_box("Nei parametri ditta manca l'anno liquidazione IVA: assumo %d", _anno_iva);
|
||||||
|
conf.set("AnLiIv", _anno_iva);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TCaus_app::user_create()
|
bool TCaus_app::user_create()
|
||||||
{
|
{
|
||||||
_rel = new TRelation (LF_CAUSALI);
|
_rel = new TRelation (LF_CAUSALI);
|
||||||
_rel->add(LF_RCAUSALI, "CODCAUS=CODCAUS");
|
_rel->add(LF_RCAUSALI, "CODCAUS=CODCAUS");
|
||||||
|
|
||||||
_conti = new TLocalisamfile (LF_PCON);
|
|
||||||
|
|
||||||
_msk = new TMask("cg0500a");
|
_msk = new TMask("cg0500a");
|
||||||
|
_sheet = &(TSheet_field&)_msk->field(F_SHEET_GCS);
|
||||||
|
|
||||||
if (!salda_conto())
|
read_firm_params();
|
||||||
{
|
|
||||||
_msk->hide (F_MOV_SEZ);
|
|
||||||
_msk->hide (F_TIPO_MOV_1);
|
|
||||||
_msk->hide (F_TIPO_MOV_2);
|
|
||||||
_msk->show (F_COD_CAUS_IM);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_msk->show (F_MOV_SEZ);
|
|
||||||
_msk->hide (F_COD_CAUS_IM);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gestione_valuta())
|
_msk->show(F_TIPO_MOV_1, saldaconto());
|
||||||
_msk->show (F_MOV_VALU);
|
_msk->show(F_TIPO_MOV_2, saldaconto());
|
||||||
else
|
_msk->show (F_MOV_SEZ, saldaconto());
|
||||||
_msk->hide (F_MOV_VALU);
|
_msk->show (F_COD_CAUS_IM, !saldaconto());
|
||||||
|
_msk->show (F_MOV_VALU, valuta());
|
||||||
|
|
||||||
_msk->set_handler(F_TIPO_DOC, tipodoc_hndl);
|
_msk->set_handler(F_TIPO_DOC, tipodoc_hndl);
|
||||||
if (salda_conto())
|
if (saldaconto())
|
||||||
{
|
{
|
||||||
_msk->set_handler(F_TIPO_MOV_1, tipomov_hndl);
|
_msk->set_handler(F_TIPO_MOV_1, tipomov_hndl);
|
||||||
_msk->set_handler(F_TIPO_MOV_2, tipomov_hndl);
|
_msk->set_handler(F_TIPO_MOV_2, tipomov_hndl);
|
||||||
@ -1036,8 +931,9 @@ bool TCaus_app::user_create()
|
|||||||
_msk->set_handler(F_M_770, m770_hndl);
|
_msk->set_handler(F_M_770, m770_hndl);
|
||||||
|
|
||||||
TSheet_field& cs = ss();
|
TSheet_field& cs = ss();
|
||||||
cs.set_notify(leggi_riga);
|
cs.set_notify(ss_notify);
|
||||||
|
|
||||||
|
cs.sheet_mask().set_handler(SS_SEZIONE, sezione_hndl);
|
||||||
cs.sheet_mask().set_handler(SS_CONTO, conto_hndl);
|
cs.sheet_mask().set_handler(SS_CONTO, conto_hndl);
|
||||||
cs.sheet_mask().set_handler(SS_SOTTOCONTO, sottoconto_hndl);
|
cs.sheet_mask().set_handler(SS_SOTTOCONTO, sottoconto_hndl);
|
||||||
cs.sheet_mask().set_handler(SS_SOTTOCONTO+100, sottoconto_hndl);
|
cs.sheet_mask().set_handler(SS_SOTTOCONTO+100, sottoconto_hndl);
|
||||||
@ -1052,7 +948,6 @@ bool TCaus_app::user_destroy()
|
|||||||
{
|
{
|
||||||
delete _msk;
|
delete _msk;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
delete _conti;
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1063,6 +958,3 @@ int cg0500(int argc, char* argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ BEGIN
|
|||||||
DISPLAY "Registro" REG
|
DISPLAY "Registro" REG
|
||||||
DISPLAY "Movimento" TIPOMOV
|
DISPLAY "Movimento" TIPOMOV
|
||||||
COPY OUTPUT F_COD_CAUS
|
COPY OUTPUT F_COD_CAUS
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
KEY 2
|
KEY 2
|
||||||
HELP "Descrizione della causale"
|
HELP "Descrizione della causale"
|
||||||
MESSAGE COPY, F_DESCR2
|
MESSAGE COPY, F_DESCR2
|
||||||
@ -127,12 +128,12 @@ BEGIN
|
|||||||
FIELD LF_CAUSALI->M770
|
FIELD LF_CAUSALI->M770
|
||||||
HELP "Inserire il tipo di collegamento Mod.770"
|
HELP "Inserire il tipo di collegamento Mod.770"
|
||||||
ITEM " |Nessuno"
|
ITEM " |Nessuno"
|
||||||
ITEM "1|Ricevuta e/o pagamento fattura percipipiente"
|
ITEM "1|Ricevuta e/o pagamento fattura percipiente"
|
||||||
ITEM "2|Versamento ritenute percipiente"
|
ITEM "2|Versamento ritenute percipiente"
|
||||||
ITEM "3|Versamento ritenute dipendente"
|
ITEM "3|Versamento ritenute dipendente"
|
||||||
ITEM "4|Versamento contributi dipendente"
|
ITEM "4|Versamento contributi dipendente"
|
||||||
ITEM "5|Compensi non soggetti"
|
ITEM "5|Compensi non soggetti"
|
||||||
ITEM "6|Ritenute per operazioni occasionali"
|
ITEM "6|Ritenute per prestazioni occasionali"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_ANNOES 4
|
NUMBER F_ANNOES 4
|
||||||
|
@ -138,6 +138,7 @@ BEGIN
|
|||||||
ITEM "A|Avere"
|
ITEM "A|Avere"
|
||||||
FIELD LF_RCAUSALI->SEZIONE
|
FIELD LF_RCAUSALI->SEZIONE
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
// Descrizione normale
|
// Descrizione normale
|
||||||
@ -214,6 +215,7 @@ STRING 109 50
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 8 ""
|
PROMPT 1 8 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
BUTTON DLG_OK 9 2
|
||||||
|
@ -78,6 +78,7 @@ TMask* TPrimanota_application::load_mask(int n)
|
|||||||
ism.set_handler(209, sheet_clifo_handler);
|
ism.set_handler(209, sheet_clifo_handler);
|
||||||
ism.set_handler(309, sheet_clifo_handler);
|
ism.set_handler(309, sheet_clifo_handler);
|
||||||
}
|
}
|
||||||
|
_iva_showed = FALSE;
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
m->set_handler(F_DATAREG, datareg_handler);
|
m->set_handler(F_DATAREG, datareg_handler);
|
||||||
@ -85,6 +86,7 @@ TMask* TPrimanota_application::load_mask(int n)
|
|||||||
m->set_handler(F_DESCR, descr_handler);
|
m->set_handler(F_DESCR, descr_handler);
|
||||||
m->set_handler(F_CODCAUS, caus_modify_handler);
|
m->set_handler(F_CODCAUS, caus_modify_handler);
|
||||||
m->set_handler(F_SHEETCG, cg_handler);
|
m->set_handler(F_SHEETCG, cg_handler);
|
||||||
|
m->set_handler(F_CAMBIO, cambio_handler);
|
||||||
m->set_handler(F_VISVAL, visval_handler);
|
m->set_handler(F_VISVAL, visval_handler);
|
||||||
|
|
||||||
TSheet_field& cg = (TSheet_field&)m->field(F_SHEETCG);
|
TSheet_field& cg = (TSheet_field&)m->field(F_SHEETCG);
|
||||||
@ -225,13 +227,14 @@ bool TPrimanota_application::changing_mask(int mode)
|
|||||||
{
|
{
|
||||||
const bool flag = _mode != MODE_QUERY;
|
const bool flag = _mode != MODE_QUERY;
|
||||||
|
|
||||||
if (flag && _iva != nessuna_iva)
|
if (flag && _iva != nessuna_iva && !_iva_showed)
|
||||||
{
|
{
|
||||||
WINDOW w = ivas().parent();
|
WINDOW w = ivas().parent();
|
||||||
show_window(w, TRUE);
|
show_window(w, TRUE);
|
||||||
set_front_window(w);
|
set_front_window(w);
|
||||||
process_events();
|
process_events();
|
||||||
show_window(w, FALSE);
|
show_window(w, FALSE);
|
||||||
|
_iva_showed = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return flag;
|
return flag;
|
||||||
@ -290,6 +293,7 @@ void TPrimanota_application::init_mask(TMask& m)
|
|||||||
|
|
||||||
const bool intra = _causale.intra();
|
const bool intra = _causale.intra();
|
||||||
const bool valintra = _causale.valintra();
|
const bool valintra = _causale.valintra();
|
||||||
|
const bool corrisp = _causale.corrispettivi();
|
||||||
|
|
||||||
if (_iva != nessuna_iva)
|
if (_iva != nessuna_iva)
|
||||||
{
|
{
|
||||||
@ -302,24 +306,28 @@ void TPrimanota_application::init_mask(TMask& m)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
forg = 'h';
|
forg = 'h';
|
||||||
clig = causale().corrispettivi() ? 'h' : 's';
|
clig = corrisp ? 'h' : 's';
|
||||||
}
|
}
|
||||||
m.send_key(K_SHIFT+K_CTRL+clig, -1); // group 1 (clienti)
|
m.send_key(K_SHIFT+K_CTRL+clig, -1); // GROUP 1 (clienti)
|
||||||
m.send_key(K_SHIFT+K_CTRL+forg, -2); // group 2 (fornitori)
|
m.send_key(K_SHIFT+K_CTRL+forg, -2); // GROUP 2 (fornitori)
|
||||||
|
if (corrisp) m.hide(F_STATOPAIV);
|
||||||
|
|
||||||
m.show(F_CORRLIRE, intra);
|
m.show(F_CORRLIRE, intra);
|
||||||
|
|
||||||
const bool corrval = intra && _causale.valintra();
|
const bool corrval = intra && valintra;
|
||||||
m.show(F_CORRVALUTA, corrval);
|
m.show(F_CORRVALUTA, corrval);
|
||||||
|
|
||||||
m.show(F_CODIVA, m.mode() == MODE_INS);
|
m.show(F_CODIVA, m.mode() == MODE_INS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_VISVAL (GROUP 3)
|
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_VISVAL (GROUP 3)
|
||||||
const bool valuta = _causale.valuta() || _causale.valintra();
|
const bool valuta = valintra || (_ges_val && _causale.valuta());
|
||||||
m.send_key(K_SHIFT+K_CTRL+(valuta ? 's' : 'h'), -3);
|
m.send_key(K_SHIFT+K_CTRL+(valuta ? 's' : 'h'), -3);
|
||||||
if (valuta)
|
if (valuta)
|
||||||
m.set(F_VISVAL, "X");
|
{
|
||||||
|
const bool ok = m.get(F_VALUTA).not_empty();
|
||||||
|
m.field(F_VISVAL).set(ok ? "X" : " ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::init_query_mode(TMask& m)
|
void TPrimanota_application::init_query_mode(TMask& m)
|
||||||
@ -384,14 +392,6 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
|||||||
{
|
{
|
||||||
const long protiva = causale().reg().protocol();
|
const long protiva = causale().reg().protocol();
|
||||||
m.set(F_PROTIVA, protiva+1);
|
m.set(F_PROTIVA, protiva+1);
|
||||||
|
|
||||||
TMask_field& vv = m.field(F_VISVAL);
|
|
||||||
if (vv.active() && m.get(F_VALUTA).empty()) // Se e' un movimento in valuta
|
|
||||||
{
|
|
||||||
const bool ok = m.field(F_VALUTA).on_key(K_F9); // Richiedi valuta
|
|
||||||
vv.set(ok ? "X" : " ");
|
|
||||||
if (ok) vv.on_hit(); // Cambia decimali
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.get(F_CODCAUS).empty()) return;
|
if (m.get(F_CODCAUS).empty()) return;
|
||||||
@ -475,20 +475,26 @@ int TPrimanota_application::read(TMask& m)
|
|||||||
{
|
{
|
||||||
m.autoload(_rel);
|
m.autoload(_rel);
|
||||||
|
|
||||||
|
cgs().reset();
|
||||||
|
|
||||||
if (_iva != nessuna_iva)
|
if (_iva != nessuna_iva)
|
||||||
{
|
{
|
||||||
|
ivas().reset();
|
||||||
|
|
||||||
const TString16 occode(_rel->lfile().get("OCFPI"));
|
const TString16 occode(_rel->lfile().get("OCFPI"));
|
||||||
occas_mask().set(O_CODICE, occode);
|
occas_mask().set(O_CODICE, occode);
|
||||||
|
|
||||||
const char clifo = toupper(m.get(F_CLIFO)[0]);
|
real cambio(_rel->lfile().get("CAMBIO"));
|
||||||
|
if (cambio < 1.0) cambio = 1.0;
|
||||||
|
m.set_exchange(FALSE, cambio);
|
||||||
|
|
||||||
|
const char clifo = toupper(m.get(F_CLIFO)[0]);
|
||||||
if (_iva == iva_acquisti && clifo == 'C')
|
if (_iva == iva_acquisti && clifo == 'C')
|
||||||
error_box("Registrazione di acquisto attribuita ad un cliente"); else
|
error_box("Registrazione di acquisto attribuita ad un cliente"); else
|
||||||
if (_iva == iva_vendite && clifo == 'F')
|
if (_iva == iva_vendite && clifo == 'F')
|
||||||
error_box("Registrazione di vendita attribuita ad un fornitore");
|
error_box("Registrazione di vendita attribuita ad un fornitore");
|
||||||
}
|
}
|
||||||
|
|
||||||
cgs().reset();
|
|
||||||
|
|
||||||
_saldi.reset(); // Azzera saldi
|
_saldi.reset(); // Azzera saldi
|
||||||
_saldi.set_movprovv(_rel->lfile().get_bool("PROVVIS"));
|
_saldi.set_movprovv(_rel->lfile().get_bool("PROVVIS"));
|
||||||
@ -543,8 +549,6 @@ int TPrimanota_application::read(TMask& m)
|
|||||||
m.set(F_SOLAIVA, solaiva ? "X" : " ");
|
m.set(F_SOLAIVA, solaiva ? "X" : " ");
|
||||||
m.field(F_SOLAIVA).on_hit();
|
m.field(F_SOLAIVA).on_hit();
|
||||||
|
|
||||||
ivas().reset();
|
|
||||||
|
|
||||||
const bool to_swap = test_swap(FALSE);
|
const bool to_swap = test_swap(FALSE);
|
||||||
if (to_swap)
|
if (to_swap)
|
||||||
{
|
{
|
||||||
@ -583,9 +587,6 @@ int TPrimanota_application::read(TMask& m)
|
|||||||
ivas().row(i) = riga;
|
ivas().row(i) = riga;
|
||||||
}
|
}
|
||||||
|
|
||||||
TMask_field& vv = m.field(F_VISVAL);
|
|
||||||
if (vv.active()) vv.on_hit();
|
|
||||||
|
|
||||||
return _rel->status();
|
return _rel->status();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -852,11 +853,13 @@ void TPrimanota_application::genera_incasso(const char* causimm)
|
|||||||
inc.lfile().put("REG", caus.reg().name()); // Registro
|
inc.lfile().put("REG", caus.reg().name()); // Registro
|
||||||
|
|
||||||
const int annoes = m.get_int(F_ANNOES);
|
const int annoes = m.get_int(F_ANNOES);
|
||||||
|
const TString16 datareg = m.get(F_DATAREG);
|
||||||
|
|
||||||
TRectype& r = inc.cg(0);
|
TRectype& r = inc.cg(0);
|
||||||
r.zero();
|
r.zero();
|
||||||
r.put("NUMREG", _lastreg);
|
r.put("NUMREG", _lastreg);
|
||||||
r.put("NUMRIG", 1);
|
r.put("NUMRIG", 1);
|
||||||
|
r.put("DATAREG", datareg);
|
||||||
r.put("ANNOES", annoes);
|
r.put("ANNOES", annoes);
|
||||||
r.put("SEZIONE", m.get(I_SEZIONE1));
|
r.put("SEZIONE", m.get(I_SEZIONE1));
|
||||||
r.put("IMPORTO", m.get(F_TOTALE));
|
r.put("IMPORTO", m.get(F_TOTALE));
|
||||||
@ -891,6 +894,7 @@ void TPrimanota_application::genera_incasso(const char* causimm)
|
|||||||
r.put("IMPORTO", imp);
|
r.put("IMPORTO", imp);
|
||||||
r.put("NUMREG", _lastreg);
|
r.put("NUMREG", _lastreg);
|
||||||
r.put("NUMRIG", i);
|
r.put("NUMRIG", i);
|
||||||
|
r.put("DATAREG", datareg);
|
||||||
r.put("ANNOES", annoes);
|
r.put("ANNOES", annoes);
|
||||||
r.put("SEZIONE", m.get(sid));
|
r.put("SEZIONE", m.get(sid));
|
||||||
r.put("TIPOC", ' ');
|
r.put("TIPOC", ' ');
|
||||||
|
166
cg/cg2100c.uml
166
cg/cg2100c.uml
@ -124,6 +124,7 @@ BEGIN
|
|||||||
OUTPUT F_DESCAGG CODTAB
|
OUTPUT F_DESCAGG CODTAB
|
||||||
OUTPUT F_DESCR S0
|
OUTPUT F_DESCR S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Descrizione assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCR 50
|
STRING F_DESCR 50
|
||||||
@ -234,7 +235,6 @@ BEGIN
|
|||||||
OUTPUT F_CONTORIC CONTORIC
|
OUTPUT F_CONTORIC CONTORIC
|
||||||
OUTPUT F_SOTTOCONTORIC SOTTOCRIC
|
OUTPUT F_SOTTOCONTORIC SOTTOCRIC
|
||||||
OUTPUT F_CODPAG CODPAG
|
OUTPUT F_CODPAG CODPAG
|
||||||
OUTPUT F_VALUTA CODVAL
|
|
||||||
OUTPUT F_STATOPAIV STATOPAIV
|
OUTPUT F_STATOPAIV STATOPAIV
|
||||||
OUTPUT F_PIVACLIENTE PAIV
|
OUTPUT F_PIVACLIENTE PAIV
|
||||||
OUTPUT F_OCCASIONALE OCCAS
|
OUTPUT F_OCCASIONALE OCCAS
|
||||||
@ -265,7 +265,6 @@ BEGIN
|
|||||||
OUTPUT F_SOTTOCONTORIC SOTTOCRIC
|
OUTPUT F_SOTTOCONTORIC SOTTOCRIC
|
||||||
OUTPUT F_OCCASIONALE OCCAS
|
OUTPUT F_OCCASIONALE OCCAS
|
||||||
OUTPUT F_CODPAG CODPAG
|
OUTPUT F_CODPAG CODPAG
|
||||||
OUTPUT F_VALUTA CODVAL
|
|
||||||
OUTPUT F_STATOPAIV STATOPAIV
|
OUTPUT F_STATOPAIV STATOPAIV
|
||||||
OUTPUT F_PIVAFORNITORE PAIV
|
OUTPUT F_PIVAFORNITORE PAIV
|
||||||
MESSAGE COPY,F_CLIENTE
|
MESSAGE COPY,F_CLIENTE
|
||||||
@ -381,86 +380,9 @@ BEGIN
|
|||||||
WARNING "Codice pagamento assente"
|
WARNING "Codice pagamento assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_TOTALE 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 12 "Totale documento "
|
|
||||||
FIELD TOTDOC
|
|
||||||
FLAGS "RV"
|
|
||||||
PICTURE "."
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_RITFIS 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 13 "Ritenute fiscali "
|
|
||||||
FIELD RITFIS
|
|
||||||
FLAGS "RV"
|
|
||||||
PICTURE "."
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_RITSOC 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 14 "Ritenute sociali "
|
|
||||||
FIELD LF_MOV->RITSOC
|
|
||||||
FLAGS "RV"
|
|
||||||
PICTURE "."
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_CODIVA 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 60 12 "Codice IVA "
|
|
||||||
FLAGS "U"
|
|
||||||
USE %IVA
|
|
||||||
INPUT CODTAB F_CODIVA
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
DISPLAY "%@6" R0
|
|
||||||
DISPLAY "Tipo" S1
|
|
||||||
OUTPUT F_CODIVA CODTAB
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
END
|
|
||||||
|
|
||||||
DATE F_DATA74TER
|
|
||||||
BEGIN
|
|
||||||
PROMPT 54 13 "Data 74/ter "
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
FIELD DATA74TER
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_ANNORIF 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 45 14 "Rif.partita "
|
|
||||||
FLAGS "A"
|
|
||||||
HELP "Anno di riferimento partita"
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_NUMRIF 7
|
|
||||||
BEGIN
|
|
||||||
PROMPT 68 14 "/ "
|
|
||||||
HELP "Numero documento (o protocollo IVA) di riferimento"
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_CORRLIRE 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 15 "Corrispettivo Lire "
|
|
||||||
FIELD LF_MOV->CORRLIRE
|
|
||||||
FLAGS "R"
|
|
||||||
PICTURE "."
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_CORRVALUTA 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 45 15 "Corrisp. valuta "
|
|
||||||
FIELD LF_MOV->CORRVALUTA
|
|
||||||
FLAGS "R"
|
|
||||||
PICTURE "."
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
STRING F_VALUTA 3
|
STRING F_VALUTA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 16 "Valuta "
|
PROMPT 1 12 "Valuta "
|
||||||
FIELD LF_MOV->CODVAL
|
FIELD LF_MOV->CODVAL
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
GROUP 3
|
GROUP 3
|
||||||
@ -473,11 +395,12 @@ BEGIN
|
|||||||
OUTPUT F_VALUTA CODTAB
|
OUTPUT F_VALUTA CODTAB
|
||||||
OUTPUT F_CAMBIO R10
|
OUTPUT F_CAMBIO R10
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice valuta assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CAMBIO 15 5
|
NUMBER F_CAMBIO 12 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 20 16 "Cambio "
|
PROMPT 20 12 "Cambio "
|
||||||
FIELD LF_MOV->CAMBIO
|
FIELD LF_MOV->CAMBIO
|
||||||
FLAGS "RU"
|
FLAGS "RU"
|
||||||
GROUP 3
|
GROUP 3
|
||||||
@ -486,10 +409,87 @@ END
|
|||||||
|
|
||||||
BOOLEAN F_VISVAL
|
BOOLEAN F_VISVAL
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 47 16 "Visualizza importi in valuta"
|
PROMPT 47 12 "Visualizza importi in valuta"
|
||||||
GROUP 3
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_TOTALE 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 13 "Totale documento "
|
||||||
|
FIELD TOTDOC
|
||||||
|
FLAGS "RV"
|
||||||
|
PICTURE "."
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_RITFIS 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 14 "Ritenute fiscali "
|
||||||
|
FIELD RITFIS
|
||||||
|
FLAGS "RV"
|
||||||
|
PICTURE "."
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_RITSOC 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 15 "Ritenute sociali "
|
||||||
|
FIELD LF_MOV->RITSOC
|
||||||
|
FLAGS "RV"
|
||||||
|
PICTURE "."
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODIVA 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 60 13 "Codice IVA "
|
||||||
|
FLAGS "U"
|
||||||
|
USE %IVA
|
||||||
|
INPUT CODTAB F_CODIVA
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "%@6" R0
|
||||||
|
DISPLAY "Tipo" S1
|
||||||
|
OUTPUT F_CODIVA CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice IVA assente"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATA74TER
|
||||||
|
BEGIN
|
||||||
|
PROMPT 54 14 "Data 74/ter "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD DATA74TER
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ANNORIF 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 15 "Rif.partita "
|
||||||
|
FLAGS "A"
|
||||||
|
HELP "Anno di riferimento partita"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_NUMRIF 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 68 15 "/ "
|
||||||
|
HELP "Numero documento (o protocollo IVA) di riferimento"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CORRLIRE 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 16 "Corrispettivo Lire "
|
||||||
|
FIELD LF_MOV->CORRLIRE
|
||||||
|
FLAGS "R"
|
||||||
|
PICTURE "."
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CORRVALUTA 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 16 "Corrisp. valuta "
|
||||||
|
FIELD LF_MOV->CORRVALUTA
|
||||||
|
FLAGS "R"
|
||||||
|
PICTURE "."
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "IVA" -1 -1 77 20
|
PAGE "IVA" -1 -1 77 20
|
||||||
|
@ -653,7 +653,7 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
bool TPrimanota_application::detrazione_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::detrazione_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_SPACE && app().iva() == iva_acquisti)
|
if (key == K_TAB && f.dirty() && app().iva() == iva_acquisti)
|
||||||
{
|
{
|
||||||
TMask_field& ci = f.mask().field(101);
|
TMask_field& ci = f.mask().field(101);
|
||||||
ci.set_dirty();
|
ci.set_dirty();
|
||||||
@ -1299,12 +1299,29 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
app().add_cgs_tot(m);
|
app().add_cgs_tot(m);
|
||||||
|
|
||||||
TLocalisamfile& clifo = ((TEdit_field&)f).browse()->cursor()->file();
|
TLocalisamfile& clifo = ((TEdit_field&)f).browse()->cursor()->file();
|
||||||
const int alleg = clifo.get_int(CLI_ALLEG);
|
const int alleg = clifo.get_int(CLI_ALLEG);
|
||||||
TEdit_field& upi = m.efield(F_RIEPILOGO);
|
TEdit_field& upi = m.efield(F_RIEPILOGO);
|
||||||
upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL);
|
upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||||
|
|
||||||
if (clifo.get_bool(CLI_OCCAS))
|
if (clifo.get_bool(CLI_OCCAS))
|
||||||
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
||||||
|
|
||||||
|
if (m.field(F_VISVAL).active())
|
||||||
|
{
|
||||||
|
const TString16 valuta(clifo.get("CODVAL"));
|
||||||
|
if (valuta.not_empty() && valuta != m.get(F_VALUTA))
|
||||||
|
{
|
||||||
|
TTable val("%val");
|
||||||
|
val.put("CODTAB", valuta);
|
||||||
|
if (val.read() == NOERR)
|
||||||
|
{
|
||||||
|
m.set(F_VALUTA, valuta);
|
||||||
|
m.set(F_CAMBIO, val.get("R0"), TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1342,19 +1359,22 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
|||||||
if (key == K_TAB && f.get().not_empty())
|
if (key == K_TAB && f.get().not_empty())
|
||||||
{
|
{
|
||||||
const real imp(app().ivas().row(1).get(0)); // Se il totale non e' stato spezzato
|
const real imp(app().ivas().row(1).get(0)); // Se il totale non e' stato spezzato
|
||||||
if (imp == ZERO)
|
if (imp.is_zero())
|
||||||
{
|
{
|
||||||
|
TToken_string& row = app().ivas().row(0);
|
||||||
|
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
iva_notify(0, K_SPACE);
|
iva_notify(0, K_SPACE);
|
||||||
|
|
||||||
const TCodiceIVA iva(f.get());
|
const TCodiceIVA iva(f.get());
|
||||||
const bool corr = app().causale().corrispettivi();
|
const bool corr = app().causale().corrispettivi();
|
||||||
real tot = app().totale_documento();
|
const bool acq3 = (app().iva() == iva_acquisti) && (row.get_int(2) == 3);
|
||||||
real imposta;
|
|
||||||
if (!corr)
|
real tot = app().totale_documento(); // Calcola totale documento
|
||||||
|
real imposta; // Calcola imposta
|
||||||
|
if (!corr && !acq3)
|
||||||
imposta = app().scorpora(tot, iva.percentuale());
|
imposta = app().scorpora(tot, iva.percentuale());
|
||||||
|
|
||||||
TToken_string& row = app().ivas().row(0);
|
|
||||||
row.add(tot.string(), 0); // imponibile
|
row.add(tot.string(), 0); // imponibile
|
||||||
row.add(imposta.string(), 3); // imposta
|
row.add(imposta.string(), 3); // imposta
|
||||||
|
|
||||||
@ -1440,22 +1460,29 @@ bool TPrimanota_application::ritsoc_handler(TMask_field& f, KEY key)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TPrimanota_application::cambio_handler(TMask_field& f, KEY key)
|
||||||
|
{
|
||||||
|
if (key == K_TAB && f.focusdirty())
|
||||||
|
{
|
||||||
|
if (f.get().empty())
|
||||||
|
f.set(f.mask().exchange().string());
|
||||||
|
else
|
||||||
|
f.mask().field(F_VISVAL).on_hit();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Handler of F_VISVAL
|
// Handler of F_VISVAL
|
||||||
// Certified 90%
|
// Certified 99%
|
||||||
bool TPrimanota_application::visval_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::visval_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
if (key == K_SPACE)
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
const real e(f.get() == "X" ? m.get(F_CAMBIO) : "1");
|
const bool on = f.get().not_empty();
|
||||||
if (e > ZERO)
|
const real e(f.mask().get(F_CAMBIO));
|
||||||
m.set_exchange(e);
|
m.set_exchange(on, e);
|
||||||
else
|
|
||||||
{
|
|
||||||
error_box("Impostare un valore maggiore di zero per il cambio");
|
|
||||||
f.reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,7 @@ class TPrimanota_application : public TRelation_application
|
|||||||
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
|
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
|
||||||
bool _rif_par; // Riferimento parita (NUM_DOC | PROTIVA)
|
bool _rif_par; // Riferimento parita (NUM_DOC | PROTIVA)
|
||||||
bool _savenew; // Registra e nuovo
|
bool _savenew; // Registra e nuovo
|
||||||
|
bool _iva_showed; // Lo sheet IVA e' gia' stato visualizzato una volta?
|
||||||
|
|
||||||
TSaldo_agg _saldi; // Saldi da aggiornare
|
TSaldo_agg _saldi; // Saldi da aggiornare
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ class TPrimanota_application : public TRelation_application
|
|||||||
static bool ritfis_handler(TMask_field& f, KEY key);
|
static bool ritfis_handler(TMask_field& f, KEY key);
|
||||||
static bool ritsoc_handler(TMask_field& f, KEY key);
|
static bool ritsoc_handler(TMask_field& f, KEY key);
|
||||||
static bool main_codiva_handler(TMask_field& f, KEY key);
|
static bool main_codiva_handler(TMask_field& f, KEY key);
|
||||||
|
static bool cambio_handler(TMask_field& f, KEY key);
|
||||||
static bool visval_handler(TMask_field& f, KEY key);
|
static bool visval_handler(TMask_field& f, KEY key);
|
||||||
static bool occas_code_handler(TMask_field& f, KEY key);
|
static bool occas_code_handler(TMask_field& f, KEY key);
|
||||||
static bool occas_handler(TMask_field& f, KEY key);
|
static bool occas_handler(TMask_field& f, KEY key);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user