Patch level : XX 272
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione AGA 1.7 patch 272 sul main trunk git-svn-id: svn://10.65.10.50/trunk@10283 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
929e9ececd
commit
ac4d0ed9e4
@ -12,6 +12,7 @@
|
|||||||
#define F_INIZIO8 108
|
#define F_INIZIO8 108
|
||||||
#define F_INIZIO9 109
|
#define F_INIZIO9 109
|
||||||
#define F_INIZIO10 110
|
#define F_INIZIO10 110
|
||||||
|
#define F_FINE0 200
|
||||||
#define F_FINE1 201
|
#define F_FINE1 201
|
||||||
#define F_FINE2 202
|
#define F_FINE2 202
|
||||||
#define F_FINE3 203
|
#define F_FINE3 203
|
||||||
|
@ -120,7 +120,7 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 76 4
|
GROUPBOX DLG_NULL 76 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 4 "Anagrafica"
|
PROMPT 0 4 "@bAnagrafica"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST FLD_GD1_TIPOA 11
|
LIST FLD_GD1_TIPOA 11
|
||||||
@ -170,7 +170,7 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 76 4
|
GROUPBOX DLG_NULL 76 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 8 "Attivita' prevalente"
|
PROMPT 0 8 "@bAttività prevalente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING FLD_GD1_CODATTPREV 5
|
STRING FLD_GD1_CODATTPREV 5
|
||||||
@ -204,7 +204,7 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 76 4
|
GROUPBOX DLG_NULL 76 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 12 "Telefoni"
|
PROMPT 0 12 "@bTelefoni"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING FLD_GD1_PTEL 10
|
STRING FLD_GD1_PTEL 10
|
||||||
@ -512,7 +512,7 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 76 5
|
GROUPBOX DLG_NULL 76 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 10 "Codici statistici"
|
PROMPT 0 10 "@bCodici statistici"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING FLD_GD2_CODSTAT1 7
|
STRING FLD_GD2_CODSTAT1 7
|
||||||
@ -793,7 +793,7 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 76 7
|
GROUPBOX DLG_NULL 76 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Soggetto Obbligato INTRA"
|
PROMPT 1 4 "@bSoggetto Obbligato INTRA"
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -829,19 +829,21 @@ END
|
|||||||
|
|
||||||
BOOLEAN CHK_IN_NONOBBSTAT
|
BOOLEAN CHK_IN_NONOBBSTAT
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 9 "Soggetto non obbligato alla dei valori statistico, consegna e trasporto"
|
PROMPT 2 9 "Non obbligato a compilare: valore stat., modalità consegna e trasporto"
|
||||||
|
|
||||||
|
|
||||||
FIELD NONOBBSTAT
|
FIELD NONOBBSTAT
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 4
|
GROUPBOX DLG_NULL 76 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 11 "Soggetto Delegato INTRA"
|
PROMPT 1 11 "@bSoggetto Delegato INTRA"
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST LST_IN_TIPOSOGDEL 1 10
|
LIST LST_IN_TIPOSOGDEL 1 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 12 "Tipo persona "
|
PROMPT 2 12 "Tipo persona "
|
||||||
ITEM "F|Fisica"
|
ITEM "F|Fisica"
|
||||||
ITEM "G|Giuridica"
|
ITEM "G|Giuridica"
|
||||||
FIELD TIPOSOGDEL
|
FIELD TIPOSOGDEL
|
||||||
@ -865,7 +867,7 @@ END
|
|||||||
|
|
||||||
STRING FLD_IN_DESSOGDEL 50
|
STRING FLD_IN_DESSOGDEL 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 13 "Denominazione "
|
PROMPT 2 13 "Denominazione "
|
||||||
USE LF_ANAG KEY 2
|
USE LF_ANAG KEY 2
|
||||||
INPUT TIPOA LST_IN_TIPOSOGDEL SELECT
|
INPUT TIPOA LST_IN_TIPOSOGDEL SELECT
|
||||||
INPUT RAGSOC FLD_IN_DESSOGDEL
|
INPUT RAGSOC FLD_IN_DESSOGDEL
|
||||||
|
@ -7,7 +7,6 @@ Item_01 = "Anagrafiche di base", [PRASSI_001]
|
|||||||
Item_02 = "Amministrazione", <cgarea.men>
|
Item_02 = "Amministrazione", <cgarea.men>
|
||||||
Item_03 = "Acquisti e vendite", <vearea.men>
|
Item_03 = "Acquisti e vendite", <vearea.men>
|
||||||
Item_04 = "Magazzino e Produzione", <mgarea.men>
|
Item_04 = "Magazzino e Produzione", <mgarea.men>
|
||||||
Item_11 = "Comunicazione", [PRASSI_019]
|
|
||||||
Item_11 = "Manutenzione", [PRASSI_015]
|
Item_11 = "Manutenzione", [PRASSI_015]
|
||||||
|
|
||||||
[PRASSI_001]
|
[PRASSI_001]
|
||||||
@ -98,15 +97,6 @@ Item_06 = "Creazione dischi di installazione", "ba1 -5", ""
|
|||||||
Item_07 = "Backup", "ba2 -1", ""
|
Item_07 = "Backup", "ba2 -1", ""
|
||||||
Item_08 = "Conversione all'Euro", [PRASSI_883]
|
Item_08 = "Conversione all'Euro", [PRASSI_883]
|
||||||
|
|
||||||
[PRASSI_019]
|
|
||||||
Caption = "Comunicazione"
|
|
||||||
Picture = <ba05.bmp>
|
|
||||||
Module = 0
|
|
||||||
Item_01 = "EasyDoc", "c:\EasyDoc\EasyDoc.exe", ""
|
|
||||||
Item_02 = "Gestione Fax", "bafax -s", ""
|
|
||||||
Item_03 = "Archivio fax spediti e ricevuti", disabled
|
|
||||||
Item_04 = "Archivio contatti telefonici", disabled
|
|
||||||
|
|
||||||
[PRASSI_883]
|
[PRASSI_883]
|
||||||
Caption = "Conversione all'Euro"
|
Caption = "Conversione all'Euro"
|
||||||
Picture = <ba00.bmp>
|
Picture = <ba00.bmp>
|
||||||
|
@ -6,7 +6,7 @@ TOOLBAR "" 0 20 0 2
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Tabella Modalita' di consegna" -1 -1 78 8
|
PAGE "Modalità di consegna" -1 -1 78 8
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 75 7
|
GROUPBOX DLG_NULL 75 7
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -142,11 +142,11 @@ void TLM_app::main_loop()
|
|||||||
TDate fromdate = m.get(F_FROM_DATE), todate = m.get(F_TO_DATE);
|
TDate fromdate = m.get(F_FROM_DATE), todate = m.get(F_TO_DATE);
|
||||||
TString filter;
|
TString filter;
|
||||||
if (fromdate.ok())
|
if (fromdate.ok())
|
||||||
filter << "(ANSI(" << MOVCE_DTMOV << ")>=" << fromdate.string(ANSI) << ')';
|
filter << "(ANSI(" << MOVCE_DTMOV << ")>=\"" << fromdate.string(ANSI) << "\")";
|
||||||
if (todate.ok())
|
if (todate.ok())
|
||||||
{
|
{
|
||||||
if (filter.not_empty()) filter << "&&";
|
if (filter.not_empty()) filter << "&&";
|
||||||
filter << "(ANSI(" << MOVCE_DTMOV << ")<=" << todate.string(ANSI) << ')';
|
filter << "(ANSI(" << MOVCE_DTMOV << ")<=\"" << todate.string(ANSI) << "\")";
|
||||||
}
|
}
|
||||||
if (codmov.not_empty())
|
if (codmov.not_empty())
|
||||||
{
|
{
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
#include <relapp.h>
|
#include <relapp.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <utility.h>
|
|
||||||
|
|
||||||
#include <causali.h>
|
#include <causali.h>
|
||||||
#include <rcausali.h>
|
#include <rcausali.h>
|
||||||
@ -452,25 +451,21 @@ bool TCaus_app::cod_reg_hndl (TMask_field& f, KEY k)
|
|||||||
// controllo di consistenza tra codice (tipo) registro e tipo documento
|
// controllo di consistenza tra codice (tipo) registro e tipo documento
|
||||||
if (k == K_ENTER)
|
if (k == K_ENTER)
|
||||||
{
|
{
|
||||||
// bool ok = TRUE;
|
const TMask& m = f.mask();
|
||||||
const TString16 tpd = f.mask().get(F_TIPO_DOC);
|
const TString& tpd = m.get(F_TIPO_DOC);
|
||||||
const TString16 codreg = f.mask().get(F_COD_REG);
|
|
||||||
|
|
||||||
if (tpd.not_empty())
|
if (tpd.not_empty())
|
||||||
{
|
{
|
||||||
TipoIVA i = nessuna_iva;
|
const TRectype& tabtpd = cache().get("%TPD", tpd);
|
||||||
TRegistro grog(codreg, app().anno_iva());
|
if (!tabtpd.empty())
|
||||||
TTable tabtpd("%TPD");
|
|
||||||
tabtpd.put("CODTAB", tpd);
|
|
||||||
if (tabtpd.read() == NOERR)
|
|
||||||
{
|
{
|
||||||
i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
|
const TipoIVA i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
|
||||||
|
if (i != iva_generica) // iva_generica = 9
|
||||||
|
{
|
||||||
|
const TString& codreg = m.get(F_COD_REG);
|
||||||
|
const TRegistro grog(codreg, app().anno_iva());
|
||||||
const TipoIVA ri = grog.iva();
|
const TipoIVA ri = grog.iva();
|
||||||
if (i == iva_generica) i = ri;
|
|
||||||
if (i != ri)
|
if (i != ri)
|
||||||
{
|
return f.error_box("Tipo documento incompatibile con tipo registro");
|
||||||
return f.warning_box("Tipo documento incompatibile con tipo registro");
|
|
||||||
i = iva_errata;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,3 +40,4 @@
|
|||||||
#define SS_SOTTOCONTO 106
|
#define SS_SOTTOCONTO 106
|
||||||
#define SS_DESCAGG 108
|
#define SS_DESCAGG 108
|
||||||
#define SS_DESCRIPTION 109
|
#define SS_DESCRIPTION 109
|
||||||
|
#define SS_AZZERA 200
|
||||||
|
@ -249,9 +249,9 @@ BEGIN
|
|||||||
PROMPT -23 -1 ""
|
PROMPT -23 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_NULL 9 2
|
BUTTON SS_AZZERA 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -33 -1 "Azzera"
|
PROMPT -33 -1 "A~zzera"
|
||||||
MESSAGE RESET,1@
|
MESSAGE RESET,1@
|
||||||
MESSAGE EXIT,K_ENTER
|
MESSAGE EXIT,K_ENTER
|
||||||
END
|
END
|
||||||
|
@ -259,6 +259,7 @@ END
|
|||||||
RADIOBUTTON F_STAMPAC 36
|
RADIOBUTTON F_STAMPAC 36
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 1 "@bTipo stampa"
|
PROMPT 34 1 "@bTipo stampa"
|
||||||
|
|
||||||
ITEM "1|Conti movimentati"
|
ITEM "1|Conti movimentati"
|
||||||
ITEM "2|Conti con saldo diverso da zero"
|
ITEM "2|Conti con saldo diverso da zero"
|
||||||
END
|
END
|
||||||
|
@ -494,8 +494,7 @@ void TPrimanota_application::init_mask(TMask& m)
|
|||||||
}
|
}
|
||||||
m.show(-1, clig);
|
m.show(-1, clig);
|
||||||
m.show(-2, forg);
|
m.show(-2, forg);
|
||||||
if (corrisp)
|
if (corrisp) m.hide(F_STATOPAIV);
|
||||||
m.hide(F_STATOPAIV);
|
|
||||||
|
|
||||||
// Show/Hide campi valuta: F_VALUTAINTRA, F_CAMBIOINTRA, F_CORRISPETTIVO, F_CORRVAL (GROUP 4)
|
// Show/Hide campi valuta: F_VALUTAINTRA, F_CAMBIOINTRA, F_CORRISPETTIVO, F_CORRVAL (GROUP 4)
|
||||||
m.show(-4, causale().valintra());
|
m.show(-4, causale().valintra());
|
||||||
@ -1749,6 +1748,7 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
|||||||
str.format("%d", LF_INTRA);
|
str.format("%d", LF_INTRA);
|
||||||
intro.set_paragraph(str);
|
intro.set_paragraph(str);
|
||||||
intro.set("NUMREG", m.get(F_NUMREG));
|
intro.set("NUMREG", m.get(F_NUMREG));
|
||||||
|
intro.set("DATAREG", m.get(F_DATAREG));
|
||||||
|
|
||||||
if (m.field(F_CLIENTE).shown())
|
if (m.field(F_CLIENTE).shown())
|
||||||
{
|
{
|
||||||
@ -1763,15 +1763,18 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
|||||||
intro.set("CODCF", m.get(F_FORNITORE));
|
intro.set("CODCF", m.get(F_FORNITORE));
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& codval = m.get(F_VALUTAINTRA);
|
// Controlla flag sulla causale
|
||||||
intro.set("CODVAL", codval);
|
const bool valintra = causale().valintra();
|
||||||
|
if (valintra)
|
||||||
|
{
|
||||||
|
intro.set("CODVAL", m.get(F_VALUTAINTRA));
|
||||||
intro.set("CAMBIO", m.get(F_CAMBIOINTRA));
|
intro.set("CAMBIO", m.get(F_CAMBIOINTRA));
|
||||||
intro.set("DATAREG", m.get(F_DATAREG));
|
}
|
||||||
|
|
||||||
// Inserisci il totale documento solo in inserimento!
|
// Inserisci il totale documento solo in inserimento!
|
||||||
if (action == "Insert")
|
if (action == "Insert")
|
||||||
{
|
{
|
||||||
real totdoc = m.get(codval.empty() ? F_IMPONIBILI : F_CORRISPETTIVO);
|
real totdoc = m.get(valintra ? F_CORRISPETTIVO : F_IMPONIBILI);
|
||||||
if (test_swap(FALSE))
|
if (test_swap(FALSE))
|
||||||
totdoc = -totdoc;
|
totdoc = -totdoc;
|
||||||
intro.set("TOTDOC", totdoc.string());
|
intro.set("TOTDOC", totdoc.string());
|
||||||
|
@ -198,28 +198,22 @@ int TPrimanota_application::bill2pos(const TBill& conto, char tipo)
|
|||||||
|
|
||||||
int TPrimanota_application::clint2pos(const TClinton& conto, char tipo)
|
int TPrimanota_application::clint2pos(const TClinton& conto, char tipo)
|
||||||
{
|
{
|
||||||
int r = bill2pos(conto, tipo);
|
TSheet_field& cg = app().cgs();
|
||||||
if (r >= 0 && conto.commessa().not_empty())
|
FOR_EACH_SHEET_ROW(cg, i, s)
|
||||||
{
|
{
|
||||||
TString_array& cg = app().cgs().rows_array();
|
const char t = row_type(*s);
|
||||||
const int num_rows = cg.items();
|
|
||||||
for (int i = r ; i < num_rows; i++)
|
|
||||||
{
|
|
||||||
TToken_string& s = cg.row(i);
|
|
||||||
const char t = row_type(s);
|
|
||||||
if (t == tipo)
|
if (t == tipo)
|
||||||
{
|
{
|
||||||
const TClinton c(s, FALSE);
|
const TClinton c(*s, FALSE);
|
||||||
if (c == conto)
|
if (c == conto)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r = -1;
|
return -1;
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Trova nelle righe contabili un conto di contropartita per il conto dato
|
// Trova nelle righe contabili un conto di contropartita per il conto dato
|
||||||
int TPrimanota_application::bill2contr(const TBill& conto, char sezione) const
|
int TPrimanota_application::bill2contr(const TBill& conto, char sezione) const
|
||||||
{
|
{
|
||||||
@ -704,6 +698,7 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
if (errato && a._as400 && speso.is_zero())
|
if (errato && a._as400 && speso.is_zero())
|
||||||
errato = FALSE;
|
errato = FALSE;
|
||||||
|
|
||||||
|
|
||||||
if (nota && errato && speso.is_zero())
|
if (nota && errato && speso.is_zero())
|
||||||
{
|
{
|
||||||
const int annorif = m.get_int(F_ANNORIF);
|
const int annorif = m.get_int(F_ANNORIF);
|
||||||
@ -716,6 +711,7 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (errato)
|
if (errato)
|
||||||
{
|
{
|
||||||
TString msg(128);
|
TString msg(128);
|
||||||
@ -741,11 +737,21 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
saldaconto += importo;
|
saldaconto += importo;
|
||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
|
{
|
||||||
|
if (tipo == 'G') // Le spese non si trovano sul saldaconto
|
||||||
|
{
|
||||||
|
const TExchange cam(m.get(SK_VALUTA), m.get_real(SK_CAMBIO));
|
||||||
|
TCurrency spe(importo.valore()); spe.change_value(cam);
|
||||||
|
const TImporto imp_spe(importo.sezione(), spe.get_num());
|
||||||
|
saldaconto_val += imp_spe;
|
||||||
|
} else
|
||||||
|
if (tipo == 'K')
|
||||||
saldaconto_val += a.partite().importo_speso(numreg, i+1, TRUE, 0x1);
|
saldaconto_val += a.partite().importo_speso(numreg, i+1, TRUE, 0x1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (empty)
|
if (empty)
|
||||||
return f.error_box("Il movimento non ha nessuna riga contabile con un importo");
|
return f.error_box("Il movimento non ha nessuna riga contabile con un importo");
|
||||||
@ -1840,6 +1846,7 @@ bool TPrimanota_application::caus_query_handler(TMask_field& f, KEY key)
|
|||||||
f.set_focusdirty(FALSE);
|
f.set_focusdirty(FALSE);
|
||||||
return f.mask().stop_run(K_INS); // Entra in modo inserimento
|
return f.mask().stop_run(K_INS); // Entra in modo inserimento
|
||||||
} */
|
} */
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2294,7 +2301,7 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
cp.on_hit(); // lo ricopia eventualmente a pag.3
|
cp.on_hit(); // lo ricopia eventualmente a pag.3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cf == 'F')
|
if (cf == 'F' && app().causale().valintra())
|
||||||
{
|
{
|
||||||
const TString16 valintra(clifo.get("VALINTRA"));
|
const TString16 valintra(clifo.get("VALINTRA"));
|
||||||
if (!valintra.empty())
|
if (!valintra.empty())
|
||||||
@ -2849,4 +2856,3 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <prefix.h>
|
#include <prefix.h>
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
|
@ -136,6 +136,7 @@ class TMastrini_application : public TPrintapp
|
|||||||
TString _cdc;
|
TString _cdc;
|
||||||
real _totale_commessa_dare, _totale_commessa_avere, _saldo_commessa;
|
real _totale_commessa_dare, _totale_commessa_avere, _saldo_commessa;
|
||||||
|
|
||||||
|
|
||||||
TConfig* _collins;
|
TConfig* _collins;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -913,9 +914,7 @@ void TMastrini_application::fai_stampa132()
|
|||||||
set_row (_rw,"@11g$[b]#7ld$[n]", &_numreg);
|
set_row (_rw,"@11g$[b]#7ld$[n]", &_numreg);
|
||||||
else
|
else
|
||||||
if (_stampanum == 2)
|
if (_stampanum == 2)
|
||||||
{
|
|
||||||
set_row (_rw,"@11g#7ld", &_numgio);
|
set_row (_rw,"@11g#7ld", &_numgio);
|
||||||
}
|
|
||||||
|
|
||||||
set_row (_rw,"@19g#t", &_datadocs);
|
set_row (_rw,"@19g#t", &_datadocs);
|
||||||
set_row (_rw,"@30g#7t", &_numdoc);
|
set_row (_rw,"@30g#7t", &_numdoc);
|
||||||
@ -1005,14 +1004,28 @@ void TMastrini_application::fai_stampa198()
|
|||||||
set_row (_rw,"@42g#3t", &_codcaus);
|
set_row (_rw,"@42g#3t", &_codcaus);
|
||||||
|
|
||||||
// Stampa saldo movimenti / Descrizione contropartita
|
// Stampa saldo movimenti / Descrizione contropartita
|
||||||
|
const TRectype& rmov = current_cursor()->curr(LF_RMOV);
|
||||||
|
_gruppocontr = rmov.get_int(RMV_GRUPPOC);
|
||||||
|
_contocontr = rmov.get_int(RMV_CONTOC);
|
||||||
|
_sottocontocontr = rmov.get_long(RMV_SOTTOCONTOC);
|
||||||
|
_g_contr = rmov.get(RMV_GRUPPOC);
|
||||||
|
_c_contr = rmov.get(RMV_CONTOC);
|
||||||
|
_s_contr = rmov.get(RMV_SOTTOCONTOC);
|
||||||
|
|
||||||
if (_stampa_des_contro)
|
if (_stampa_des_contro)
|
||||||
{
|
{
|
||||||
TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
|
if (_sottocontocontr > 0)
|
||||||
|
{
|
||||||
|
TBill tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
|
||||||
_descrcontr.cut(0);
|
_descrcontr.cut(0);
|
||||||
_descrcontr << _g_contr << ' ' << _c_contr << ' ' << _s_contr << ' ' << tc.descrizione();
|
_descrcontr << _g_contr << ' ' << _c_contr << ' ' << _s_contr << ' ' << tc.descrizione();
|
||||||
_descrcontr.cut(47);
|
_descrcontr.cut(47);
|
||||||
set_row (_rw,"@135g#t", &_descrcontr);
|
set_row (_rw,"@135g%-48s", (const char*)_descrcontr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_descrcontr.cut(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1739,7 +1752,7 @@ bool TMastrini_application::preprocess_page(int file, int counter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_descrizione == "")
|
else if (_descrizione == "")
|
||||||
if (_descrizionemov != "")
|
if (_descrizionemov.not_empty())
|
||||||
{
|
{
|
||||||
//set_row (1,"@46g%.23s", (const char*) _descrcaus);
|
//set_row (1,"@46g%.23s", (const char*) _descrcaus);
|
||||||
//set_row (1,"@70g%.30s", (const char*) _descrizionemov);
|
//set_row (1,"@70g%.30s", (const char*) _descrizionemov);
|
||||||
@ -1749,7 +1762,6 @@ bool TMastrini_application::preprocess_page(int file, int counter)
|
|||||||
set_row (_rw,"@70g#a", _d30);
|
set_row (_rw,"@70g#a", _d30);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (_descrizionemov == "")
|
|
||||||
{
|
{
|
||||||
conto(_gruppocontr,_contocontr,FALSE);
|
conto(_gruppocontr,_contocontr,FALSE);
|
||||||
TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
|
TConto tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
|
||||||
@ -2028,6 +2040,7 @@ bool TMastrini_application::preprocess_page(int file, int counter)
|
|||||||
_riporto_parziale_dare += _importo;
|
_riporto_parziale_dare += _importo;
|
||||||
_totale_commessa_dare += _importo;
|
_totale_commessa_dare += _importo;
|
||||||
|
|
||||||
|
|
||||||
if (_numcarat == 1) // Stampa 132 caratteri
|
if (_numcarat == 1) // Stampa 132 caratteri
|
||||||
set_row (_rw,"@83g%s", (const char*) _importo_str);
|
set_row (_rw,"@83g%s", (const char*) _importo_str);
|
||||||
else
|
else
|
||||||
@ -2044,6 +2057,7 @@ bool TMastrini_application::preprocess_page(int file, int counter)
|
|||||||
_riporto_parziale_avere += _importo;
|
_riporto_parziale_avere += _importo;
|
||||||
_totale_commessa_avere += _importo;
|
_totale_commessa_avere += _importo;
|
||||||
|
|
||||||
|
|
||||||
if (_numcarat == 1) // Stampa 132 caratteri
|
if (_numcarat == 1) // Stampa 132 caratteri
|
||||||
set_row (_rw,"@100g%s", (const char*) _importo_str);
|
set_row (_rw,"@100g%s", (const char*) _importo_str);
|
||||||
else
|
else
|
||||||
@ -2202,8 +2216,9 @@ print_action TMastrini_application::postprocess_page(int file, int counter)
|
|||||||
reset_print();
|
reset_print();
|
||||||
if (_numcarat == 1)
|
if (_numcarat == 1)
|
||||||
stampa_totali132();
|
stampa_totali132();
|
||||||
else
|
else if (_numcarat == 2)
|
||||||
stampa_totali198();
|
stampa_totali198();
|
||||||
|
|
||||||
if (_stampatotiva)
|
if (_stampatotiva)
|
||||||
stampa_totaliiva();
|
stampa_totaliiva();
|
||||||
}
|
}
|
||||||
@ -2227,9 +2242,10 @@ print_action TMastrini_application::postprocess_page(int file, int counter)
|
|||||||
{
|
{
|
||||||
if (_numcarat == 1)
|
if (_numcarat == 1)
|
||||||
stampa_totali132();
|
stampa_totali132();
|
||||||
else
|
else if (_numcarat == 2)
|
||||||
stampa_totali198();
|
stampa_totali198();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_stampatotiva)
|
if (_stampatotiva)
|
||||||
stampa_totaliiva();
|
stampa_totaliiva();
|
||||||
}
|
}
|
||||||
@ -2314,6 +2330,7 @@ print_action TMastrini_application::postprocess_print(int file, int counter)
|
|||||||
|
|
||||||
_msk->reset(-9);
|
_msk->reset(-9);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NEXT_PAGE;
|
return NEXT_PAGE;
|
||||||
}
|
}
|
||||||
// Stampa dei totali documenti iva se richiesta
|
// Stampa dei totali documenti iva se richiesta
|
||||||
@ -2571,6 +2588,7 @@ bool TMastrini_application::set_print(int)
|
|||||||
_cdc.cut(0);
|
_cdc.cut(0);
|
||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -447,7 +447,7 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
|
|||||||
real cre_pre = 0.0;
|
real cre_pre = 0.0;
|
||||||
real acq_intr = 0.0;
|
real acq_intr = 0.0;
|
||||||
const bool isdifferita = is_differita(); // MI3262...
|
const bool isdifferita = is_differita(); // MI3262...
|
||||||
bool error = FALSE;
|
int error = FALSE;
|
||||||
|
|
||||||
TString16 tipo_acc;
|
TString16 tipo_acc;
|
||||||
|
|
||||||
|
@ -906,11 +906,8 @@ const TString& TBill::descrizione() const
|
|||||||
if (!myself.find())
|
if (!myself.find())
|
||||||
myself.set_description("Sconosciuto");
|
myself.set_description("Sconosciuto");
|
||||||
}
|
}
|
||||||
if (_descrizione == NULL)
|
|
||||||
// myself._descrizione = new TString;
|
|
||||||
return EMPTY_STRING;
|
|
||||||
|
|
||||||
return *_descrizione;
|
return _descrizione ? *_descrizione : (const TString&) EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TBill::tipo_cr() const
|
int TBill::tipo_cr() const
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
|
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <xvtility.h>
|
#include <xvtility.h>
|
||||||
@ -840,4 +841,3 @@ void TSaldo_agg::registra()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,6 +110,7 @@ public:
|
|||||||
bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil,int prov);
|
bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil,int prov);
|
||||||
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,int, const char* = NULL);
|
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,int, const char* = NULL);
|
||||||
|
|
||||||
|
|
||||||
bool ricerca_progr_prec(int, int, int, long);
|
bool ricerca_progr_prec(int, int, int, long);
|
||||||
|
|
||||||
real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, bool provvisori = FALSE);
|
real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, bool provvisori = FALSE);
|
||||||
@ -194,4 +195,3 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -649,7 +649,7 @@ long TTransfer_file::rec(int i)
|
|||||||
|
|
||||||
int TTransfer_file::num(char sigla)
|
int TTransfer_file::num(char sigla)
|
||||||
{
|
{
|
||||||
int items = _index.items();
|
const int items = _index.items();
|
||||||
TString16 dep;
|
TString16 dep;
|
||||||
|
|
||||||
for (int i = 0; i < items; i++)
|
for (int i = 0; i < items; i++)
|
||||||
|
@ -64,6 +64,8 @@ Item_05 = "Clienti/Fornitori", "cg0 -1", "F"
|
|||||||
Item_06 = "Agenti", "pr0 -4", ""
|
Item_06 = "Agenti", "pr0 -4", ""
|
||||||
Item_07 = "Cambi giornalieri", "ba3 -0 cam", ""
|
Item_07 = "Cambi giornalieri", "ba3 -0 cam", ""
|
||||||
Item_08 = "Esercizi", "cg0 -5 esc", "F"
|
Item_08 = "Esercizi", "cg0 -5 esc", "F"
|
||||||
|
Item_09 = "Commesse", "ba3 -0 cms", ""
|
||||||
|
Item_10 = "Fasi commesse", "ba3 -0 fsc", ""
|
||||||
|
|
||||||
[PRASSICG_008]
|
[PRASSICG_008]
|
||||||
Caption = "Stampa tabelle ditta"
|
Caption = "Stampa tabelle ditta"
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
PAGE "Stampa Natura Transazione" -1 -1 50 8
|
PAGE "Stampa Natura Transazione" -1 -1 50 8
|
||||||
|
|
||||||
NUMBER F_INIZIO1 1
|
STRING F_INIZIO1 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 1 "Da codice "
|
PROMPT 4 1 "Da codice "
|
||||||
|
FLAGS "U"
|
||||||
USE %INT
|
USE %INT
|
||||||
INPUT CODTAB F_INIZIO1
|
INPUT CODTAB F_INIZIO1
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -14,13 +15,13 @@ BEGIN
|
|||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_FINE1 1
|
STRING F_FINE1 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 3 "A codice "
|
PROMPT 4 3 "A codice "
|
||||||
|
FLAGS "U"
|
||||||
COPY USE F_INIZIO1
|
COPY USE F_INIZIO1
|
||||||
INPUT CODTAB F_FINE1
|
INPUT CODTAB F_FINE1
|
||||||
DISPLAY "Codice" CODTAB
|
COPY DISPLAY F_INIZIO1
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT F_FINE1 CODTAB
|
OUTPUT F_FINE1 CODTAB
|
||||||
FIELD CODTAB
|
FIELD CODTAB
|
||||||
GROUP 2
|
GROUP 2
|
||||||
|
@ -2,51 +2,77 @@
|
|||||||
|
|
||||||
PAGE "Stampa Dati Riassuntivi" -1 -1 60 8
|
PAGE "Stampa Dati Riassuntivi" -1 -1 60 8
|
||||||
|
|
||||||
|
LIST F_INIZIO0 1 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 1 "Tipo "
|
||||||
|
ITEM "A|Acquisti"
|
||||||
|
MESSAGE COPY,F_FINE0
|
||||||
|
ITEM "C|Cessioni"
|
||||||
|
MESSAGE COPY,F_FINE0
|
||||||
|
FIELD CODTAB[1,1]
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_INIZIO1 4
|
NUMBER F_INIZIO1 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 1 "Da anno "
|
PROMPT 4 3 "Da anno "
|
||||||
|
FLAGS "AZ"
|
||||||
USE IRD
|
USE IRD
|
||||||
INPUT CODTAB[1,4] F_INIZIO1
|
INPUT CODTAB[1,1] F_INIZIO0 SELECT
|
||||||
INPUT CODTAB[5,6] F_INIZIO2
|
INPUT CODTAB[2,5] F_INIZIO1
|
||||||
DISPLAY "Anno@15" CODTAB[1,4]
|
INPUT CODTAB[6,7] F_INIZIO2
|
||||||
DISPLAY "Mese@10" CODTAB[5,6]
|
DISPLAY "Tipo" CODTAB[1,1]
|
||||||
|
DISPLAY "Anno@15" CODTAB[2,5]
|
||||||
|
DISPLAY "Mese@10" CODTAB[6,7]
|
||||||
DISPLAY "N.dischetto@10" I0
|
DISPLAY "N.dischetto@10" I0
|
||||||
DISPLAY "Pagine@10" I1
|
DISPLAY "Pagine@10" I1
|
||||||
DISPLAY "Righe@10" I2
|
DISPLAY "Righe@10" I2
|
||||||
DISPLAY "Ammontare compl.@18" R0
|
DISPLAY "Ammontare compl.@18" R0
|
||||||
OUTPUT F_INIZIO1 CODTAB[1,4]
|
OUTPUT F_INIZIO1 CODTAB[2,5]
|
||||||
OUTPUT F_INIZIO2 CODTAB[5,6]
|
OUTPUT F_INIZIO2 CODTAB[6,7]
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
FIELD CODTAB[1,4]
|
FIELD CODTAB[2,5]
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_INIZIO2 20
|
LIST F_INIZIO2 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 1 "Da mese "
|
PROMPT 21 3 "Da mese "
|
||||||
FIELD CODTAB[5,6]
|
FIELD CODTAB[6,7]
|
||||||
FLAGS "MZ"
|
FLAGS "MZ"
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
|
LIST F_FINE0 1 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 4 "Tipo "
|
||||||
|
FLAGS "H"
|
||||||
|
ITEM "A|Acquisti"
|
||||||
|
ITEM "C|Cessioni"
|
||||||
|
FIELD CODTAB[1,1]
|
||||||
|
GROUP 2
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER F_FINE1 4
|
NUMBER F_FINE1 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 3 "A anno "
|
PROMPT 4 5 "Ad anno "
|
||||||
|
FLAGS "AZ"
|
||||||
COPY USE F_INIZIO1
|
COPY USE F_INIZIO1
|
||||||
INPUT CODTAB[1,4] F_FINE1
|
INPUT CODTAB[1,1] F_FINE0 SELECT
|
||||||
INPUT CODTAB[5,6] F_FINE2
|
INPUT CODTAB[2,5] F_FINE1
|
||||||
|
INPUT CODTAB[6,7] F_FINE2
|
||||||
COPY DISPLAY F_INIZIO1
|
COPY DISPLAY F_INIZIO1
|
||||||
OUTPUT F_FINE1 CODTAB[1,4]
|
OUTPUT F_FINE1 CODTAB[2,5]
|
||||||
OUTPUT F_FINE2 CODTAB[5,6]
|
OUTPUT F_FINE2 CODTAB[6,7]
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
FIELD CODTAB[1,4]
|
FIELD CODTAB[2,5]
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_FINE2 20
|
LIST F_FINE2 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 3 "A mese "
|
PROMPT 21 5 "A mese "
|
||||||
FIELD CODTAB[5,6]
|
FIELD CODTAB[6,7]
|
||||||
FLAGS "MZ"
|
FLAGS "MZ"
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
@ -3,9 +3,7 @@
|
|||||||
Tabella Natura Transazione
|
Tabella Natura Transazione
|
||||||
1|@3g%s|Codice
|
1|@3g%s|Codice
|
||||||
1|@10g%s|Denominazione
|
1|@10g%s|Denominazione
|
||||||
1|@62g%s|Op.Triangolari
|
|
||||||
|
|
||||||
[Rows]
|
[Rows]
|
||||||
1|CODTAB|@3g@4,ls
|
1|CODTAB|@3g@4,ls
|
||||||
1|S0|@10g@50,ls
|
1|S0|@10g@50,ls
|
||||||
1|S7|@62g@1,ls
|
|
||||||
|
@ -13,9 +13,10 @@ BEGIN
|
|||||||
PROMPT 1 1 "@bNatura Transazione"
|
PROMPT 1 1 "@bNatura Transazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODICE 1
|
STRING F_CODICE 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Codice "
|
PROMPT 2 3 "Codice "
|
||||||
|
FLAGS "U"
|
||||||
USE %INT
|
USE %INT
|
||||||
INPUT CODTAB F_CODICE
|
INPUT CODTAB F_CODICE
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -33,20 +34,13 @@ BEGIN
|
|||||||
USE %INT KEY 2
|
USE %INT KEY 2
|
||||||
INPUT S0 F_DESCR
|
INPUT S0 F_DESCR
|
||||||
DISPLAY "Descrizione@70" S0
|
DISPLAY "Descrizione@70" S0
|
||||||
DISPLAY "Codice@8" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
COPY OUTPUT F_CODICE
|
COPY OUTPUT F_CODICE
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
FIELD S0
|
FIELD S0
|
||||||
KEY 2
|
KEY 2
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TRIANG 1
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 8 "Operazioni triangolari "
|
|
||||||
FLAGS "U"
|
|
||||||
FILED S7
|
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
16
in/batbird.h
16
in/batbird.h
@ -1,6 +1,10 @@
|
|||||||
#define F_ANNO 101
|
#define F_TIPO 101
|
||||||
#define F_MESE 102
|
#define F_ANNO 102
|
||||||
#define F_NDKT 103
|
#define F_MESE 103
|
||||||
#define F_PAGINE 104
|
#define F_NDKT 104
|
||||||
#define F_RIGHE 105
|
#define F_PAGINE 105
|
||||||
#define F_AMM_COMP 106
|
#define F_RIGHE 106
|
||||||
|
#define F_RETT 107
|
||||||
|
#define F_AMM_COMP 108
|
||||||
|
#define F_AMM_RETT 109
|
||||||
|
|
||||||
|
@ -1,18 +1,21 @@
|
|||||||
[Headers]
|
[Headers]
|
||||||
80
|
80
|
||||||
Tabella Dati Riassuntivi
|
Tabella Dati Riassuntivi
|
||||||
1|@3g%s|Anno
|
1|@1g%s|Tipo
|
||||||
1|@10g%s|Mese
|
1|@8g%s|Anno
|
||||||
1|@15g%s|N.ro Disc.
|
1|@13g%s|Mese
|
||||||
1|@28g%s|Pagine
|
1|@18g%s|Disco
|
||||||
1|@38g%s|Righe
|
1|@24g%s|Righe riep.
|
||||||
1|@45g%s|Ammontare complessivo
|
1|@36g%s|Amm. riepil.
|
||||||
|
1|@49g%s|Righe rett.
|
||||||
|
1|@62g%s|Amm. rettif.
|
||||||
|
|
||||||
[Rows]
|
[Rows]
|
||||||
1|CODTAB[1,4]|@3g@4,rs
|
1|CODTAB[1,1]|@4g@1,rs
|
||||||
1|CODTAB[5,6]|@10g@2,rs
|
1|CODTAB[2,5]|@8g@4,rs
|
||||||
|
1|CODTAB[6,7]|@13g@2,rs
|
||||||
1|I0|@21g@4,rn
|
1|I0|@19g@4,rn
|
||||||
1|I1|@27g@7,rn
|
1|I2|@30g@5,rn
|
||||||
1|I2|@36g@7,rn
|
1|R0|@36g@12,rpn|#########,@@
|
||||||
1|R0|@48g@18,rpn|.2
|
1|I3|@55g@5,rn
|
||||||
|
1|R1|@62g@12,rpn|#########,@@
|
@ -13,30 +13,42 @@ BEGIN
|
|||||||
PROMPT 1 1 "@bDati Riassuntivi"
|
PROMPT 1 1 "@bDati Riassuntivi"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_MESE 20
|
LIST F_TIPO 1 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Mese "
|
PROMPT 2 2 "Tipo "
|
||||||
FLAGS "MZ"
|
ITEM "A|Acquisti"
|
||||||
FIELD CODTAB[5,6]
|
ITEM "C|Cessioni"
|
||||||
|
FIELD CODTAB[1,1]
|
||||||
KEY 1
|
KEY 1
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_ANNO 4
|
NUMBER F_ANNO 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 46 2 "Anno "
|
PROMPT 35 2 "Anno "
|
||||||
|
FLAGS "AZ"
|
||||||
USE IRD
|
USE IRD
|
||||||
INPUT CODTAB[1,4] F_ANNO
|
INPUT CODTAB[1,1] F_TIPO SELECT
|
||||||
INPUT CODTAB[5,6] F_MESE
|
INPUT CODTAB[2,5] F_ANNO
|
||||||
DISPLAY "Anno@15" CODTAB[1,4]
|
INPUT CODTAB[6,7] F_MESE
|
||||||
DISPLAY "Mese@10" CODTAB[5,6]
|
DISPLAY "Tipo" CODTAB[1,1]
|
||||||
|
DISPLAY "Anno@15" CODTAB[2,5]
|
||||||
|
DISPLAY "Periodo@10" CODTAB[6,7]
|
||||||
DISPLAY "N.dischetto@10" I0
|
DISPLAY "N.dischetto@10" I0
|
||||||
DISPLAY "Pagine@10" I1
|
DISPLAY "Riepiloghi@10" I2
|
||||||
DISPLAY "Righe@10" I2
|
DISPLAY "Rettifiche@10" I3
|
||||||
DISPLAY "Ammontare compl.@18" R0
|
OUTPUT F_ANNO CODTAB[2,5]
|
||||||
OUTPUT F_ANNO CODTAB[1,4]
|
OUTPUT F_MESE CODTAB[6,7]
|
||||||
OUTPUT F_MESE CODTAB[5,6]
|
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
FIELD CODTAB[1,4]
|
FIELD CODTAB[2,5]
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_MESE 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 56 2 "Periodo "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY ALL F_ANNO
|
||||||
|
FIELD CODTAB[6,7]
|
||||||
KEY 1
|
KEY 1
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -46,24 +58,31 @@ BEGIN
|
|||||||
FIELD I0
|
FIELD I0
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_PAGINE 7
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 6 "Pagine "
|
|
||||||
FIELD I1
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_RIGHE 7
|
NUMBER F_RIGHE 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Righe "
|
PROMPT 2 6 "Righe riepilogo "
|
||||||
FIELD I2
|
FIELD I2
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_RETT 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Righe rettifica "
|
||||||
|
FIELD I3
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
CURRENCY F_AMM_COMP 18
|
CURRENCY F_AMM_COMP 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Ammontare Compl. "
|
PROMPT 36 6 "Ammontare Riepiloghi "
|
||||||
FIELD R0
|
FIELD R0
|
||||||
END
|
END
|
||||||
|
|
||||||
|
CURRENCY F_AMM_RETT 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 7 "Ammontare Rettifiche "
|
||||||
|
FIELD R1
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -4,7 +4,7 @@ NUMREG|3|7|0|Numero registrazione
|
|||||||
NUMRIG|2|3|0|Numero di riga
|
NUMRIG|2|3|0|Numero di riga
|
||||||
AMMLIRE|4|18|2|Ammontare in lire
|
AMMLIRE|4|18|2|Ammontare in lire
|
||||||
AMMVALUTA|4|18|2|Ammontare in valuta
|
AMMVALUTA|4|18|2|Ammontare in valuta
|
||||||
NATURA|2|1|0|Natura della transazione
|
NATURA|1|1|0|Natura della transazione
|
||||||
CONSEGNA|1|3|0|Condizioni di consegna
|
CONSEGNA|1|3|0|Condizioni di consegna
|
||||||
TRASPORTO|6|1|0|Tipo di trasporto
|
TRASPORTO|6|1|0|Tipo di trasporto
|
||||||
NOMENCL|1|8|0|Nomenclatura
|
NOMENCL|1|8|0|Nomenclatura
|
||||||
|
@ -6,7 +6,7 @@ PERIODO|9|2|0|Periodo (Mese[1,12] / Trimestre[1,4] / Anno [1.,1])
|
|||||||
NUMRIG|3|7|0|Numero riga
|
NUMRIG|3|7|0|Numero riga
|
||||||
STATO|1|2|0|Codice ISO dello Stato CEE
|
STATO|1|2|0|Codice ISO dello Stato CEE
|
||||||
PIVA|1|13|0|Partita IVA Cliente/Fornitore
|
PIVA|1|13|0|Partita IVA Cliente/Fornitore
|
||||||
NATURA|7|1|0|Natura della transazione
|
NATURA|1|1|0|Natura della transazione
|
||||||
NOMENCL|1|8|0|Nomenclatura combinata
|
NOMENCL|1|8|0|Nomenclatura combinata
|
||||||
CONSEGNA|1|3|0|Condizioni di consegna
|
CONSEGNA|1|3|0|Condizioni di consegna
|
||||||
TRASPORTO|2|1|0|Tipo di trasporto [1,9]
|
TRASPORTO|2|1|0|Tipo di trasporto [1,9]
|
||||||
|
10
in/in0.cpp
10
in/in0.cpp
@ -7,11 +7,11 @@ int main(int argc, char** argv)
|
|||||||
const int n = (argc > 1) ? (argv[1][1]-'0') : 0;
|
const int n = (argc > 1) ? (argv[1][1]-'0') : 0;
|
||||||
switch (n)
|
switch (n)
|
||||||
{
|
{
|
||||||
case 0 : in0100(argc, argv); break; // stampa
|
case 0 : in0100(argc, argv); break; // stampa riepiloghi
|
||||||
case 1 : in0200(argc, argv); break; // dischetti
|
case 1 : in0200(argc, argv); break; // generazione dischetti
|
||||||
case 5 : in0600(argc, argv); break; // riepiloghi
|
case 5 : in0600(argc, argv); break; // gestione riepiloghi
|
||||||
case 6 : in0700(argc, argv); break; // rettifiche
|
case 6 : in0700(argc, argv); break; // gestione rettifiche
|
||||||
default: in0500(argc, argv); break; // movimenti
|
default: in0500(argc, argv); break; // gestione movimenti
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -29,11 +29,15 @@ class TStampaIntra_form : public TForm
|
|||||||
real _riportoprec1, _riportoprec2; // Riporto pagina prec. per sezioni 1 e 2
|
real _riportoprec1, _riportoprec2; // Riporto pagina prec. per sezioni 1 e 2
|
||||||
real _totaleprog1, _totaleprog2; // Totale progressivo per pagina, sezioni 1 e 2
|
real _totaleprog1, _totaleprog2; // Totale progressivo per pagina, sezioni 1 e 2
|
||||||
|
|
||||||
|
int _decimals;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void print_page(const pagetype p);
|
void print_page(const pagetype p);
|
||||||
const bool good() const;
|
const bool good() const;
|
||||||
virtual bool validate(TForm_item& fld, TToken_string& val);
|
virtual bool validate(TForm_item& fld, TToken_string& val);
|
||||||
|
|
||||||
|
real amm_euro(const TRectype& rec) const; // Ammontare arrotondato
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void print();
|
void print();
|
||||||
TStampaIntra_form (const char* name, char t, char f, int p, int a);
|
TStampaIntra_form (const char* name, char t, char f, int p, int a);
|
||||||
@ -46,10 +50,8 @@ bool TStampaIntra_form::validate(TForm_item& fld, TToken_string& val)
|
|||||||
|
|
||||||
if (code== "_IMP")
|
if (code== "_IMP")
|
||||||
{
|
{
|
||||||
real num(fld.get());
|
real num = fld.get();
|
||||||
const int ndec = TCurrency::get_firm_dec() > 0 ? 0 : -3;
|
num.round(_decimals);
|
||||||
|
|
||||||
num.round(ndec);
|
|
||||||
fld.set(num.string());
|
fld.set(num.string());
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -58,7 +60,6 @@ bool TStampaIntra_form::validate(TForm_item& fld, TToken_string& val)
|
|||||||
{
|
{
|
||||||
real num(fld.get());
|
real num(fld.get());
|
||||||
const int ndec = val.get_int();
|
const int ndec = val.get_int();
|
||||||
|
|
||||||
num.round(ndec);
|
num.round(ndec);
|
||||||
fld.set(num.string());
|
fld.set(num.string());
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -82,6 +83,8 @@ TStampaIntra_form::TStampaIntra_form(const char* name, char t, char f, int p, in
|
|||||||
t++;
|
t++;
|
||||||
dep.put("TIPO", t);
|
dep.put("TIPO", t);
|
||||||
_rettifiche = new TRecord_array(dep, "NUMRIG");
|
_rettifiche = new TRecord_array(dep, "NUMRIG");
|
||||||
|
|
||||||
|
_decimals = is_euro_value(NULL) ? 0 : -3; // Arrotonda all'Euro o alle 1000 Lire
|
||||||
}
|
}
|
||||||
|
|
||||||
TStampaIntra_form::~TStampaIntra_form()
|
TStampaIntra_form::~TStampaIntra_form()
|
||||||
@ -97,6 +100,14 @@ const bool TStampaIntra_form::good() const
|
|||||||
return _index1 <= _riepiloghi->rows() || _index2 <= _rettifiche->rows();
|
return _index1 <= _riepiloghi->rows() || _index2 <= _rettifiche->rows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ricava l'ammontare in Euro arrotondato da un record
|
||||||
|
real TStampaIntra_form::amm_euro(const TRectype& rec) const
|
||||||
|
{
|
||||||
|
real amm = rec.get("AMMLIRE"); // Nome obsoleto
|
||||||
|
amm.round(_decimals);
|
||||||
|
return amm;
|
||||||
|
}
|
||||||
|
|
||||||
void TStampaIntra_form::print_page(const pagetype p)
|
void TStampaIntra_form::print_page(const pagetype p)
|
||||||
{
|
{
|
||||||
TString16 ws;
|
TString16 ws;
|
||||||
@ -138,7 +149,10 @@ void TStampaIntra_form::print_page(const pagetype p)
|
|||||||
{
|
{
|
||||||
if (p == first_page || (not_first && index <= max))
|
if (p == first_page || (not_first && index <= max))
|
||||||
{
|
{
|
||||||
ps->find_field(_frequenza == "M" ? 1 : 2).set(_periodo);
|
if (_frequenza[0] == 'M')
|
||||||
|
ps->find_field(1).set(_periodo); else
|
||||||
|
if (_frequenza[0] == 'T')
|
||||||
|
ps->find_field(2).set(_periodo);
|
||||||
ps->find_field(3).set(_anno);
|
ps->find_field(3).set(_anno);
|
||||||
if (p == first_page)
|
if (p == first_page)
|
||||||
ps->find_field(4).set(_frequenza);
|
ps->find_field(4).set(_frequenza);
|
||||||
@ -158,7 +172,9 @@ void TStampaIntra_form::print_page(const pagetype p)
|
|||||||
ps->find_field(4).set(ws);
|
ps->find_field(4).set(ws);
|
||||||
ws.format("%d", _totrow2);
|
ws.format("%d", _totrow2);
|
||||||
ps->find_field(5).set(ws);
|
ps->find_field(5).set(ws);
|
||||||
ps->find_field(6).set(_tot2.string());
|
ws = _tot2.string();
|
||||||
|
ps->find_field(6).set(ws);
|
||||||
|
|
||||||
ps->update();
|
ps->update();
|
||||||
}
|
}
|
||||||
else // Footers ODD/EVEN
|
else // Footers ODD/EVEN
|
||||||
@ -170,9 +186,27 @@ void TStampaIntra_form::print_page(const pagetype p)
|
|||||||
|
|
||||||
if (pgn <= totpgn)
|
if (pgn <= totpgn)
|
||||||
{
|
{
|
||||||
|
ws = rrip.string();
|
||||||
|
if (!is_odd_page) // Gestione segno riporto rettifiche
|
||||||
|
{
|
||||||
|
const bool neg = ws[0] == '-';
|
||||||
|
ps->find_field(4).set(rrip.is_zero() ? "" : (neg ? "-" : "+"));
|
||||||
|
if (neg)
|
||||||
|
ws.ltrim(1);
|
||||||
|
}
|
||||||
|
ps->find_field(1).set(ws);
|
||||||
|
|
||||||
|
ws = rtot.string();
|
||||||
|
if (!is_odd_page) // Gestione segno totale rettifiche
|
||||||
|
{
|
||||||
|
const bool neg = ws[0] == '-';
|
||||||
|
ps->find_field(7).set(rtot.is_zero() ? "" : (neg ? "-" : "+"));
|
||||||
|
if (neg)
|
||||||
|
ws.ltrim(1);
|
||||||
|
}
|
||||||
|
ps->find_field(2).set(ws);
|
||||||
|
|
||||||
ws.format("%d", pgn);
|
ws.format("%d", pgn);
|
||||||
ps->find_field(1).set(rrip.string());
|
|
||||||
ps->find_field(2).set(rtot.string());
|
|
||||||
ps->find_field(3).set(ws);
|
ps->find_field(3).set(ws);
|
||||||
pgn++;
|
pgn++;
|
||||||
ps->update();
|
ps->update();
|
||||||
@ -189,9 +223,25 @@ void TStampaIntra_form::print_page(const pagetype p)
|
|||||||
if (index <= max)
|
if (index <= max)
|
||||||
{
|
{
|
||||||
const TRectype& rec = ra->row(index);
|
const TRectype& rec = ra->row(index);
|
||||||
relation()->lfile(LF_RIEPRETT).curr() = rec;
|
relation()->curr(LF_RIEPRETT) = rec;
|
||||||
|
|
||||||
|
real ammontare = amm_euro(rec);
|
||||||
|
if (!is_odd_page) // Rettifiche
|
||||||
|
{
|
||||||
|
const TString8 mese = _frequenza[0] == 'M' ? rec.get("PERETT") : "0";
|
||||||
|
const TString8 trim = _frequenza[0] == 'T' ? rec.get("PERETT") : "0";
|
||||||
|
ps->find_field(2).set(mese);
|
||||||
|
ps->find_field(3).set(trim);
|
||||||
|
|
||||||
|
// Controlla il segno delle rettifiche
|
||||||
|
if (rec.get_char("SEGNORETT") == '-')
|
||||||
|
ammontare = -ammontare;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Incrementa progressivi
|
||||||
real& rtot = is_odd_page ? _totaleprog1 : _totaleprog2;
|
real& rtot = is_odd_page ? _totaleprog1 : _totaleprog2;
|
||||||
rtot += rec.get_real("AMMLIRE");
|
rtot += ammontare;
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
ps->update();
|
ps->update();
|
||||||
}
|
}
|
||||||
@ -237,15 +287,15 @@ void TStampaIntra_form::print()
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 1; i <= _totrow1; i++)
|
for (int i = 1; i <= _totrow1; i++)
|
||||||
_tot1 += _riepiloghi->row(i).get_real("AMMLIRE");
|
_tot1 += amm_euro(_riepiloghi->row(i));
|
||||||
|
|
||||||
for (i = 1; i <= _totrow2; i++)
|
for (i = 1; i <= _totrow2; i++)
|
||||||
{
|
{
|
||||||
const TRectype& rec = _rettifiche->row(i);
|
const TRectype& rec = _rettifiche->row(i);
|
||||||
if (rec.get_char("SEGNORETT") == '-')
|
if (rec.get_char("SEGNORETT") == '-')
|
||||||
_tot2 -= rec.get_real("AMMLIRE");
|
_tot2 -= amm_euro(rec);
|
||||||
else
|
else
|
||||||
_tot2 += rec.get_real("AMMLIRE");
|
_tot2 += amm_euro(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Posiziona la relazione principale (ditta corrente)
|
//Posiziona la relazione principale (ditta corrente)
|
||||||
|
101
in/in0200.cpp
101
in/in0200.cpp
@ -130,8 +130,7 @@ void TRecord_intra::reset(const TIntra_context& ic)
|
|||||||
put("EUROA", 1, 5);
|
put("EUROA", 1, 5);
|
||||||
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
|
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
|
||||||
TString16 cod;
|
TString16 cod;
|
||||||
cod << ditta.get_char(NDT_TIPOA) << '|';
|
cod.format("%c|%ld", ditta.get_char(NDT_TIPOA), ditta.get_long(NDT_CODANAGR));
|
||||||
cod << ditta.get(NDT_CODANAGR);
|
|
||||||
const TRectype& anagr = cache().get(LF_ANAG, cod);
|
const TRectype& anagr = cache().get(LF_ANAG, cod);
|
||||||
put(anagr.get(ANA_PAIV), 6, 11);
|
put(anagr.get(ANA_PAIV), 6, 11);
|
||||||
put(ic._progr, 17, 6);
|
put(ic._progr, 17, 6);
|
||||||
@ -167,7 +166,7 @@ void TRecord_intra::genera_testata(const TIntra_context& ic)
|
|||||||
cod.cut(0);
|
cod.cut(0);
|
||||||
cod << ditta.get_char("TIPOSOGDEL") << '|';
|
cod << ditta.get_char("TIPOSOGDEL") << '|';
|
||||||
cod << ditta.get("CODSOGDEL");
|
cod << ditta.get("CODSOGDEL");
|
||||||
if (cod.len() > 8)
|
if (cod.len() >= 3)
|
||||||
{
|
{
|
||||||
const TRectype& sogdel = cache().get(LF_ANAG, cod);
|
const TRectype& sogdel = cache().get(LF_ANAG, cod);
|
||||||
put(sogdel.get(ANA_PAIV), 48, 11);
|
put(sogdel.get(ANA_PAIV), 48, 11);
|
||||||
@ -197,7 +196,7 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
|||||||
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
||||||
put(rec.get_real("AMMVALUTA"), 56, 13);
|
put(rec.get_real("AMMVALUTA"), 56, 13);
|
||||||
put(rec.get_char("NATURA"), 69);
|
put(rec.get_char("NATURA"), 69);
|
||||||
put(rec.get("NOMENCL"), 70, 8, "RZ");
|
put(rec.get("NOMENCL"), 70, 8, "Z");
|
||||||
if (ic._freq == 'M')
|
if (ic._freq == 'M')
|
||||||
{
|
{
|
||||||
put(rec.get_real("MASSAKG"), 78, 10, 0);
|
put(rec.get_real("MASSAKG"), 78, 10, 0);
|
||||||
@ -230,7 +229,7 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
|||||||
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
|
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
|
||||||
put(rec.get_real("AMMVALUTA"), 62, 13);
|
put(rec.get_real("AMMVALUTA"), 62, 13);
|
||||||
put(rec.get_char("NATURA"), 75);
|
put(rec.get_char("NATURA"), 75);
|
||||||
put(rec.get("NOMENCL"), 76, 8, "RZ");
|
put(rec.get("NOMENCL"), 76, 8, "Z");
|
||||||
if (ic._freq == 'M')
|
if (ic._freq == 'M')
|
||||||
put(rec.get_real("VALSTAT"), 84, 13, _ndec);
|
put(rec.get_real("VALSTAT"), 84, 13, _ndec);
|
||||||
else
|
else
|
||||||
@ -243,7 +242,7 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
|||||||
put(rec.get("PIVA"), 31, 12);
|
put(rec.get("PIVA"), 31, 12);
|
||||||
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
||||||
put(rec.get_char("NATURA"), 56);
|
put(rec.get_char("NATURA"), 56);
|
||||||
put(rec.get("NOMENCL"), 57, 8, "RZ");
|
put(rec.get("NOMENCL"), 57, 8, "Z");
|
||||||
if (ic._freq == 'M')
|
if (ic._freq == 'M')
|
||||||
{
|
{
|
||||||
put(rec.get_real("MASSAKG"), 65, 10);
|
put(rec.get_real("MASSAKG"), 65, 10);
|
||||||
@ -274,7 +273,7 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
|||||||
put(rec.get("SEGNORETT"), 48, 1);
|
put(rec.get("SEGNORETT"), 48, 1);
|
||||||
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
|
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
|
||||||
put(rec.get("NATURA"), 62, 1);
|
put(rec.get("NATURA"), 62, 1);
|
||||||
put(rec.get("NOMENCL"), 63, 8, "RZ");
|
put(rec.get("NOMENCL"), 63, 8, "Z");
|
||||||
if (ic._freq == 'M')
|
if (ic._freq == 'M')
|
||||||
put(rec.get_real("VALSTAT"), 71, 13, _ndec);
|
put(rec.get_real("VALSTAT"), 71, 13, _ndec);
|
||||||
else
|
else
|
||||||
@ -319,23 +318,28 @@ protected:
|
|||||||
void proponi_numero();
|
void proponi_numero();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void genera_dischetto();
|
void genera_dischetto(char tip, int mode = 0);
|
||||||
|
|
||||||
TDischetto_mask();
|
TDischetto_mask();
|
||||||
};
|
};
|
||||||
|
|
||||||
void TDischetto_mask::proponi_numero()
|
void TDischetto_mask::proponi_numero()
|
||||||
{
|
{
|
||||||
|
const char tip = tipo();
|
||||||
int a = anno(), p = periodo();
|
int a = anno(), p = periodo();
|
||||||
long d = 0;
|
long d = 0;
|
||||||
|
|
||||||
TTable ird("IRD");
|
TTable ird("IRD");
|
||||||
if (ird.last() == NOERR)
|
int err = ird.last();
|
||||||
|
while (err == NOERR)
|
||||||
{
|
{
|
||||||
const TString& str = ird.get("CODTAB");
|
const TString16 str = ird.get("CODTAB");
|
||||||
a = atoi(str.mid(0,4));
|
a = atoi(str.mid(1,4));
|
||||||
p = atoi(str.mid(4,2));
|
p = atoi(str.mid(5,2));
|
||||||
d = ird.get_long("I0");
|
d = ird.get_long("I0");
|
||||||
|
if (tip == 'T' || tip == str[0])
|
||||||
|
break;
|
||||||
|
err = ird.prev();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (anno() > a || periodo() > p)
|
if (anno() > a || periodo() > p)
|
||||||
@ -351,8 +355,24 @@ bool TDischetto_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
|||||||
{
|
{
|
||||||
case F_ANNO:
|
case F_ANNO:
|
||||||
if (e == fe_init || e == fe_modify)
|
if (e == fe_init || e == fe_modify)
|
||||||
|
{
|
||||||
|
const int anno = atoi(o.get());
|
||||||
|
const char fa = frequenza(anno, 'A');
|
||||||
|
const char fc = frequenza(anno, 'C');
|
||||||
|
TList_field& list = (TList_field&)field(type_field());
|
||||||
|
TToken_string codes = "A|C";
|
||||||
|
TToken_string descr = "Acquisti|Cessioni";
|
||||||
|
if (fa == fc)
|
||||||
|
{
|
||||||
|
codes.add("T");
|
||||||
|
descr.add("Tutti");
|
||||||
|
}
|
||||||
|
list.replace_items(codes, descr);
|
||||||
|
|
||||||
proponi_numero();
|
proponi_numero();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
case F_TIPO:
|
||||||
case F_PERIODO_M:
|
case F_PERIODO_M:
|
||||||
case F_PERIODO_T:
|
case F_PERIODO_T:
|
||||||
case F_PERIODO_A:
|
case F_PERIODO_A:
|
||||||
@ -361,7 +381,16 @@ bool TDischetto_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
|||||||
break;
|
break;
|
||||||
case F_RIEPILOGHI:
|
case F_RIEPILOGHI:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
::genera_riepiloghi(tipo(), anno(), periodo());
|
{
|
||||||
|
const char tip = tipo();
|
||||||
|
if (tip == 'T')
|
||||||
|
{
|
||||||
|
::genera_riepiloghi('A', anno(), periodo());
|
||||||
|
::genera_riepiloghi('C', anno(), periodo());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
::genera_riepiloghi(tip, anno(), periodo());
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
@ -420,23 +449,29 @@ bool TDischetto_mask::write_record(ofstream& out, const TRecord_intra& rec, TInt
|
|||||||
return good;
|
return good;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDischetto_mask::genera_dischetto()
|
// mode 0 = ask; 1 = append; 2 = remove
|
||||||
|
void TDischetto_mask::genera_dischetto(char tip, int mode)
|
||||||
{
|
{
|
||||||
TIntra_context ic;
|
TIntra_context ic;
|
||||||
ic._tipo = tipo();
|
ic._tipo = tip;
|
||||||
ic._anno = anno();
|
ic._anno = anno();
|
||||||
ic._freq = frequenza(ic._anno);
|
ic._freq = frequenza(ic._anno);
|
||||||
ic._periodo = periodo();
|
ic._periodo = periodo();
|
||||||
ic._progr = get_long(F_NUMERO);
|
ic._progr = get_long(F_NUMERO);
|
||||||
|
|
||||||
TString16 codtab; codtab.format("%04d%02d", ic._anno, ic._periodo);
|
TString16 codtab; codtab.format("%c%04d%02d", ic._tipo, ic._anno, ic._periodo);
|
||||||
|
|
||||||
TTable ird("IRD");
|
TTable ird("IRD");
|
||||||
ird.put("CODTAB", codtab);
|
ird.put("CODTAB", codtab);
|
||||||
const bool exist = ird.read() == NOERR;
|
const bool exist = ird.read() == NOERR;
|
||||||
|
|
||||||
if (exist && !yesno_box("Il periodo indicato è già stato generato:\nsi desidera proseguire"))
|
if (exist)
|
||||||
|
{
|
||||||
|
const char* ac = tip == 'A' ? "agli acquisti" : "alle cessioni";
|
||||||
|
if (!yesno_box("Il dischetto relativo %s del periodo indicato è già stato generato:\n"
|
||||||
|
"Si desidera proseguire ugualmente?", ac))
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
TRelation rel(LF_RIEPRETT);
|
TRelation rel(LF_RIEPRETT);
|
||||||
TRectype filter(LF_RIEPRETT);
|
TRectype filter(LF_RIEPRETT);
|
||||||
@ -459,8 +494,15 @@ void TDischetto_mask::genera_dischetto()
|
|||||||
|
|
||||||
if (name.exist())
|
if (name.exist())
|
||||||
{
|
{
|
||||||
if (yesno_box("Il file %s, esiste gia': si desiderla eliminarlo?",
|
bool do_remove = (mode == 2);
|
||||||
(const char*)name))
|
if (mode == 0)
|
||||||
|
{
|
||||||
|
do_remove = yesno_box("Il file %s, esiste gia': si desiderla eliminarlo?\n"
|
||||||
|
"Rispondendo SI i dati sul dischetto verranno azzerati.\n"
|
||||||
|
"Rispondendo NO i dati verranno accodati a quelli già presenti",
|
||||||
|
(const char*)name);
|
||||||
|
}
|
||||||
|
if (do_remove)
|
||||||
::remove(name);
|
::remove(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -500,13 +542,17 @@ void TDischetto_mask::genera_dischetto()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
codtab.format("%04d%02d", ic._anno, ic._periodo);
|
codtab.format("%c%04d%02d", ic._tipo, ic._anno, ic._periodo);
|
||||||
|
|
||||||
ird.put("CODTAB", codtab);
|
ird.put("CODTAB", codtab);
|
||||||
ird.put("I0", ic._progr); // Numero progressivo dischetto
|
ird.put("I0", ic._progr); // Numero progressivo dischetto
|
||||||
// ird.put("I1", ??? );
|
// ird.put("I1", ??? );
|
||||||
ird.put("I2", total);
|
ird.put("I2", ic._righe_riep);
|
||||||
ird.put("R0", ic._totale_riep + ic._totale_rett);
|
ird.put("I3", ic._righe_rett);
|
||||||
|
|
||||||
|
ird.put("R0", ic._totale_riep);
|
||||||
|
ird.put("R1", ic._totale_rett);
|
||||||
|
|
||||||
if (exist)
|
if (exist)
|
||||||
ird.rewrite();
|
ird.rewrite();
|
||||||
else
|
else
|
||||||
@ -533,7 +579,16 @@ void TDischetto_app::main_loop()
|
|||||||
LF_INTRA, LF_RINTRA, LF_RIEPRETT, 0);
|
LF_INTRA, LF_RINTRA, LF_RIEPRETT, 0);
|
||||||
TDischetto_mask m;
|
TDischetto_mask m;
|
||||||
while (m.run() == K_ENTER)
|
while (m.run() == K_ENTER)
|
||||||
m.genera_dischetto();
|
{
|
||||||
|
const char tip = m.tipo();
|
||||||
|
if (tip == 'T')
|
||||||
|
{
|
||||||
|
m.genera_dischetto('A', 2);
|
||||||
|
m.genera_dischetto('C', 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m.genera_dischetto(tip);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int in0200(int argc, char* argv[])
|
int in0200(int argc, char* argv[])
|
||||||
|
@ -5,8 +5,8 @@ PAGE "Generazione Dischetti INTRA" -1 -1 40 9
|
|||||||
LIST F_TIPO 1 10
|
LIST F_TIPO 1 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Tipo riepilogo "
|
PROMPT 1 1 "Tipo riepilogo "
|
||||||
ITEM "C|Cessioni"
|
|
||||||
ITEM "A|Acquisti"
|
ITEM "A|Acquisti"
|
||||||
|
ITEM "C|Cessioni"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_ANNO 4
|
NUMBER F_ANNO 4
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
|
|
||||||
class TImmissione_mask : public TIntra_mask
|
class TImmissione_mask : public TIntra_mask
|
||||||
{
|
{
|
||||||
|
private:
|
||||||
|
bool _caus_valintra;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual short type_field() const { return F_TIPO_MOV; }
|
virtual short type_field() const { return F_TIPO_MOV; }
|
||||||
virtual int anno() const { return get_date(F_DATA_REG).year(); }
|
virtual int anno() const { return get_date(F_DATA_REG).year(); }
|
||||||
@ -26,6 +29,8 @@ protected:
|
|||||||
bool on_sheet_event(TSheet_field& s, TField_event e, int row);
|
bool on_sheet_event(TSheet_field& s, TField_event e, int row);
|
||||||
bool on_sheet_field_event(TOperable_field& o, TField_event e, long jolly);
|
bool on_sheet_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
void enable_valuta();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TImmissione_mask();
|
TImmissione_mask();
|
||||||
virtual ~TImmissione_mask() { }
|
virtual ~TImmissione_mask() { }
|
||||||
@ -57,6 +62,13 @@ TImmissione_intra& app() { return (TImmissione_intra&)main_app(); }
|
|||||||
// TImmissione_mask
|
// TImmissione_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TImmissione_mask::enable_valuta()
|
||||||
|
{
|
||||||
|
const bool gestval = _caus_valintra || tipo() == 'A';
|
||||||
|
enable(F_VALUTA, gestval);
|
||||||
|
enable(F_CAMBIO, gestval);
|
||||||
|
}
|
||||||
|
|
||||||
bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
const short id = o.dlg();
|
const short id = o.dlg();
|
||||||
@ -65,6 +77,7 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
case F_NUM_REG:
|
case F_NUM_REG:
|
||||||
if (e == fe_modify || e == fe_init)
|
if (e == fe_modify || e == fe_init)
|
||||||
{
|
{
|
||||||
|
_caus_valintra = TRUE; // Default value
|
||||||
if (app().has_module(CGAUT, CHK_DONGLE))
|
if (app().has_module(CGAUT, CHK_DONGLE))
|
||||||
{
|
{
|
||||||
const TString& numreg = o.get();
|
const TString& numreg = o.get();
|
||||||
@ -86,12 +99,11 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
if (!c.intra())
|
if (!c.intra())
|
||||||
return error_box("La causale %s del movimento contabile %s non e' intracomunitaria",
|
return error_box("La causale %s del movimento contabile %s non e' intracomunitaria",
|
||||||
(const char*)caus, (const char*)numreg);
|
(const char*)caus, (const char*)numreg);
|
||||||
const bool gestval = c.valintra();
|
_caus_valintra = c.valintra();
|
||||||
enable(F_VALUTA, gestval);
|
|
||||||
enable(F_CAMBIO, gestval);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
enable_valuta();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_TIPO_MOV:
|
case F_TIPO_MOV:
|
||||||
@ -108,13 +120,20 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
|
|
||||||
TString key ; key << main_app().get_firm();
|
TString key ; key << main_app().get_firm();
|
||||||
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||||
|
|
||||||
m.field(F_VALORE_STAT).check_type(chk);
|
m.field(F_VALORE_STAT).check_type(chk);
|
||||||
m.field(F_CONSEGNA).check_type(chk);
|
m.field(F_CONSEGNA).check_type(chk);
|
||||||
m.field(F_TRASPORTO).check_type(chk);
|
m.field(F_TRASPORTO).check_type(chk);
|
||||||
|
|
||||||
|
chk = frequenza(anno()) == 'M' ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||||
|
m.field(F_PAESE).check_type(chk);
|
||||||
|
m.field(F_PAESE_ORIG).check_type(chk);
|
||||||
|
m.field(F_PROV).check_type(chk);
|
||||||
|
|
||||||
s.force_update();
|
s.force_update();
|
||||||
|
if (e == fe_modify)
|
||||||
|
enable_valuta();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_CLIFO:
|
case F_CLIFO:
|
||||||
@ -257,12 +276,15 @@ bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e,
|
|||||||
case F_NOMENCLATURA2:
|
case F_NOMENCLATURA2:
|
||||||
case F_NOMENCLATURA3:
|
case F_NOMENCLATURA3:
|
||||||
if (e == fe_close)
|
if (e == fe_close)
|
||||||
|
{
|
||||||
|
if (frequenza() != 'A')
|
||||||
{
|
{
|
||||||
TMask& m = o.mask();
|
TMask& m = o.mask();
|
||||||
TString16 key; key << m.get(F_NOMENCLATURA1) << m.get(F_NOMENCLATURA2) << m.get(F_NOMENCLATURA3);
|
TString16 key; key << m.get(F_NOMENCLATURA1) << m.get(F_NOMENCLATURA2) << m.get(F_NOMENCLATURA3);
|
||||||
if (key.empty())
|
if (key.empty())
|
||||||
return error_box("La nomenclatura combinata e' obbligatoria");
|
return error_box("La nomenclatura combinata e' obbligatoria");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
@ -280,8 +302,10 @@ bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e,
|
|||||||
const char obb = nom.get_char("S4");
|
const char obb = nom.get_char("S4");
|
||||||
req = obb == 'E' || obb == tipo();
|
req = obb == 'E' || obb == tipo();
|
||||||
}
|
}
|
||||||
m.field(F_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||||
m.field(F_MASSA_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
m.field(F_MASSA_KG).check_type(chk);
|
||||||
|
m.field(F_UMS).check_type(chk);
|
||||||
|
m.field(F_MASSA_UMS).check_type(chk);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -311,7 +335,7 @@ bool TImmissione_intra::protected_record(TRectype & rec)
|
|||||||
const int periodo = _msk->date2periodo(d);
|
const int periodo = _msk->date2periodo(d);
|
||||||
|
|
||||||
bool prot = is_riepilogo(tipo, d.year(), periodo) &&
|
bool prot = is_riepilogo(tipo, d.year(), periodo) &&
|
||||||
!yesno_box("Attenzione il movimento appartiene ad un riepilogo\nesistente, vuoi poterlo modificare ugualmente");
|
!yesno_box("Attenzione: il movimento appartiene ad un riepilogo esistente,:\nSi desidera poterlo modificare ugualmente?");
|
||||||
_msk->enable(DLG_SAVEREC, !prot);
|
_msk->enable(DLG_SAVEREC, !prot);
|
||||||
return prot;
|
return prot;
|
||||||
}
|
}
|
||||||
|
@ -141,9 +141,7 @@ BEGIN
|
|||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
COPY OUTPUT F_CLIFO
|
COPY OUTPUT F_CLIFO
|
||||||
// VALIDATE PI_FUNC F_STATO
|
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
// WARNING "Lunghezza partita IVA errata"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY F_TOT_DOC 18
|
CURRENCY F_TOT_DOC 18
|
||||||
@ -225,14 +223,16 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NATURA_TRANS 1
|
STRING F_NATURA_TRANS 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Natura transazione "
|
PROMPT 1 3 "Natura transazione "
|
||||||
|
FLAGS "U"
|
||||||
USE %INT
|
USE %INT
|
||||||
INPUT CODTAB F_NATURA_TRANS
|
INPUT CODTAB F_NATURA_TRANS
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@70" S0
|
DISPLAY "Descrizione@70" S0
|
||||||
OUTPUT F_NATURA_TRANS CODTAB
|
OUTPUT F_NATURA_TRANS CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
FIELD NATURA
|
FIELD NATURA
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -363,8 +363,9 @@ BEGIN
|
|||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_PAESE CODTAB
|
OUTPUT F_PAESE CODTAB
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE NORMAL
|
||||||
FIELD PAESE
|
FIELD PAESE
|
||||||
|
WARNING "Inserire il codice di un paese CEE valido"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_PAESE_ORIG 2
|
STRING F_PAESE_ORIG 2
|
||||||
@ -376,10 +377,11 @@ BEGIN
|
|||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_PAESE_ORIG CODTAB
|
OUTPUT F_PAESE_ORIG CODTAB
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE NORMAL
|
||||||
FIELD PAESEORIG
|
FIELD PAESEORIG
|
||||||
GROUP GR_ACQUISTI
|
GROUP GR_ACQUISTI
|
||||||
END
|
WARNING "Inserire il codice di un paese CEE valido"
|
||||||
|
ENEND
|
||||||
|
|
||||||
STRING F_PAESE_DUMMY 2
|
STRING F_PAESE_DUMMY 2
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -404,7 +406,7 @@ STRING F_PROV 2
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 64 7 ""
|
PROMPT 64 7 ""
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE NORMAL
|
||||||
WARNING "Provincia assente"
|
WARNING "Provincia assente"
|
||||||
FIELD PROV
|
FIELD PROV
|
||||||
END
|
END
|
||||||
|
@ -30,23 +30,41 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
|
case F_TIPO:
|
||||||
|
{
|
||||||
|
TString key ; key << main_app().get_firm();
|
||||||
|
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||||
|
CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||||
|
|
||||||
|
field(F_VALORE_STAT).check_type(chk);
|
||||||
|
field(F_CONSEGNA).check_type(chk);
|
||||||
|
field(F_TRASPORTO).check_type(chk);
|
||||||
|
|
||||||
|
chk = frequenza() == 'M' ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||||
|
field(F_PAESE).check_type(chk);
|
||||||
|
field(F_PAESE_ORIG).check_type(chk);
|
||||||
|
field(F_PROV).check_type(chk);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case F_NOMENCLATURA1:
|
case F_NOMENCLATURA1:
|
||||||
case F_NOMENCLATURA2:
|
case F_NOMENCLATURA2:
|
||||||
case F_NOMENCLATURA3:
|
case F_NOMENCLATURA3:
|
||||||
if (e == fe_close && !query_mode())
|
if (e == fe_close && !query_mode())
|
||||||
|
{
|
||||||
|
if (frequenza() != 'A')
|
||||||
{
|
{
|
||||||
TString16 key; key << get(F_NOMENCLATURA1) << get(F_NOMENCLATURA2) << get(F_NOMENCLATURA3);
|
TString16 key; key << get(F_NOMENCLATURA1) << get(F_NOMENCLATURA2) << get(F_NOMENCLATURA3);
|
||||||
|
|
||||||
if (key.empty())
|
if (key.empty())
|
||||||
return error_box("La nomenclatura combinata e' obbligatoria");
|
return error_box("La nomenclatura combinata e' obbligatoria");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
if (e == fe_init || e == fe_modify)
|
if (e == fe_init || e == fe_modify)
|
||||||
{
|
{
|
||||||
TString16 key; key << get(F_NOMENCLATURA1) << get(F_NOMENCLATURA2) << get(F_NOMENCLATURA3);
|
TString16 key; key << get(F_NOMENCLATURA1) << get(F_NOMENCLATURA2) << get(F_NOMENCLATURA3);
|
||||||
const TRectype& nom = cache().get("%NOC", key);
|
const TRectype& nom = cache().get("%NOC", key);
|
||||||
set(F_UMS, nom.get("S5"));
|
set(F_UMS, nom.get("S5"));
|
||||||
bool req = frequenza(anno()) == 'M';
|
bool req = frequenza() == 'M';
|
||||||
if (req) // Solo la frequenza mensile puo' obbligare
|
if (req) // Solo la frequenza mensile puo' obbligare
|
||||||
{
|
{
|
||||||
const char obb = nom.get_char("S4");
|
const char obb = nom.get_char("S4");
|
||||||
@ -58,7 +76,7 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
case F_VALORE_STAT:
|
case F_VALORE_STAT:
|
||||||
if (e == fe_init)
|
if (e == fe_init)
|
||||||
{
|
{
|
||||||
bool req = frequenza(anno()) == 'M';
|
bool req = frequenza() == 'M';
|
||||||
if (req)
|
if (req)
|
||||||
{
|
{
|
||||||
TString16 key ; key << main_app().get_firm();
|
TString16 key ; key << main_app().get_firm();
|
||||||
@ -184,6 +202,7 @@ void TRiepiloghi_intra::init_insert_mode(TMask& m)
|
|||||||
void TRiepiloghi_intra::init_modify_mode(TMask& m)
|
void TRiepiloghi_intra::init_modify_mode(TMask& m)
|
||||||
{
|
{
|
||||||
check_existent_disk(m);
|
check_existent_disk(m);
|
||||||
|
m.enable(F_VALUTA);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TRiepiloghi_intra::write(const TMask& m)
|
int TRiepiloghi_intra::write(const TMask& m)
|
||||||
@ -223,9 +242,10 @@ void TRiepiloghi_intra::check_existent_disk(const TMask& m)
|
|||||||
else
|
else
|
||||||
if (m.field(F_PERIODO_A).shown())
|
if (m.field(F_PERIODO_A).shown())
|
||||||
periodo = m.get_int(F_PERIODO_A);
|
periodo = m.get_int(F_PERIODO_A);
|
||||||
|
char tipo = m.get(F_TIPO)[0];
|
||||||
|
|
||||||
TString str;
|
TString str;
|
||||||
str.format("%4d%02d",anno,periodo);
|
str.format("%c%4d%02d",tipo,anno,periodo);
|
||||||
|
|
||||||
const TRectype& ird = cache().get("IRD",str);
|
const TRectype& ird = cache().get("IRD",str);
|
||||||
if (!ird.empty())
|
if (!ird.empty())
|
||||||
|
@ -190,9 +190,10 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
NUMBER F_NATURA_TRANS 1
|
STRING F_NATURA_TRANS 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 8 "Natura transazione "
|
PROMPT 1 8 "Natura transazione "
|
||||||
|
FLAGS "U"
|
||||||
USE %INT
|
USE %INT
|
||||||
INPUT CODTAB F_NATURA_TRANS
|
INPUT CODTAB F_NATURA_TRANS
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
|
@ -30,36 +30,22 @@ void TRettifiche_mask::inventa_cambio_intra()
|
|||||||
{
|
{
|
||||||
const TString& codval = get(F_VALUTA);
|
const TString& codval = get(F_VALUTA);
|
||||||
if (is_true_value(codval))
|
if (is_true_value(codval))
|
||||||
{
|
|
||||||
TTable cam("CAM");
|
|
||||||
cam.put("CODTAB", codval);
|
|
||||||
const int err = cam.read(_isgteq);
|
|
||||||
bool yes = err != NOERR;
|
|
||||||
if (!yes)
|
|
||||||
{
|
|
||||||
TString16 v = cam.get("CODTAB");
|
|
||||||
v.cut(3).rtrim();
|
|
||||||
yes = v != codval;
|
|
||||||
}
|
|
||||||
if (yes)
|
|
||||||
{
|
{
|
||||||
TCurrency eur; get_currency(F_AMMONTARE, eur);
|
TCurrency eur; get_currency(F_AMMONTARE, eur);
|
||||||
TCurrency val; get_currency(F_AMM_VALUTA, val);
|
TCurrency val; get_currency(F_AMM_VALUTA, val);
|
||||||
if (eur.is_zero())
|
if (eur.is_zero() && !val.is_zero())
|
||||||
{
|
{
|
||||||
val.change_to_firm_val();
|
val.change_to_firm_val();
|
||||||
set(F_AMMONTARE, val);
|
set(F_AMMONTARE, val);
|
||||||
}
|
} else
|
||||||
if (val.is_zero())
|
if (val.is_zero() && !eur.is_zero())
|
||||||
{
|
{
|
||||||
const real cambio = cache().get("%VAL", codval, "S4");
|
const TExchange exc(codval);
|
||||||
const TExchange exc(codval, cambio);
|
|
||||||
eur.change_value(exc);
|
eur.change_value(exc);
|
||||||
set(F_AMM_VALUTA, eur);
|
set(F_AMM_VALUTA, eur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
@ -82,7 +68,6 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
TString key ; key << main_app().get_firm();
|
TString key ; key << main_app().get_firm();
|
||||||
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||||
|
|
||||||
m.field(F_VALORE_STAT).check_type(chk);
|
m.field(F_VALORE_STAT).check_type(chk);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -93,24 +78,47 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
|||||||
ef.check();
|
ef.check();
|
||||||
TCursor& cur = *ef.browse()->cursor();
|
TCursor& cur = *ef.browse()->cursor();
|
||||||
bool ok = cur.ok();
|
bool ok = cur.ok();
|
||||||
enable(-GR_ORIGINAL, !ok);
|
|
||||||
if (e == fe_modify && insert_mode())
|
if (e == fe_modify && insert_mode())
|
||||||
{
|
{
|
||||||
for (short dlg = O_STATO; dlg <= O_NOMENCLATURA3; dlg++)
|
for (short dlg = O_STATO; dlg <= O_NOMENCLATURA3; dlg++)
|
||||||
{
|
{
|
||||||
|
switch (dlg)
|
||||||
|
{
|
||||||
|
case O_NUM_RIG: // Non riportare il nmumero riga!
|
||||||
|
break;
|
||||||
|
default:
|
||||||
const int pos = id2pos(dlg);
|
const int pos = id2pos(dlg);
|
||||||
if (pos >= 0)
|
if (pos >= 0)
|
||||||
set(dlg + F_STATO - O_STATO, fld(pos).get());
|
set(dlg + F_STATO - O_STATO, fld(pos).get());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case O_AMM_VALUTA:
|
||||||
|
if (e == fe_close && o.empty())
|
||||||
|
{
|
||||||
|
const TString& codval = get(O_VALUTA);
|
||||||
|
if (is_true_value(codval))
|
||||||
|
return error_box("Inserire l'ammontare in valuta %s", (const char*)codval);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case F_AMMONTARE:
|
case F_AMMONTARE:
|
||||||
if (e == fe_modify && !o.empty() && field(F_AMM_VALUTA).empty())
|
if (e == fe_modify && !o.empty() && field(F_AMM_VALUTA).empty())
|
||||||
inventa_cambio_intra();
|
inventa_cambio_intra();
|
||||||
break;
|
break;
|
||||||
|
case F_VALUTA:
|
||||||
|
if (e == fe_init || e == fe_modify)
|
||||||
|
{
|
||||||
|
const bool tv = is_true_value(o.get());
|
||||||
|
if (!tv)
|
||||||
|
reset(F_AMM_VALUTA);
|
||||||
|
enable(F_AMM_VALUTA, tv);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case F_AMM_VALUTA:
|
case F_AMM_VALUTA:
|
||||||
if (e == fe_modify && !o.empty() && field(F_AMMONTARE).empty())
|
if (e == fe_modify && !field(F_VALUTA).empty() && field(F_AMMONTARE).empty())
|
||||||
inventa_cambio_intra();
|
inventa_cambio_intra();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -175,7 +183,6 @@ void TRettifiche_intra::init_mask(TMask& m, bool keyon)
|
|||||||
m.enable(O_PERIODO_T, keyon);
|
m.enable(O_PERIODO_T, keyon);
|
||||||
m.enable(O_PERIODO_A, keyon);
|
m.enable(O_PERIODO_A, keyon);
|
||||||
m.enable(O_NUM_RIG, keyon);
|
m.enable(O_NUM_RIG, keyon);
|
||||||
m.enable(-GR_ORIGINAL, keyon);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TRettifiche_intra::init_query_mode(TMask& m)
|
void TRettifiche_intra::init_query_mode(TMask& m)
|
||||||
|
@ -40,5 +40,3 @@
|
|||||||
#define F_VALORE_STAT 226
|
#define F_VALORE_STAT 226
|
||||||
#define F_NOMENCLATURA2 227
|
#define F_NOMENCLATURA2 227
|
||||||
#define F_NOMENCLATURA3 228
|
#define F_NOMENCLATURA3 228
|
||||||
|
|
||||||
#define GR_ORIGINAL 3
|
|
@ -67,13 +67,9 @@ LIST O_PERIODO_T 2 16
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 33 4 "Periodo "
|
PROMPT 33 4 "Periodo "
|
||||||
ITEM "01|Gennaio-Marzo"
|
ITEM "01|Gennaio-Marzo"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
ITEM "02|Aprile-Giugno"
|
ITEM "02|Aprile-Giugno"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
ITEM "03|Luglio-Settembre"
|
ITEM "03|Luglio-Settembre"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
ITEM "04|Ottobre-Dicembre"
|
ITEM "04|Ottobre-Dicembre"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
FIELD PERETT
|
FIELD PERETT
|
||||||
NUM_EXPR (#O_ANNO<#F_ANNO)||((#O_ANNO=#F_ANNO)&&(#O_PERIODO_T<#F_PERIODO_T))
|
NUM_EXPR (#O_ANNO<#F_ANNO)||((#O_ANNO=#F_ANNO)&&(#O_PERIODO_T<#F_PERIODO_T))
|
||||||
WARINIG "Si possono rettificare solo i periodi precedenti"
|
WARINIG "Si possono rettificare solo i periodi precedenti"
|
||||||
@ -83,7 +79,6 @@ LIST O_PERIODO_A 2 16
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 33 4 "Periodo "
|
PROMPT 33 4 "Periodo "
|
||||||
ITEM "01|Annuale"
|
ITEM "01|Annuale"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUBER O_NUM_RIG 7
|
NUBER O_NUM_RIG 7
|
||||||
@ -121,19 +116,13 @@ BEGIN
|
|||||||
OUTPUT O_VALORE_STAT VALSTAT
|
OUTPUT O_VALORE_STAT VALSTAT
|
||||||
CHECKTYPE SEARCH
|
CHECKTYPE SEARCH
|
||||||
FIELD NUMRETT
|
FIELD NUMRETT
|
||||||
|
ADD RUN IN0 -5
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING O_STATO 2
|
STRING O_STATO 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Stato CEE "
|
PROMPT 2 5 "Stato CEE "
|
||||||
FLAGS "U"
|
FLAGS "DU"
|
||||||
USE %SCE
|
|
||||||
INPUT CODTAB O_STATO
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT O_STATO CODTAB
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST O_TIPO_CF 1 10
|
LIST O_TIPO_CF 1 10
|
||||||
@ -147,6 +136,7 @@ END
|
|||||||
STRING O_PARTITA_IVA 12
|
STRING O_PARTITA_IVA 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 51 5 "Partita IVA "
|
PROMPT 51 5 "Partita IVA "
|
||||||
|
FLAGS "D"
|
||||||
USE LF_CLIFO KEY 5
|
USE LF_CLIFO KEY 5
|
||||||
INPUT TIPOCF O_TIPO_CF SELECT
|
INPUT TIPOCF O_TIPO_CF SELECT
|
||||||
INPUT STATOPAIV O_STATO
|
INPUT STATOPAIV O_STATO
|
||||||
@ -158,10 +148,8 @@ BEGIN
|
|||||||
OUTPUT O_STATO STATOPAIV
|
OUTPUT O_STATO STATOPAIV
|
||||||
OUTPUT O_PARTITA_IVA PAIV
|
OUTPUT O_PARTITA_IVA PAIV
|
||||||
OUTPUT O_PARTITA_DESC RAGSOC
|
OUTPUT O_PARTITA_DESC RAGSOC
|
||||||
// VALIDATE PI_FUNC O_STATO
|
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Lunghezza partita IVA errata"
|
WARNING "Lunghezza partita IVA errata"
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING O_PARTITA_DESC 50
|
STRING O_PARTITA_DESC 50
|
||||||
@ -170,85 +158,53 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER O_NATURA_TRANS 1
|
STRING O_NATURA_TRANS 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Natura transazione "
|
PROMPT 2 7 "Natura transazione "
|
||||||
USE %INT
|
FLAGS "DU"
|
||||||
INPUT CODTAB O_NATURA_TRANS
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@70" S0
|
|
||||||
OUTPUT O_NATURA_TRANS CODTAB
|
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER O_NOMENCLATURA1 4
|
NUMBER O_NOMENCLATURA1 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 7 "Nomenclatura combinata "
|
PROMPT 28 7 "Nomenclatura combinata "
|
||||||
FLAGS "Z"
|
FLAGS "DZ"
|
||||||
USE %NOC
|
|
||||||
INPUT CODTAB[1,4] O_NOMENCLATURA1
|
|
||||||
INPUT CODTAB[5,6] O_NOMENCLATURA2
|
|
||||||
INPUT CODTAB[7,8] O_NOMENCLATURA3
|
|
||||||
DISPLAY "Codice" CODTAB[1,4]
|
|
||||||
DISPLAY "@3" CODTAB[5,6]
|
|
||||||
DISPLAY "@3" CODTAB[7,8]
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT O_NOMENCLATURA1 CODTAB[1,4]
|
|
||||||
OUTPUT O_NOMENCLATURA2 CODTAB[5,6]
|
|
||||||
OUTPUT O_NOMENCLATURA3 CODTAB[7,8]
|
|
||||||
MESSAGE DIRTY,O_NOMENCLATURA3
|
|
||||||
VALIDATE REQIF_FUNC 1 O_NOMENCLATURA2
|
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
WARNING "Nomenclatura combinata assente"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER O_NOMENCLATURA2 2
|
NUMBER O_NOMENCLATURA2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 58 7 ""
|
PROMPT 58 7 ""
|
||||||
FLAGS "Z"
|
FLAGS "DZ"
|
||||||
COPY ALL O_NOMENCLATURA1
|
|
||||||
MESSAGE DIRTY,O_NOMENCLATURA3
|
|
||||||
VALIDATE REQIF_FUNC 1 O_NOMENCLATURA3
|
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
WARNING "Nomenclatura combinata assente"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER O_NOMENCLATURA3 2
|
NUMBER O_NOMENCLATURA3 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 63 7 ""
|
PROMPT 63 7 ""
|
||||||
FLAGS "Z"
|
FLAGS "DZ"
|
||||||
COPY ALL O_NOMENCLATURA1
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
WARNING "Nomenclatura combinata assente"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY O_AMMONTARE 18
|
CURRENCY O_AMMONTARE 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Ammontare "
|
PROMPT 2 8 "Ammontare "
|
||||||
CHECKTYPE REQUIRED
|
FLAGS "D"
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING O_VALUTA 3
|
STRING O_VALUTA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 43 8 "in valuta "
|
PROMPT 43 8 "in valuta "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
FIELD CODVAL
|
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY O_AMM_VALUTA 18
|
CURRENCY O_AMM_VALUTA 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 59 8 ""
|
PROMPT 59 8 ""
|
||||||
DRIVENBY O_VALUTA
|
DRIVENBY O_VALUTA
|
||||||
CHECKTYPE REQUIRED
|
FLAGS "D"
|
||||||
GROUP GR_ORIGINAL
|
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY O_VALORE_STAT 18
|
CURRENCY O_VALORE_STAT 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 9 "Valore statistico "
|
PROMPT 2 9 "Valore statistico "
|
||||||
GROUP GR_ORIGINAL
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 8
|
GROUPBOX DLG_NULL 78 8
|
||||||
@ -278,7 +234,7 @@ END
|
|||||||
LIST F_PERIODO_M 2 16
|
LIST F_PERIODO_M 2 16
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 33 12 "Periodo "
|
PROMPT 33 12 "Periodo "
|
||||||
FLAGS "AM"
|
FLAGS "M"
|
||||||
FIELD PERIODO
|
FIELD PERIODO
|
||||||
KEY 1
|
KEY 1
|
||||||
END
|
END
|
||||||
@ -287,13 +243,9 @@ LIST F_PERIODO_T 2 16
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 33 12 "Periodo "
|
PROMPT 33 12 "Periodo "
|
||||||
ITEM "01|Gennaio-Marzo"
|
ITEM "01|Gennaio-Marzo"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
ITEM "02|Aprile-Giugno"
|
ITEM "02|Aprile-Giugno"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
ITEM "03|Luglio-Settembre"
|
ITEM "03|Luglio-Settembre"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
ITEM "04|Ottobre-Dicembre"
|
ITEM "04|Ottobre-Dicembre"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
FIELD PERIODO
|
FIELD PERIODO
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -301,7 +253,6 @@ LIST F_PERIODO_A 2 16
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 33 12 "Periodo "
|
PROMPT 33 12 "Periodo "
|
||||||
ITEM "01|Annuale"
|
ITEM "01|Annuale"
|
||||||
MESSAGE COPY,O_PERIODO_M
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUBER F_NUM_RIG 7
|
NUBER F_NUM_RIG 7
|
||||||
@ -320,7 +271,6 @@ BEGIN
|
|||||||
DISPLAY "Periodo rett." PERETT
|
DISPLAY "Periodo rett." PERETT
|
||||||
DISPLAY "Numero rett." NUMRETT
|
DISPLAY "Numero rett." NUMRETT
|
||||||
OUTPUT F_PERIODO_M PERIODO
|
OUTPUT F_PERIODO_M PERIODO
|
||||||
OUTPUT F_PERIODO_T PERIODO
|
|
||||||
OUTPUT F_NUM_RIG NUMRIG
|
OUTPUT F_NUM_RIG NUMRIG
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
FIELD NUMRIG
|
FIELD NUMRIG
|
||||||
@ -374,9 +324,10 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NATURA_TRANS 1
|
STRING F_NATURA_TRANS 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Natura transazione "
|
PROMPT 2 15 "Natura transazione "
|
||||||
|
FLAGS "U"
|
||||||
USE %INT
|
USE %INT
|
||||||
INPUT CODTAB F_NATURA_TRANS
|
INPUT CODTAB F_NATURA_TRANS
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -444,7 +395,13 @@ END
|
|||||||
STRING F_VALUTA 3
|
STRING F_VALUTA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 43 16 "in valuta "
|
PROMPT 43 16 "in valuta "
|
||||||
FLAGS "D"
|
FLAGS "U"
|
||||||
|
USE %VAL
|
||||||
|
INPUT CODTAB F_VALUTA
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_VALUTA CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
FIELD CODVAL
|
FIELD CODVAL
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -41,18 +41,32 @@ char TIntra_mask::tipo() const
|
|||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
char TIntra_mask::frequenza(const int anno) const
|
char TIntra_mask::frequenza(int a, char t) const
|
||||||
{
|
{
|
||||||
const char t = tipo();
|
const TDate d(TODAY);
|
||||||
TDate d(TODAY);
|
|
||||||
if (anno < d.year())
|
if (a <= 0)
|
||||||
|
{
|
||||||
|
a = anno();
|
||||||
|
if (a <= 0)
|
||||||
|
a = d.year();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (t)
|
||||||
|
{
|
||||||
|
case 'B': t = 'A'; break; // Rettifiche su Acquisti
|
||||||
|
case 'D': t = 'C'; break; // Rettifiche su Cessioni
|
||||||
|
default : t = tipo(); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a < d.year())
|
||||||
{
|
{
|
||||||
TLocalisamfile riep(LF_RIEPRETT);
|
TLocalisamfile riep(LF_RIEPRETT);
|
||||||
riep.put("TIPO", (char)t);
|
riep.put("TIPO", (char)t);
|
||||||
riep.put("ANNO", anno);
|
riep.put("ANNO", a);
|
||||||
if (riep.read(_isgteq) == NOERR)
|
if (riep.read(_isgteq) == NOERR)
|
||||||
{
|
{
|
||||||
if (riep.get_char("TIPO") == t && riep.get_int("ANNO") == anno)
|
if (riep.get_char("TIPO") == t && riep.get_int("ANNO") == a)
|
||||||
{
|
{
|
||||||
const char freq = riep.get_char("FREQUENZA");
|
const char freq = riep.get_char("FREQUENZA");
|
||||||
|
|
||||||
@ -62,7 +76,7 @@ char TIntra_mask::frequenza(const int anno) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (t == 'A' || t == 'B') ? _freq_acq : _freq_ces;
|
return (t == 'A') ? _freq_acq : _freq_ces;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TIntra_mask::date2periodo(const TDate & d)
|
int TIntra_mask::date2periodo(const TDate & d)
|
||||||
|
@ -20,7 +20,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
int date2periodo(const TDate & d);
|
int date2periodo(const TDate & d);
|
||||||
char tipo() const;
|
char tipo() const;
|
||||||
char frequenza(const int anno) const;
|
char frequenza(int anno = 0, char tipo = '\0') const;
|
||||||
int periodo() const;
|
int periodo() const;
|
||||||
const char* periodo_str() const;
|
const char* periodo_str() const;
|
||||||
|
|
||||||
|
186
include/isam.cpp
186
include/isam.cpp
@ -23,6 +23,8 @@
|
|||||||
#include <varrec.h>
|
#include <varrec.h>
|
||||||
#include <codeb.h>
|
#include <codeb.h>
|
||||||
#include <lffiles.h>
|
#include <lffiles.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
#define JOURNAL
|
#define JOURNAL
|
||||||
@ -284,6 +286,97 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct TCallbackFileinfo
|
||||||
|
{
|
||||||
|
TString16 _var;
|
||||||
|
TFilename _app;
|
||||||
|
};
|
||||||
|
|
||||||
|
HIDDEN int find_relapp(TConfig& cfg, void* jolly)
|
||||||
|
{
|
||||||
|
TCallbackFileinfo& info = *((TCallbackFileinfo*)jolly);
|
||||||
|
if (cfg.exist(info._var))
|
||||||
|
{
|
||||||
|
info._app = cfg.get(info._var);
|
||||||
|
return info._app.not_empty();
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool get_relapp(int logicnum, TString& app)
|
||||||
|
{
|
||||||
|
TConfig ini("install.ini");
|
||||||
|
TCallbackFileinfo fi;
|
||||||
|
fi._var.format("Edit_%d", logicnum);
|
||||||
|
ini.for_each_paragraph(find_relapp, &fi);
|
||||||
|
if (fi._app.not_empty())
|
||||||
|
app = fi._app;
|
||||||
|
return fi._app.not_empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
struct TCallbackTableinfo
|
||||||
|
{
|
||||||
|
TString16 _var1, _var2, _var3;
|
||||||
|
TString4 _module;
|
||||||
|
TFilename _tabapp, _relapp;
|
||||||
|
};
|
||||||
|
|
||||||
|
HIDDEN int find_tabapp(TConfig& cfg, void* jolly)
|
||||||
|
{
|
||||||
|
TCallbackTableinfo& info = *((TCallbackTableinfo*)jolly);
|
||||||
|
|
||||||
|
if (cfg.exist(info._var1))
|
||||||
|
{
|
||||||
|
info._tabapp = cfg.get(info._var1);
|
||||||
|
if (info._tabapp.not_empty())
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (cfg.get_paragraph().compare(info._module, 2, TRUE) == 0)
|
||||||
|
{
|
||||||
|
if (cfg.exist(info._var2))
|
||||||
|
{
|
||||||
|
info._relapp = cfg.get(info._var2);
|
||||||
|
if (info._relapp.not_empty())
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if (cfg.exist(info._var3))
|
||||||
|
{
|
||||||
|
info._relapp = cfg.get(info._var3);
|
||||||
|
if (info._relapp.not_empty())
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool get_tabapp(const char * tabname, TString& app)
|
||||||
|
{
|
||||||
|
TConfig ini("install.ini");
|
||||||
|
TCallbackTableinfo fi;
|
||||||
|
TTable t(tabname);
|
||||||
|
fi._var1.format("Edit_%s", t.name());
|
||||||
|
fi._var2.format("Edit_%d", t.num());
|
||||||
|
fi._var2.format("Edit_%d", t.num() == LF_TABCOM ? LF_TAB : LF_TABCOM);
|
||||||
|
fi._module = t.module();
|
||||||
|
ini.for_each_paragraph(find_tabapp, &fi);
|
||||||
|
|
||||||
|
app = fi._tabapp;
|
||||||
|
if (app.empty())
|
||||||
|
app = fi._relapp;
|
||||||
|
if (app.empty())
|
||||||
|
{
|
||||||
|
app = "ba3 -0";
|
||||||
|
if (fi._module.compare("ba", 2, TRUE) != 0)
|
||||||
|
{
|
||||||
|
TConfig c(CONFIG_STUDIO, fi._module);
|
||||||
|
if (c.exist("TabPrg"))
|
||||||
|
app = c.get("TabPrg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
app << ' ' << tabname;
|
||||||
|
return tabname && *tabname > ' ';
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Funzioni implementate per la gestione file dati tramite Codebase
|
// Funzioni implementate per la gestione file dati tramite Codebase
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -1302,32 +1395,9 @@ int TBaseisamfile::is_valid()
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct TCallbackFileinfo
|
|
||||||
{
|
|
||||||
TString16 _var;
|
|
||||||
TFilename _app;
|
|
||||||
};
|
|
||||||
|
|
||||||
HIDDEN int find_relapp(TConfig& cfg, void* jolly)
|
|
||||||
{
|
|
||||||
TCallbackFileinfo& info = *((TCallbackFileinfo*)jolly);
|
|
||||||
if (cfg.exist(info._var))
|
|
||||||
{
|
|
||||||
info._app = cfg.get(info._var);
|
|
||||||
return info._app.not_empty();
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TBaseisamfile::get_relapp(TString& app) const
|
bool TBaseisamfile::get_relapp(TString& app) const
|
||||||
{
|
{
|
||||||
TConfig ini("install.ini");
|
return curr().get_relapp(app);
|
||||||
TCallbackFileinfo fi;
|
|
||||||
fi._var.format("Edit_%d", num());
|
|
||||||
ini.for_each_paragraph(find_relapp, &fi);
|
|
||||||
if (fi._app.not_empty())
|
|
||||||
app = fi._app;
|
|
||||||
return app.not_empty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3391,6 +3461,74 @@ bool TRectype::send_mail(const char* action) const
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TRectype::get_relapp(TString& app) const
|
||||||
|
{
|
||||||
|
if (*_tab)
|
||||||
|
{
|
||||||
|
TString8 cod(_tab);
|
||||||
|
if (num() == LF_TABCOM)
|
||||||
|
cod.insert("%");
|
||||||
|
else
|
||||||
|
if (num() == LF_TABGEN)
|
||||||
|
cod.insert("#");
|
||||||
|
return ::get_tabapp(cod, app);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return ::get_relapp(num(), app);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRectype::edit(int logicnum, const char * alternate_key_fields) const
|
||||||
|
{
|
||||||
|
if (logicnum <= 0)
|
||||||
|
logicnum = num();
|
||||||
|
|
||||||
|
TToken_string key_labels;
|
||||||
|
|
||||||
|
TRectype r(logicnum);
|
||||||
|
|
||||||
|
if (*_tab)
|
||||||
|
r.settab(_tab);
|
||||||
|
|
||||||
|
const RecDes* recd = r.rec_des(); // Descrizione del record della testata
|
||||||
|
const KeyDes& kd = recd->Ky[0]; // Elenco dei campi della chiave 1
|
||||||
|
for (int i = 0; i < kd.NkFields; i++)
|
||||||
|
{
|
||||||
|
const int nf = kd.FieldSeq[i] % MaxFields;
|
||||||
|
const RecFieldDes& rf = recd->Fd[nf];
|
||||||
|
key_labels.add(rf.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
TToken_string key_fields(alternate_key_fields);
|
||||||
|
|
||||||
|
if (key_fields.empty_items())
|
||||||
|
key_fields = key_labels;
|
||||||
|
|
||||||
|
TFilename ininame; ininame.temp();
|
||||||
|
{
|
||||||
|
TConfig ini(ininame, "Transaction");
|
||||||
|
ini.set("Action", "MODIFY");
|
||||||
|
TString16 p; p << logicnum;
|
||||||
|
ini.set_paragraph(p);
|
||||||
|
|
||||||
|
FOR_EACH_TOKEN(key_labels, tok)
|
||||||
|
{
|
||||||
|
const TString16 name(tok);
|
||||||
|
const TString& value = get(key_fields.get());
|
||||||
|
ini.set(name, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TString app;
|
||||||
|
|
||||||
|
if (r.get_relapp(app))
|
||||||
|
{
|
||||||
|
app << " -i" << ininame;
|
||||||
|
TExternal_app a(app);
|
||||||
|
|
||||||
|
a.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TRecfield (campo/sottocampo di un record)
|
// TRecfield (campo/sottocampo di un record)
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -266,6 +266,10 @@ public:
|
|||||||
virtual void fill_transaction(TConfig& cfg, int row = 0) const;
|
virtual void fill_transaction(TConfig& cfg, int row = 0) const;
|
||||||
bool send_mail(const char* action = "MODIFY") const;
|
bool send_mail(const char* action = "MODIFY") const;
|
||||||
|
|
||||||
|
// @cmember Ritorna la relapp che gestisce il file
|
||||||
|
virtual bool get_relapp(TString& app) const;
|
||||||
|
virtual void edit(int logicnum = 0, const char * alternate_key_fields = NULL) const;
|
||||||
|
|
||||||
// @cmember Inizializza un record staccato da un file.
|
// @cmember Inizializza un record staccato da un file.
|
||||||
void init(int logicnum);
|
void init(int logicnum);
|
||||||
// @cmember Costruttore Costruisce un record staccato da un file.
|
// @cmember Costruttore Costruisce un record staccato da un file.
|
||||||
|
@ -1130,6 +1130,23 @@ const TString& TMask::get(short fld_id) const
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString& TMask::get(const char * fld_id) const
|
||||||
|
{
|
||||||
|
const TString * s = &EMPTY_STRING;
|
||||||
|
for (int i = 0 ; i < fields(); i++)
|
||||||
|
{
|
||||||
|
TMask_field& f = fld(i);
|
||||||
|
const TFieldref * campo = f.field();
|
||||||
|
if (campo != NULL && campo->name() == fld_id)
|
||||||
|
{
|
||||||
|
s= &f.get();
|
||||||
|
if (f.active())
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return *s;
|
||||||
|
}
|
||||||
|
|
||||||
long TMask::get_long(short fld_id) const
|
long TMask::get_long(short fld_id) const
|
||||||
{
|
{
|
||||||
// const TString& s = field(fld_id).get();
|
// const TString& s = field(fld_id).get();
|
||||||
@ -1196,6 +1213,25 @@ void TMask::set(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TMask::set(
|
||||||
|
const char * fld_id, // @parm FIELD del campo da settare
|
||||||
|
const char* str, // @parm Stringa da assegnare al campo
|
||||||
|
bool hit) // @parm Indica se occorre rifare i controlli una volta settato il campo
|
||||||
|
// con il nuovo valore (default FALSE)
|
||||||
|
// @parm long | n | Numero da asegnare al campo
|
||||||
|
|
||||||
|
// @syntax set(short fld_id, const char *s, bool hit);
|
||||||
|
// @syntax set(short fld_id, long n, bool hit);
|
||||||
|
{
|
||||||
|
for (int i = 0 ; i < fields(); i++)
|
||||||
|
{
|
||||||
|
TMask_field& f = fld(i);
|
||||||
|
const TFieldref * campo = f.field();
|
||||||
|
if (campo != NULL && campo->name() == fld_id)
|
||||||
|
set(f.dlg(), str, hit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TMask::set(short fld_id, long n, bool hit)
|
void TMask::set(short fld_id, long n, bool hit)
|
||||||
{
|
{
|
||||||
char s[16];
|
char s[16];
|
||||||
@ -2040,7 +2076,7 @@ int TMask::save_profile(int num, const char* desc) const
|
|||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TMask::load_profile(int num)
|
int TMask::load_profile(int num, bool reset)
|
||||||
{
|
{
|
||||||
TFilename prof;
|
TFilename prof;
|
||||||
make_profile_name(prof);
|
make_profile_name(prof);
|
||||||
@ -2060,6 +2096,8 @@ int TMask::load_profile(int num)
|
|||||||
if (f.is_loadable() && f.get_default().empty())
|
if (f.is_loadable() && f.get_default().empty())
|
||||||
{
|
{
|
||||||
name.format("F_%d", f.dlg());
|
name.format("F_%d", f.dlg());
|
||||||
|
if (reset || var.objptr(name) != NULL)
|
||||||
|
{
|
||||||
if (f.is_sheet())
|
if (f.is_sheet())
|
||||||
{
|
{
|
||||||
TSheet_field& sf = (TSheet_field&)f;
|
TSheet_field& sf = (TSheet_field&)f;
|
||||||
@ -2072,6 +2110,7 @@ int TMask::load_profile(int num)
|
|||||||
f.set(ini.get(name));
|
f.set(ini.get(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
@ -274,7 +274,10 @@ public:
|
|||||||
void set(short fld_id, long num, bool hit=FALSE);
|
void set(short fld_id, long num, bool hit=FALSE);
|
||||||
// @cmember Setta il campo con un currency
|
// @cmember Setta il campo con un currency
|
||||||
void set(short fld_id, const TCurrency& num, bool hit=FALSE);
|
void set(short fld_id, const TCurrency& num, bool hit=FALSE);
|
||||||
|
// @cmember Setta una tutti i campi che hanno come FIELD <p fld_id>
|
||||||
|
void set(const char * fld_id, const char * str, bool hit=FALSE);
|
||||||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di stringa
|
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di stringa
|
||||||
|
|
||||||
virtual const TString& get(short fld_id) const;
|
virtual const TString& get(short fld_id) const;
|
||||||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di long
|
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di long
|
||||||
long get_long(short fld_id) const;
|
long get_long(short fld_id) const;
|
||||||
@ -291,6 +294,8 @@ public:
|
|||||||
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di currency
|
// @cmember Ritorna il contenuto del campo <p fld_id> sotto forma di currency
|
||||||
TCurrency& get_currency(short fld_id, TCurrency& curr) const;
|
TCurrency& get_currency(short fld_id, TCurrency& curr) const;
|
||||||
|
|
||||||
|
// @cmember Ritorna il contenuto del primo campo attivo campo che ha come FIELD <p fld_id>
|
||||||
|
const TString& get(const char * fld_id) const;
|
||||||
// @cmember Indica quale campo deve ricevere per primo il focus nella maschera
|
// @cmember Indica quale campo deve ricevere per primo il focus nella maschera
|
||||||
int first_focus(short id);
|
int first_focus(short id);
|
||||||
|
|
||||||
@ -353,6 +358,8 @@ public:
|
|||||||
|
|
||||||
// @cmember Azzera il campo
|
// @cmember Azzera il campo
|
||||||
void reset(short fld_id = 0);
|
void reset(short fld_id = 0);
|
||||||
|
// @cmember Azzera il campo
|
||||||
|
void reset(const char * fld_id) {set(fld_id, "");}
|
||||||
|
|
||||||
// @cmember Legge, dalla relazione <p Trelation>, i valori del campo con specifica FIELD
|
// @cmember Legge, dalla relazione <p Trelation>, i valori del campo con specifica FIELD
|
||||||
void autoload(const TRelation& r);
|
void autoload(const TRelation& r);
|
||||||
@ -380,7 +387,7 @@ public:
|
|||||||
// @cmember Salva il profilo <p num>
|
// @cmember Salva il profilo <p num>
|
||||||
int save_profile(int num = 0, const char* desc = NULL) const;
|
int save_profile(int num = 0, const char* desc = NULL) const;
|
||||||
// @cmember Carica il profilo <p num>
|
// @cmember Carica il profilo <p num>
|
||||||
int load_profile(int num = 0);
|
int load_profile(int num = 0, bool reset = TRUE);
|
||||||
|
|
||||||
// @cmember Ritorna il primo campo dirty
|
// @cmember Ritorna il primo campo dirty
|
||||||
short dirty() const;
|
short dirty() const;
|
||||||
|
@ -1166,19 +1166,22 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
const int oldrec = _cur_rec;
|
const int oldrec = _cur_rec;
|
||||||
const int record = set_pos(xiev->v.select.xi_obj->v.row, 1);
|
const int record = set_pos(xiev->v.select.xi_obj->v.row, _cur_col);
|
||||||
if (oldrec != _cur_rec)
|
if (oldrec != _cur_rec)
|
||||||
{
|
{
|
||||||
_row_dirty = _cell_dirty = FALSE;
|
_row_dirty = _cell_dirty = FALSE;
|
||||||
str2mask(_cur_rec);
|
str2mask(_cur_rec);
|
||||||
on_idle(); // Forces update delayed by str2mask
|
on_idle(); // Forces update delayed by str2mask
|
||||||
_cur_rec = record; // Forces correct record (may be changed by on_idle!)
|
_cur_rec = record; // Forces correct record (may be changed by on_idle!)
|
||||||
|
notify(_cur_rec, K_TAB);
|
||||||
|
set_pos(xiev->v.select.xi_obj->v.row, find_enabled_column(_cur_rec, 1, +1));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xiev->v.select.column > 0)
|
if (xiev->v.select.column > 0)
|
||||||
{
|
{
|
||||||
TOperable_field* f = col2field(xiev->v.select.column);
|
TOperable_field* f = col2field(xiev->v.select.column);
|
||||||
if (f && f->active())
|
if (f && f->active())
|
||||||
|
|
||||||
{
|
{
|
||||||
notify_change();
|
notify_change();
|
||||||
if (f->get().empty())
|
if (f->get().empty())
|
||||||
@ -1188,14 +1191,15 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
|||||||
f->on_key(K_SPACE);
|
f->on_key(K_SPACE);
|
||||||
mask2str(_cur_rec);
|
mask2str(_cur_rec);
|
||||||
on_idle();
|
on_idle();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int button_pos = sheet_mask().id2pos(FIRST_FIELD-1);
|
TMask & sm = owner().sheet_mask();
|
||||||
|
const int button_pos = sm.id2pos(FIRST_FIELD-1);
|
||||||
if (button_pos >= 0)
|
if (button_pos >= 0)
|
||||||
{
|
{
|
||||||
TMask & sm = owner().sheet_mask();
|
|
||||||
TMask_field& button = sm.fld(button_pos);
|
TMask_field& button = sm.fld(button_pos);
|
||||||
if (button.active())
|
if (button.active())
|
||||||
{
|
{
|
||||||
@ -1892,14 +1896,7 @@ void TSpreadsheet::set_back_and_fore_color(COLOR back, COLOR fore, int row, int
|
|||||||
{
|
{
|
||||||
TRow_property* prop = get_property(r, crea);
|
TRow_property* prop = get_property(r, crea);
|
||||||
if (prop)
|
if (prop)
|
||||||
{
|
|
||||||
//qui 01
|
|
||||||
prop->set(col, back, fore);
|
prop->set(col, back, fore);
|
||||||
/* if (back != COLOR_INVALID)
|
|
||||||
prop->_back = back;
|
|
||||||
if (fore != COLOR_INVALID)
|
|
||||||
prop->_fore = fore; */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3111,4 +3108,3 @@ void TSheet_field::set_userput(SHEET_USERGETPUT handler)
|
|||||||
{
|
{
|
||||||
_userput = handler;
|
_userput = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -682,11 +682,10 @@ bool os_test_network_version()
|
|||||||
{
|
{
|
||||||
const char* VREDIRNAME = "vredir.vxd";
|
const char* VREDIRNAME = "vredir.vxd";
|
||||||
DWORD handle;
|
DWORD handle;
|
||||||
BYTE infoBuffer[512];
|
const DWORD dwSize = GetFileVersionInfoSize(VREDIRNAME,&handle);
|
||||||
|
|
||||||
DWORD dwSize = GetFileVersionInfoSize(VREDIRNAME,&handle);
|
|
||||||
if (dwSize)
|
if (dwSize)
|
||||||
{
|
{
|
||||||
|
BYTE infoBuffer[512];
|
||||||
GetFileVersionInfo(VREDIRNAME,handle,dwSize,infoBuffer);
|
GetFileVersionInfo(VREDIRNAME,handle,dwSize,infoBuffer);
|
||||||
long *language;
|
long *language;
|
||||||
void * lpBuffer;
|
void * lpBuffer;
|
||||||
|
@ -923,6 +923,7 @@ void TPrefix::set(
|
|||||||
return;
|
return;
|
||||||
if (!force && !test(name))
|
if (!force && !test(name))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_prefix != ".")
|
if (_prefix != ".")
|
||||||
{
|
{
|
||||||
_manager.close_all();
|
_manager.close_all();
|
||||||
@ -1266,4 +1267,3 @@ bool TPrefix::build_firm_data(long codditta, bool flagcom)
|
|||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,6 +481,8 @@ void TRelation_application::insert_mode()
|
|||||||
// ....possibilmente spostare questa chiamata .....
|
// ....possibilmente spostare questa chiamata .....
|
||||||
if (_curr_transaction == TRANSACTION_INSERT)
|
if (_curr_transaction == TRANSACTION_INSERT)
|
||||||
ini2insert_mask();
|
ini2insert_mask();
|
||||||
|
|
||||||
|
_mask->load_profile(0, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TRelation_application::modify_mode()
|
bool TRelation_application::modify_mode()
|
||||||
|
@ -153,6 +153,10 @@ TSheet_control::TSheet_control(
|
|||||||
}
|
}
|
||||||
if (wi.find('R') >= 0)
|
if (wi.find('R') >= 0)
|
||||||
_type[i] = 'R'; else
|
_type[i] = 'R'; else
|
||||||
|
if (wi.find('V') >= 0)
|
||||||
|
_type[i] = 'V'; else
|
||||||
|
if (wi.find('P') >= 0)
|
||||||
|
_type[i] = 'P'; else
|
||||||
if (wi.find('M') >= 0)
|
if (wi.find('M') >= 0)
|
||||||
_type[i] = 'M'; else
|
_type[i] = 'M'; else
|
||||||
if (wi.find('C') >= 0)
|
if (wi.find('C') >= 0)
|
||||||
@ -233,7 +237,7 @@ TSheet_control::TSheet_control(
|
|||||||
long attr = XI_ATR_VISIBLE | XI_ATR_ENABLED | XI_ATR_AUTOSCROLL | XI_ATR_READONLY;
|
long attr = XI_ATR_VISIBLE | XI_ATR_ENABLED | XI_ATR_AUTOSCROLL | XI_ATR_READONLY;
|
||||||
if (_type[i] == 'C')
|
if (_type[i] == 'C')
|
||||||
attr |= XI_ATR_SELECTABLE;
|
attr |= XI_ATR_SELECTABLE;
|
||||||
if (_type[i] == 'R')
|
if (_type[i] == 'R' || _type[i] == 'V' || _type[i] == 'P') // Right, Currency, Price
|
||||||
attr |= XI_ATR_RJUST;
|
attr |= XI_ATR_RJUST;
|
||||||
coldef = xi_add_column_def(listdef, FIRST_FIELD+i+1000, attr, i+1,
|
coldef = xi_add_column_def(listdef, FIRST_FIELD+i+1000, attr, i+1,
|
||||||
v_width[i] * XI_FU_MULTIPLE, m_width[i], (char*)h);
|
v_width[i] * XI_FU_MULTIPLE, m_width[i], (char*)h);
|
||||||
@ -743,6 +747,20 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
|||||||
case 'M': // Set value for "roman" cell
|
case 'M': // Set value for "roman" cell
|
||||||
src = itor(atoi(row(rec).get(col)));
|
src = itor(atoi(row(rec).get(col)));
|
||||||
break;
|
break;
|
||||||
|
case 'V': // Set value for "value" cell
|
||||||
|
{
|
||||||
|
const real r = row(rec).get(col);
|
||||||
|
TCurrency c(r);
|
||||||
|
src = c.string(TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'P': // Set value for "price" cell
|
||||||
|
{
|
||||||
|
const real r = row(rec).get(col);
|
||||||
|
TPrice c(r);
|
||||||
|
src = c.string(TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default: // Set value for "normal" cell
|
default: // Set value for "normal" cell
|
||||||
src = row(rec).get(col);
|
src = row(rec).get(col);
|
||||||
break;
|
break;
|
||||||
|
@ -205,68 +205,3 @@ const char* TTable::description()
|
|||||||
return _description;
|
return _description;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct TCallbackTableinfo
|
|
||||||
{
|
|
||||||
TString16 _var1, _var2, _var3;
|
|
||||||
TString4 _module;
|
|
||||||
TFilename _tabapp, _relapp;
|
|
||||||
};
|
|
||||||
|
|
||||||
HIDDEN int find_relapp(TConfig& cfg, void* jolly)
|
|
||||||
{
|
|
||||||
TCallbackTableinfo& info = *((TCallbackTableinfo*)jolly);
|
|
||||||
|
|
||||||
if (cfg.exist(info._var1))
|
|
||||||
{
|
|
||||||
info._tabapp = cfg.get(info._var1);
|
|
||||||
if (info._tabapp.not_empty())
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (cfg.get_paragraph().compare(info._module, 2, TRUE) == 0)
|
|
||||||
{
|
|
||||||
if (cfg.exist(info._var2))
|
|
||||||
{
|
|
||||||
info._relapp = cfg.get(info._var2);
|
|
||||||
if (info._relapp.not_empty())
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if (cfg.exist(info._var3))
|
|
||||||
{
|
|
||||||
info._relapp = cfg.get(info._var3);
|
|
||||||
if (info._relapp.not_empty())
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TTable::get_relapp(TString& app) const
|
|
||||||
{
|
|
||||||
TConfig ini("install.ini");
|
|
||||||
TCallbackTableinfo fi;
|
|
||||||
fi._var1.format("Edit_%s", (const char*)_tabname);
|
|
||||||
fi._var2.format("Edit_%d", num());
|
|
||||||
fi._var3.format("Edit_%d", num() == LF_TAB ? LF_TABCOM : LF_TAB);
|
|
||||||
fi._module = ((TTable*)this)->module();
|
|
||||||
ini.for_each_paragraph(find_relapp, &fi);
|
|
||||||
|
|
||||||
app = fi._tabapp;
|
|
||||||
if (app.empty())
|
|
||||||
app = fi._relapp;
|
|
||||||
if (app.empty())
|
|
||||||
{
|
|
||||||
app = "ba3 -0";
|
|
||||||
if (fi._module.compare("ba", 2, TRUE) != 0)
|
|
||||||
{
|
|
||||||
TConfig c(CONFIG_STUDIO, fi._module);
|
|
||||||
if (c.exist("TabPrg"))
|
|
||||||
app = c.get("TabPrg");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
app << ' ';
|
|
||||||
if (num() == LF_TABCOM)
|
|
||||||
app << '%';
|
|
||||||
app << _tabname;
|
|
||||||
return app.not_empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@ public:
|
|||||||
// @cmember Ritorna la relapp che gestisce la tabella
|
// @cmember Ritorna la relapp che gestisce la tabella
|
||||||
virtual bool get_relapp(TString& app) const;
|
virtual bool get_relapp(TString& app) const;
|
||||||
|
|
||||||
|
|
||||||
// @cmember Ritorna il numero logico della tabella <p tabname>
|
// @cmember Ritorna il numero logico della tabella <p tabname>
|
||||||
static int name2log(const char* tabname);
|
static int name2log(const char* tabname);
|
||||||
};
|
};
|
||||||
|
@ -164,14 +164,11 @@ HIDDEN bool _pi_val(TMask_field& f, KEY)
|
|||||||
{
|
{
|
||||||
if (f.dirty())
|
if (f.dirty())
|
||||||
{
|
{
|
||||||
bool len_error = TRUE;
|
ok = f.yesno_box("Partita IVA errata, la accetto ugualmente?");
|
||||||
if (stato.blank() || stato == "IT")
|
|
||||||
len_error = pi.len() != 11;
|
|
||||||
const char* msg = len_error ? "Lunghezza p" : "P";
|
|
||||||
ok = f.yesno_box("%sartita IVA errata, la accetto ugualmente?", msg);
|
|
||||||
if (ok) f.set_dirty(FALSE);
|
if (ok) f.set_dirty(FALSE);
|
||||||
}
|
}
|
||||||
else ok = TRUE; // Era gia' errata e la ho accettata
|
else
|
||||||
|
ok = TRUE; // Era gia' errata e la ho accettata
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
@ -782,8 +782,6 @@ bool TSchedaPercipienti::check_competenza(TMask_field& f, KEY k)
|
|||||||
//
|
//
|
||||||
bool TSchedaPercipienti::check_handler(TMask_field& f, KEY k)
|
bool TSchedaPercipienti::check_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
const int fdec = TCurrency::get_firm_dec();
|
|
||||||
|
|
||||||
if (k == K_ENTER)
|
if (k == K_ENTER)
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
@ -828,11 +826,13 @@ bool TSchedaPercipienti::check_handler(TMask_field& f, KEY k)
|
|||||||
for (i = 0; i < rver.items(); i++)
|
for (i = 0; i < rver.items(); i++)
|
||||||
{
|
{
|
||||||
TToken_string& row = (TToken_string&)rver[i];
|
TToken_string& row = (TToken_string&)rver[i];
|
||||||
if (app().my_empty_items(row, TRUE)) continue;
|
if (app().my_empty_items(row, TRUE))
|
||||||
|
continue;
|
||||||
real versato (row.get(7));
|
real versato (row.get(7));
|
||||||
app()._tot_vers += versato;
|
app()._tot_vers += versato;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int fdec = TCurrency::get_firm_dec();
|
||||||
app()._tot_rit.round(fdec);
|
app()._tot_rit.round(fdec);
|
||||||
app()._tot_vers.round(fdec);
|
app()._tot_vers.round(fdec);
|
||||||
|
|
||||||
@ -840,18 +840,22 @@ bool TSchedaPercipienti::check_handler(TMask_field& f, KEY k)
|
|||||||
m.set(F_RITOPE, app()._tot_rit);
|
m.set(F_RITOPE, app()._tot_rit);
|
||||||
m.set(F_RITVER, app()._tot_vers);
|
m.set(F_RITVER, app()._tot_vers);
|
||||||
|
|
||||||
const real THRESOLD = 500.00;
|
const real diff = abs(app()._tot_vers - app()._tot_rit);
|
||||||
const real diff = app()._tot_vers - app()._tot_rit;
|
|
||||||
|
|
||||||
if (app()._tot_vers != ZERO && diff > ZERO)
|
if (app()._tot_vers != ZERO && diff > ZERO)
|
||||||
if (diff > THRESOLD)
|
{
|
||||||
|
const bool in_euro = is_euro_value("");
|
||||||
|
const real THRESOLD = in_euro ? 0.50 : 500.0;
|
||||||
|
const bool war = in_euro ? (diff >= THRESOLD) : (diff > THRESOLD);
|
||||||
|
if (war)
|
||||||
{
|
{
|
||||||
f.warning_box("La differenza tra il totale dei versamenti "
|
f.warning_box("La differenza tra il totale dei versamenti "
|
||||||
"e il totale delle ritenute non puo' superare "
|
"ed il totale delle ritenute non puo' superare %s %s",
|
||||||
"le %s lire", THRESOLD.string());
|
THRESOLD.string(), in_euro ? "Euro" : "Lire");
|
||||||
return forzatura;
|
return forzatura;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -889,7 +893,6 @@ void TSchedaPercipienti::mask2rel(const TMask& m)
|
|||||||
_rel->destroy_rows(); // Destroy all records
|
_rel->destroy_rows(); // Destroy all records
|
||||||
pag_pack(); // Destroy all null rows
|
pag_pack(); // Destroy all null rows
|
||||||
|
|
||||||
|
|
||||||
// salva pagamenti
|
// salva pagamenti
|
||||||
TArray& rows = pags().rows_array();
|
TArray& rows = pags().rows_array();
|
||||||
for (int i = 0; i < rows.items(); i++)
|
for (int i = 0; i < rows.items(); i++)
|
||||||
@ -984,10 +987,10 @@ void TSchedaPercipienti::mask2rel(const TMask& m)
|
|||||||
const char luogo = row.get_char(2);
|
const char luogo = row.get_char(2);
|
||||||
const char tipo = row.get_char(3);
|
const char tipo = row.get_char(3);
|
||||||
|
|
||||||
TString16 serie(row.get(4));
|
const TString16 serie(row.get(4));
|
||||||
TString numero(row.get(5));
|
const TString16 numero(row.get(5));
|
||||||
const long ProgBanca(row.get_long(6));
|
const long ProgBanca(row.get_long(6));
|
||||||
real ritenuta (row.get(7));
|
const real ritenuta (row.get(7));
|
||||||
const int numvers (row.get_int(8));
|
const int numvers (row.get_int(8));
|
||||||
|
|
||||||
r.put("VERS1015",vers1015);
|
r.put("VERS1015",vers1015);
|
||||||
|
@ -143,8 +143,8 @@ BEGIN
|
|||||||
DISPLAY "N°docum." NUMDOC
|
DISPLAY "N°docum." NUMDOC
|
||||||
DISPLAY "Quadro" %CA7->S1
|
DISPLAY "Quadro" %CA7->S1
|
||||||
DISPLAY "Caus." CAUSQUA
|
DISPLAY "Caus." CAUSQUA
|
||||||
DISPLAY "Rit.operate@15r" RITOPE
|
DISPLAY "Rit.operate@15V" RITOPE
|
||||||
DISPLAY "Rit.versate@15r" RITVER
|
DISPLAY "Rit.versate@15V" RITVER
|
||||||
OUTPUT F_TIPOA TIPOA
|
OUTPUT F_TIPOA TIPOA
|
||||||
OUTPUT F_CODANAGR CODANAGR
|
OUTPUT F_CODANAGR CODANAGR
|
||||||
OUTPUT F_NPROG NPROG
|
OUTPUT F_NPROG NPROG
|
||||||
|
166
m770/770200.cpp
166
m770/770200.cpp
@ -13,7 +13,7 @@
|
|||||||
#include "77lib.h"
|
#include "77lib.h"
|
||||||
#include "770200a.h"
|
#include "770200a.h"
|
||||||
|
|
||||||
class TVersa_rit : public TApplication
|
class TVersa_rit : public TSkeleton_application
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
TLink770 _coll;
|
TLink770 _coll;
|
||||||
@ -44,7 +44,7 @@ class TVersa_rit : public TApplication
|
|||||||
protected:
|
protected:
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
virtual bool menu(MENU_TAG m);
|
virtual void main_loop();
|
||||||
|
|
||||||
int split_rpag(const long codditta,char tipoa,
|
int split_rpag(const long codditta,char tipoa,
|
||||||
const long codanagr, const int nprog,
|
const long codanagr, const int nprog,
|
||||||
@ -55,9 +55,9 @@ class TVersa_rit : public TApplication
|
|||||||
const int nriga, const long new_vers);
|
const int nriga, const long new_vers);
|
||||||
long add_new_vers(const long codditta, char tipoa,
|
long add_new_vers(const long codditta, char tipoa,
|
||||||
const long codanagr, const int nprog,
|
const long codanagr, const int nprog,
|
||||||
real& versato);
|
const real& versato);
|
||||||
|
|
||||||
void attach_pag_vers(TToken_string& r, real& versato, const bool last=FALSE);
|
void attach_pag_vers(TToken_string& r, real& versato, bool last);
|
||||||
|
|
||||||
real ritenuta_versata(const long codditta,const long numvers);
|
real ritenuta_versata(const long codditta,const long numvers);
|
||||||
bool ha_pagamenti_non_versati(const long codditta,
|
bool ha_pagamenti_non_versati(const long codditta,
|
||||||
@ -84,8 +84,6 @@ TCursor* TVersa_rit::meik_curs(TRelation* rel)
|
|||||||
|
|
||||||
bool TVersa_rit::create()
|
bool TVersa_rit::create()
|
||||||
{
|
{
|
||||||
TApplication::create();
|
|
||||||
|
|
||||||
// simulo una chiamata da contabilità
|
// simulo una chiamata da contabilità
|
||||||
// (lo lascio per eventuali prove)
|
// (lo lascio per eventuali prove)
|
||||||
// real totdocla = ZERO;
|
// real totdocla = ZERO;
|
||||||
@ -115,10 +113,10 @@ bool TVersa_rit::create()
|
|||||||
TMessage* msg = m.next_s("LINK770");
|
TMessage* msg = m.next_s("LINK770");
|
||||||
|
|
||||||
// Questo programma si richiama solo dalla contabilita'
|
// Questo programma si richiama solo dalla contabilita'
|
||||||
if (!msg) return FALSE;
|
if (!msg)
|
||||||
|
return FALSE;
|
||||||
if ( !_coll.read(msg->body()) )
|
if ( !_coll.read(msg->body()) )
|
||||||
return warning_box("Errore nei parametri passati");
|
return warning_box("Errore nei parametri passati");
|
||||||
|
|
||||||
_perc = new TLocalisamfile(LF_PERC);
|
_perc = new TLocalisamfile(LF_PERC);
|
||||||
_scperc = new TLocalisamfile(LF_SCPERC);
|
_scperc = new TLocalisamfile(LF_SCPERC);
|
||||||
_rpag = new TLocalisamfile(LF_RPAG);
|
_rpag = new TLocalisamfile(LF_RPAG);
|
||||||
@ -147,11 +145,11 @@ bool TVersa_rit::create()
|
|||||||
"@1|T|Codice|Scheda n.|Data@10|Ragione@50");
|
"@1|T|Codice|Scheda n.|Data@10|Ragione@50");
|
||||||
_pagam = new TArray_sheet(3, 3, -3, -3,
|
_pagam = new TArray_sheet(3, 3, -3, -3,
|
||||||
"Selezione ritenute da versare",
|
"Selezione ritenute da versare",
|
||||||
"@1|T|Codice|Scheda n.|Riga n.|Ritenuta@18R");
|
"@1|T|Codice|Scheda n.|Riga n.|Ritenuta@18V");
|
||||||
|
|
||||||
_apags.destroy();
|
_apags.destroy();
|
||||||
dispatch_e_menu (BAR_ITEM(1));
|
|
||||||
return TRUE;
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVersa_rit::destroy()
|
bool TVersa_rit::destroy()
|
||||||
@ -232,15 +230,15 @@ bool TVersa_rit::abicab_hndl(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
if (f.to_check(k))
|
if (f.to_check(k))
|
||||||
{
|
{
|
||||||
TString16 park(f.get());
|
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
char tipo = m.get(F_TIPO)[0];
|
const char tipo = m.get(F_TIPO)[0];
|
||||||
|
|
||||||
// ABI/CAB solo se tipo e' B
|
// ABI/CAB solo se tipo e' B
|
||||||
if (tipo != 'B')
|
if (tipo != 'B')
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
for (int i=0; i<park.len(); i++)
|
const TString& park = f.get();
|
||||||
|
for (int i=0; park[i]; i++)
|
||||||
if (!isdigit(park[i]))
|
if (!isdigit(park[i]))
|
||||||
return f.warning_box("Il codice ABI/CAB deve essere numerico");
|
return f.warning_box("Il codice ABI/CAB deve essere numerico");
|
||||||
}
|
}
|
||||||
@ -334,7 +332,8 @@ bool TVersa_rit::ha_pagamenti_non_versati(const long codditta,char tipoa,const l
|
|||||||
rpag.next();
|
rpag.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found) add(codditta,tipoa,codanagr,nprog,rriga);
|
if (found)
|
||||||
|
add(codditta,tipoa,codanagr,nprog,rriga);
|
||||||
|
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
@ -360,16 +359,14 @@ void TVersa_rit::build_pagam_sheet(const long codditta)
|
|||||||
while ( (nriga = tpag->get_int()) != 0 ) // le righe partono da 1
|
while ( (nriga = tpag->get_int()) != 0 ) // le righe partono da 1
|
||||||
{
|
{
|
||||||
const real da_versare = tpag->get(); // leggo importo rimasto da versare
|
const real da_versare = tpag->get(); // leggo importo rimasto da versare
|
||||||
const TCurrency k(da_versare);
|
|
||||||
|
|
||||||
TToken_string rr(100);
|
TToken_string rr(100);
|
||||||
rr.add(" "); // Spazio per selezionare
|
rr.add(" "); // Spazio per selezionare
|
||||||
rr.add(tipoa);
|
rr.add(tipoa);
|
||||||
rr.add(codanagr);
|
rr.add(codanagr);
|
||||||
// rr.add(ragsoc);
|
|
||||||
rr.add(nprog);
|
rr.add(nprog);
|
||||||
rr.add(nriga);
|
rr.add(nriga);
|
||||||
rr.add(k.string(TRUE));
|
rr.add(da_versare.string()); // Importo senza punti e virgole !!!!!!!!!!!!!
|
||||||
_pagam->add(rr);
|
_pagam->add(rr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -424,11 +421,11 @@ void TVersa_rit::build_schede_sheet(const long codditta)
|
|||||||
|
|
||||||
bool TVersa_rit::do_all()
|
bool TVersa_rit::do_all()
|
||||||
{
|
{
|
||||||
KEY kp;
|
|
||||||
long items = 0L;
|
long items = 0L;
|
||||||
|
|
||||||
// esecuzione prima maschera: richiesta estremi versamento
|
// esecuzione prima maschera: richiesta estremi versamento
|
||||||
kp = _msk->run();
|
KEY kp = _msk->run();
|
||||||
|
|
||||||
if (kp != K_ENTER)
|
if (kp != K_ENTER)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -463,15 +460,15 @@ bool TVersa_rit::do_all()
|
|||||||
}
|
}
|
||||||
|
|
||||||
kp = _sheet_perc->run();
|
kp = _sheet_perc->run();
|
||||||
|
|
||||||
if (kp == K_ENTER)
|
if (kp == K_ENTER)
|
||||||
|
{
|
||||||
if (!_sheet_perc->one_checked())
|
if (!_sheet_perc->one_checked())
|
||||||
{
|
{
|
||||||
warning_box("Nessun percipiente selezionato");
|
warning_box("Nessun percipiente selezionato");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (kp == K_ESC)
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
const long selected = _sheet_perc->selected();
|
const long selected = _sheet_perc->selected();
|
||||||
@ -488,15 +485,15 @@ bool TVersa_rit::do_all()
|
|||||||
}
|
}
|
||||||
|
|
||||||
kp = _schede->run();
|
kp = _schede->run();
|
||||||
|
|
||||||
if (kp == K_ENTER)
|
if (kp == K_ENTER)
|
||||||
|
{
|
||||||
if (!_schede->one_checked())
|
if (!_schede->one_checked())
|
||||||
{
|
{
|
||||||
warning_box("Nessuna scheda selezionata");
|
warning_box("Nessuna scheda selezionata");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (kp == K_ESC)
|
else
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
build_pagam_sheet(codditta);
|
build_pagam_sheet(codditta);
|
||||||
@ -518,74 +515,42 @@ bool TVersa_rit::do_all()
|
|||||||
|
|
||||||
// Distribuisce _versato sui pagamenti selezionati creando la riga di
|
// Distribuisce _versato sui pagamenti selezionati creando la riga di
|
||||||
// versamento se occorre
|
// versamento se occorre
|
||||||
|
const long totchk = _pagam->checked();
|
||||||
|
if (totchk > 0)
|
||||||
|
{
|
||||||
long chk = 0L;
|
long chk = 0L;
|
||||||
for (int i=0; i < _pagam->items(); i++)
|
for (int i=0; i < _pagam->items() && _versato > ZERO; i++) if (_pagam->checked(i))
|
||||||
if (_pagam->checked(i))
|
|
||||||
{
|
{
|
||||||
chk++;
|
chk++;
|
||||||
if (_versato == ZERO) break;
|
const bool is_last_checked = (chk == totchk);
|
||||||
// Sull'ultimo pagamento metto tutto il versamento rimasto
|
|
||||||
const bool last_checked = chk == _pagam->checked();
|
|
||||||
|
|
||||||
TToken_string& r = _pagam->row(i);
|
TToken_string& r = _pagam->row(i);
|
||||||
real da_versare(r.get(5));
|
attach_pag_vers(r, _versato, is_last_checked);
|
||||||
|
}
|
||||||
attach_pag_vers(r, _versato, last_checked);
|
return warning_box("Creazione di %d versamenti terminata", chk);
|
||||||
|
|
||||||
if (da_versare > _versato)
|
|
||||||
_versato = ZERO;
|
|
||||||
else
|
|
||||||
_versato -= da_versare;
|
|
||||||
}
|
}
|
||||||
return warning_box("Creazione versamenti terminata");
|
|
||||||
} // while (TRUE)
|
} // while (TRUE)
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TVersa_rit::attach_pag_vers(TToken_string& r, real& versato, const bool last)
|
void TVersa_rit::attach_pag_vers(TToken_string& r, real& disponibile, bool is_last)
|
||||||
{
|
{
|
||||||
char tipoa = r.get_char(1);
|
const long codditta = get_firm();
|
||||||
|
const char tipoa = r.get_char(1);
|
||||||
const long codanagr = r.get_long(2);
|
const long codanagr = r.get_long(2);
|
||||||
const int nprog = r.get_int(3);
|
const int nprog = r.get_int(3);
|
||||||
const int nriga = r.get_int(4);
|
const int nriga = r.get_int(4);
|
||||||
const long codditta = get_firm();
|
const real da_versare = r.get(5); // importo ancora "scoperto" in questo pag.
|
||||||
real da_versare(r.get(5)); // importo ancora "scoperto" in questo pag.
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
TLocalisamfile rpag(LF_RPAG);
|
|
||||||
rpag.setkey(1);
|
|
||||||
rpag.zero();
|
|
||||||
rpag.put("CODDITTA", (long)codditta);
|
|
||||||
rpag.put("TIPOA", tipoa);
|
|
||||||
rpag.put("CODANAGR", (long)codanagr);
|
|
||||||
rpag.put("NPROG", nprog);
|
|
||||||
rpag.put("NRIGA", nriga);
|
|
||||||
if (rpag.read() != NOERR) return; // Non dovrebbe succedere mai
|
|
||||||
// Decido l'importo da attribuire al nuovo versamento
|
|
||||||
real ritenuta = rpag.get_real("RITENUTA");
|
|
||||||
*************************************************************************/
|
|
||||||
|
|
||||||
real vers_corr = ZERO;
|
|
||||||
|
|
||||||
|
real vers_corr;
|
||||||
// Se e' l'ultimo pagamento metto tutto l'importo del versamento
|
// Se e' l'ultimo pagamento metto tutto l'importo del versamento
|
||||||
if (last)
|
if (is_last)
|
||||||
vers_corr = versato;
|
vers_corr = disponibile;
|
||||||
else
|
else
|
||||||
vers_corr = versato > da_versare ? da_versare : versato;
|
vers_corr = (disponibile > da_versare) ? da_versare : disponibile;
|
||||||
|
disponibile -= vers_corr; // Scalo versamento corrente
|
||||||
|
|
||||||
// const long numvers = rpag.get_long("NUMVERS");
|
|
||||||
const long new_vers = add_new_vers(codditta,tipoa,codanagr,nprog,vers_corr);
|
const long new_vers = add_new_vers(codditta,tipoa,codanagr,nprog,vers_corr);
|
||||||
|
|
||||||
// Se il pagamento era gia' collegato ad un versamento lo divido in due
|
|
||||||
// pagamenti: uno lo lascio collegato al precedente versamento, l'altro
|
|
||||||
// collegato al nuovo.
|
|
||||||
// Ogni pagamento puo' essere collegato A UNO E UNO SOLO versamento
|
|
||||||
/******
|
|
||||||
if (numvers > 0)
|
|
||||||
split_rpag(codditta,tipoa,codanagr,nprog,nriga,versato,da_versare,new_vers);
|
|
||||||
else
|
|
||||||
*****/
|
|
||||||
attach_rpag(codditta,tipoa,codanagr,nprog,nriga,new_vers);
|
attach_rpag(codditta,tipoa,codanagr,nprog,nriga,new_vers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -638,7 +603,7 @@ int TVersa_rit::split_rpag(const long codditta,char tipoa,
|
|||||||
// Leggo ritenuta del vecchio record e il suo versamento eventuale
|
// Leggo ritenuta del vecchio record e il suo versamento eventuale
|
||||||
// La parte che era stata gia' versata resta con il vecchio record
|
// La parte che era stata gia' versata resta con il vecchio record
|
||||||
// La parte versata ora viene registrata nel nuovo.
|
// La parte versata ora viene registrata nel nuovo.
|
||||||
real ritenuta = rpag.get_real("RITENUTA");
|
real ritenuta = rpag.get("RITENUTA");
|
||||||
real parte_versata = ritenuta - da_versare;
|
real parte_versata = ritenuta - da_versare;
|
||||||
|
|
||||||
TRectype salvo(rpag.curr());
|
TRectype salvo(rpag.curr());
|
||||||
@ -673,25 +638,25 @@ int TVersa_rit::attach_rpag(const long codditta, char tipoa,
|
|||||||
const int nriga, const long new_vers)
|
const int nriga, const long new_vers)
|
||||||
{
|
{
|
||||||
TLocalisamfile rpag(LF_RPAG);
|
TLocalisamfile rpag(LF_RPAG);
|
||||||
int ret_code = 0;
|
|
||||||
|
|
||||||
rpag.zero();
|
rpag.zero();
|
||||||
rpag.put("CODDITTA", (long)codditta);
|
rpag.put("CODDITTA", codditta);
|
||||||
rpag.put("TIPOA", tipoa);
|
rpag.put("TIPOA", tipoa);
|
||||||
rpag.put("CODANAGR", (long)codanagr);
|
rpag.put("CODANAGR", codanagr);
|
||||||
rpag.put("NPROG", nprog);
|
rpag.put("NPROG", nprog);
|
||||||
rpag.put("NRIGA", nriga);
|
rpag.put("NRIGA", nriga);
|
||||||
|
|
||||||
if ((ret_code = rpag.read()) != NOERR)
|
int ret_code = rpag.read();
|
||||||
|
if (ret_code != NOERR)
|
||||||
{
|
{
|
||||||
warning_box("Pagamento non trovato. Codice %d", ret_code);
|
error_box("Pagamento non trovato. Errore %d", ret_code);
|
||||||
return ret_code;
|
return ret_code;
|
||||||
}
|
}
|
||||||
rpag.put("NUMVERS", (long)new_vers);
|
rpag.put("NUMVERS", new_vers);
|
||||||
|
|
||||||
if ((ret_code = rpag.rewrite()) != NOERR)
|
ret_code = rpag.rewrite();
|
||||||
|
if (ret_code != NOERR)
|
||||||
{
|
{
|
||||||
warning_box("Pagamento non modificato. Codice %d", ret_code);
|
error_box("Pagamento non modificato. Errore %d", ret_code);
|
||||||
return ret_code;
|
return ret_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -700,7 +665,7 @@ int TVersa_rit::attach_rpag(const long codditta, char tipoa,
|
|||||||
|
|
||||||
long TVersa_rit::add_new_vers(const long codditta, char tipoa,
|
long TVersa_rit::add_new_vers(const long codditta, char tipoa,
|
||||||
const long codanagr, const int nprog,
|
const long codanagr, const int nprog,
|
||||||
real& versata)
|
const real& versata)
|
||||||
{
|
{
|
||||||
TLocalisamfile rver(LF_RVER);
|
TLocalisamfile rver(LF_RVER);
|
||||||
int nriga = 0;
|
int nriga = 0;
|
||||||
@ -723,9 +688,9 @@ long TVersa_rit::add_new_vers(const long codditta, char tipoa,
|
|||||||
|
|
||||||
// Scrivo il nuovo record
|
// Scrivo il nuovo record
|
||||||
rver.zero();
|
rver.zero();
|
||||||
rver.put("CODDITTA", (long)codditta);
|
rver.put("CODDITTA", codditta);
|
||||||
rver.put("TIPOA", tipoa);
|
rver.put("TIPOA", tipoa);
|
||||||
rver.put("CODANAGR", (long)codanagr);
|
rver.put("CODANAGR", codanagr);
|
||||||
rver.put("NPROG", nprog);
|
rver.put("NPROG", nprog);
|
||||||
rver.put("NRIGA", nriga);
|
rver.put("NRIGA", nriga);
|
||||||
// rver.put("NUMVERS", (long)nriga);
|
// rver.put("NUMVERS", (long)nriga);
|
||||||
@ -738,23 +703,32 @@ long TVersa_rit::add_new_vers(const long codditta, char tipoa,
|
|||||||
|
|
||||||
if (rver.write() != NOERR)
|
if (rver.write() != NOERR)
|
||||||
{
|
{
|
||||||
warning_box("Fallita creazione versamento. Codice %d", rver.status());
|
error_box("Fallita creazione versamento. Errore %d", rver.status());
|
||||||
return 0L;
|
return 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TLocalisamfile scperc(LF_SCPERC);
|
||||||
|
scperc.zero();
|
||||||
|
scperc.put("CODDITTA", codditta);
|
||||||
|
scperc.put("TIPOA", tipoa);
|
||||||
|
scperc.put("CODANAGR", codanagr);
|
||||||
|
scperc.put("NPROG", nprog);
|
||||||
|
if (scperc.read() == NOERR)
|
||||||
|
{
|
||||||
|
real ritver = scperc.get("RITVER");
|
||||||
|
ritver += versata;
|
||||||
|
scperc.put("RITVER", ritver);
|
||||||
|
scperc.rewrite();
|
||||||
|
}
|
||||||
|
|
||||||
return nriga;
|
return nriga;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TVersa_rit::main_loop()
|
||||||
bool TVersa_rit::menu(MENU_TAG m)
|
|
||||||
{
|
{
|
||||||
if (m == BAR_ITEM(1))
|
do_all();
|
||||||
return do_all();
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int collega_vers_rit(int argc, char* argv[])
|
int collega_vers_rit(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
TVersa_rit a;
|
TVersa_rit a;
|
||||||
|
@ -44,14 +44,12 @@ BEGIN
|
|||||||
PROMPT 2 5 "Data "
|
PROMPT 2 5 "Data "
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Inserire la data del versamento"
|
WARNING "Inserire la data del versamento"
|
||||||
HELP "Inserire la data del versamento"
|
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_LUOGO 1
|
STRING F_LUOGO 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 5 "Luogo "
|
PROMPT 21 5 "Luogo "
|
||||||
HELP "Indicare il luogo del versamento"
|
|
||||||
SHEET "Cod.|Descrizione@30"
|
SHEET "Cod.|Descrizione@30"
|
||||||
INPUT F_LUOGO
|
INPUT F_LUOGO
|
||||||
ITEM " |Nessuno"
|
ITEM " |Nessuno"
|
||||||
@ -61,7 +59,6 @@ BEGIN
|
|||||||
OUTPUT 71
|
OUTPUT 71
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
WARNING "Manca il luogo del versamento"
|
WARNING "Manca il luogo del versamento"
|
||||||
HELP "Inserire il luogo del versamento"
|
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
@ -114,7 +111,6 @@ BEGIN
|
|||||||
OUTPUT F_TIPO
|
OUTPUT F_TIPO
|
||||||
OUTPUT 70
|
OUTPUT 70
|
||||||
GROUP 1
|
GROUP 1
|
||||||
HELP "Inserire il tipo di versamento"
|
|
||||||
WARNING "Manca il tipo di versamento"
|
WARNING "Manca il tipo di versamento"
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
@ -148,7 +144,6 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
FLAGS "G"
|
FLAGS "G"
|
||||||
WARNING "Inserire il numero di serie"
|
WARNING "Inserire il numero di serie"
|
||||||
HELP "Inserire la serie"
|
|
||||||
GROUP 1 2 4
|
GROUP 1 2 4
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -157,7 +152,6 @@ BEGIN
|
|||||||
PROMPT 39 7 ""
|
PROMPT 39 7 ""
|
||||||
VALIDATE REQIF_FUNC 2 103 104
|
VALIDATE REQIF_FUNC 2 103 104
|
||||||
WARNING "Inserire il numero/quietanza"
|
WARNING "Inserire il numero/quietanza"
|
||||||
HELP "Inserire il numero"
|
|
||||||
FLAGS "G"
|
FLAGS "G"
|
||||||
GROUP 1 2 3 4 5
|
GROUP 1 2 3 4 5
|
||||||
END
|
END
|
||||||
@ -165,8 +159,6 @@ END
|
|||||||
CURRENCY F_VERSATO 15
|
CURRENCY F_VERSATO 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Importo versato "
|
PROMPT 2 10 "Importo versato "
|
||||||
PICTURE "."
|
|
||||||
HELP "Inserire l'importo versato"
|
|
||||||
WARNING "Manca l'importo versato"
|
WARNING "Manca l'importo versato"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
@ -70,9 +70,9 @@ protected:
|
|||||||
virtual void postclose_print();
|
virtual void postclose_print();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TRectype& look_causali(int);
|
const TRectype& look_causali(int);
|
||||||
TRectype& look_schperc(long,char,long,int);
|
const TRectype& look_schperc(long,char,long,int);
|
||||||
TDate look_vers(TSchedaP& sch, long numvers);
|
TDate look_vers(const TSchedaP& sch, long numvers);
|
||||||
void crea_sort();
|
void crea_sort();
|
||||||
void init_sort();
|
void init_sort();
|
||||||
void leggi_sort();
|
void leggi_sort();
|
||||||
@ -90,11 +90,11 @@ HIDDEN inline TSt_vers& app() { return (TSt_vers&)main_app(); }
|
|||||||
|
|
||||||
const real& round_mille_lire(real& n)
|
const real& round_mille_lire(real& n)
|
||||||
{
|
{
|
||||||
|
// Arrotonda alle mille lire se siamo in lire, altrimenti non arrotondare!
|
||||||
const int dec = TCurrency::get_firm_dec();
|
const int dec = TCurrency::get_firm_dec();
|
||||||
if (dec == 0)
|
if (dec == 0)
|
||||||
n.round(-3); // 1000 Lire
|
n.round(-3); // 1000 Lire
|
||||||
else
|
|
||||||
n.round(0); // Un Euro
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,25 +115,22 @@ bool TSt_vers::codditta_hnd(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
bool filter_func (const TRelation* rel)
|
bool filter_func (const TRelation* rel)
|
||||||
{
|
{
|
||||||
long codditta = rel->lfile(LF_RPAG).get_long(PAG_CODDITTA);
|
const TRectype& rpag = rel->curr(LF_RPAG);
|
||||||
|
const long codditta = rpag.get_long(PAG_CODDITTA);
|
||||||
//const TRectype& rec = rel->lfile(LF_RVER).curr();
|
|
||||||
|
|
||||||
if (codditta != app()._codditta)
|
if (codditta != app()._codditta)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
TDate datapag = rel->lfile(LF_RPAG).get(PAG_DATAPAG);
|
const TDate datapag = rpag.get(PAG_DATAPAG);
|
||||||
|
|
||||||
if (datapag.ok() && datapag <= app()._datamsk)
|
if (datapag.ok() && datapag <= app()._datamsk)
|
||||||
{
|
{
|
||||||
long numvers = rel->lfile(LF_RPAG).get_long(PAG_NUMVERS);
|
const long numvers = rpag.get_long(PAG_NUMVERS);
|
||||||
if (numvers <= 0)
|
if (numvers <= 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
const long codanagr = rel->lfile(LF_RPAG).get_long(PAG_CODANAGR);
|
const long codanagr = rpag.get_long(PAG_CODANAGR);
|
||||||
const char tipoa = rel->lfile(LF_RPAG).get_char(PAG_TIPOA);
|
const char tipoa = rpag.get_char(PAG_TIPOA);
|
||||||
const int nprog = rel->lfile(LF_RPAG).get_int(PAG_NPROG);
|
const int nprog = rpag.get_int(PAG_NPROG);
|
||||||
TSchedaP sch(codditta, tipoa, codanagr, nprog);
|
TSchedaP sch(codditta, tipoa, codanagr, nprog);
|
||||||
//TDate datavers = rel->lfile(LF_RVER).get(VER_DATAVERS);
|
|
||||||
TDate datavers = app().look_vers(sch, numvers);
|
TDate datavers = app().look_vers(sch, numvers);
|
||||||
if (!datavers.ok())
|
if (!datavers.ok())
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -141,7 +138,7 @@ bool filter_func (const TRelation* rel)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
TDate TSt_vers::look_vers(TSchedaP& scheda, long num)
|
TDate TSt_vers::look_vers(const TSchedaP& scheda, long num)
|
||||||
{
|
{
|
||||||
TLocalisamfile vers(LF_RVER);
|
TLocalisamfile vers(LF_RVER);
|
||||||
vers.zero();
|
vers.zero();
|
||||||
@ -157,9 +154,9 @@ TDate TSt_vers::look_vers(TSchedaP& scheda, long num)
|
|||||||
return vers.get_date(VER_DATAVERS);
|
return vers.get_date(VER_DATAVERS);
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype& TSt_vers::look_schperc (long cod, char t, long codan, int np)
|
const TRectype& TSt_vers::look_schperc (long cod, char t, long codan, int np)
|
||||||
{
|
{
|
||||||
TLocalisamfile schede(LF_SCPERC);
|
TLocalisamfile& schede = *_scperc;
|
||||||
schede.zero();
|
schede.zero();
|
||||||
schede.put(SPR_CODDITTA, cod);
|
schede.put(SPR_CODDITTA, cod);
|
||||||
schede.put(SPR_TIPOA, t);
|
schede.put(SPR_TIPOA, t);
|
||||||
@ -172,7 +169,7 @@ TRectype& TSt_vers::look_schperc (long cod, char t, long codan, int np)
|
|||||||
return schede.curr();
|
return schede.curr();
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype& TSt_vers::look_causali(int cod)
|
const TRectype& TSt_vers::look_causali(int cod)
|
||||||
{
|
{
|
||||||
TString16 dep;
|
TString16 dep;
|
||||||
|
|
||||||
@ -221,12 +218,12 @@ void TSt_vers::crea_sort()
|
|||||||
mese = datapag.month();
|
mese = datapag.month();
|
||||||
anno = datapag.year();
|
anno = datapag.year();
|
||||||
|
|
||||||
TRectype dep = look_schperc(_codditta, tipoa, codan, nprog);
|
const TRectype dep = look_schperc(_codditta, tipoa, codan, nprog);
|
||||||
codc = dep.get_int(SPR_CODCAUS);
|
codc = dep.get_int(SPR_CODCAUS);
|
||||||
datadoc = dep.get_date(SPR_DATADOC);
|
datadoc = dep.get_date(SPR_DATADOC);
|
||||||
numdoc = dep.get(SPR_NUMDOC);
|
numdoc = dep.get(SPR_NUMDOC);
|
||||||
|
|
||||||
TRectype cau = look_causali(codc);
|
const TRectype& cau = look_causali(codc);
|
||||||
TString descr = cau.get("S0");
|
TString descr = cau.get("S0");
|
||||||
int codtrib = cau.get_int("I0");
|
int codtrib = cau.get_int("I0");
|
||||||
|
|
||||||
|
@ -121,6 +121,8 @@ class TTrasferimentoDylog : public TObject
|
|||||||
ifstream* _in_stream;
|
ifstream* _in_stream;
|
||||||
ofstream* _out_stream;
|
ofstream* _out_stream;
|
||||||
|
|
||||||
|
TString16 _defname;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool open(const char* path = "", char mode = 'r');
|
bool open(const char* path = "", char mode = 'r');
|
||||||
bool close();
|
bool close();
|
||||||
@ -130,7 +132,7 @@ public:
|
|||||||
|
|
||||||
virtual bool ok() const;
|
virtual bool ok() const;
|
||||||
|
|
||||||
const char* default_name() const { return "TRA701"; }
|
const TString& default_name();
|
||||||
|
|
||||||
TTrasferimentoDylog& operator<<(const TRecordDylog& rec)
|
TTrasferimentoDylog& operator<<(const TRecordDylog& rec)
|
||||||
{ write(rec); return *this; }
|
{ write(rec); return *this; }
|
||||||
@ -530,6 +532,16 @@ TRecordDylog::~TRecordDylog()
|
|||||||
// TTrasferimentoDylog
|
// TTrasferimentoDylog
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
const TString& TTrasferimentoDylog::default_name()
|
||||||
|
{
|
||||||
|
if (_defname.empty())
|
||||||
|
{
|
||||||
|
const TDate today(TODAY);
|
||||||
|
_defname.format("TRA7%02d", today.year() % 100);
|
||||||
|
}
|
||||||
|
return _defname;
|
||||||
|
}
|
||||||
|
|
||||||
bool TTrasferimentoDylog::open(const char* path, char mode)
|
bool TTrasferimentoDylog::open(const char* path, char mode)
|
||||||
{
|
{
|
||||||
CHECK(mode == 'r' || mode == 'w', "Invalid open mode");
|
CHECK(mode == 'r' || mode == 'w', "Invalid open mode");
|
||||||
|
12
ve/batbprs.h
12
ve/batbprs.h
@ -19,7 +19,11 @@
|
|||||||
#define F_DESCRCONTOA 119
|
#define F_DESCRCONTOA 119
|
||||||
#define F_CAMPI 120
|
#define F_CAMPI 120
|
||||||
#define F_QTA 121
|
#define F_QTA 121
|
||||||
#define F_GRUPPOPCI 122
|
#define F_GRUPPOPCIA 122
|
||||||
#define F_CONTOPCI 123
|
#define F_CONTOPCIA 123
|
||||||
#define F_SOTTOPCI 124
|
#define F_SOTTOPCIA 124
|
||||||
#define F_DESCRCONTOPCI 125
|
#define F_DESCRCONTOPCIA 125
|
||||||
|
#define F_GRUPPOPCIV 126
|
||||||
|
#define F_CONTOPCIV 127
|
||||||
|
#define F_SOTTOPCIV 128
|
||||||
|
#define F_DESCRCONTOPCIV 129
|
||||||
|
133
ve/batbprs.uml
133
ve/batbprs.uml
@ -96,7 +96,7 @@ END
|
|||||||
|
|
||||||
LISTBOX F_CAMPI 15
|
LISTBOX F_CAMPI 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Campo default "
|
PROMPT 2 9 "Campo default "
|
||||||
FIELD S6
|
FIELD S6
|
||||||
ITEM "Q|Qta prezzo "
|
ITEM "Q|Qta prezzo "
|
||||||
MESSAGE SHOW,1@|ENABLE,2@|HIDE,3@|RESET,3@
|
MESSAGE SHOW,1@|ENABLE,2@|HIDE,3@|RESET,3@
|
||||||
@ -108,7 +108,7 @@ END
|
|||||||
|
|
||||||
CURRENCY F_PREZZO 15
|
CURRENCY F_PREZZO 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Prezzo "
|
PROMPT 2 10 "Prezzo "
|
||||||
FIELD R0
|
FIELD R0
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
GROUP 1
|
GROUP 1
|
||||||
@ -116,14 +116,14 @@ END
|
|||||||
|
|
||||||
NUMBER F_QTA 13 5
|
NUMBER F_QTA 13 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 35 12 "Quantita' "
|
PROMPT 35 10 "Quantita' "
|
||||||
FIELD R1
|
FIELD R1
|
||||||
GROUP 1 2
|
GROUP 1 2
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_UM 2
|
STRING F_UM 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 63 12 "U.M. "
|
PROMPT 63 10 "U.M. "
|
||||||
FIELD S7
|
FIELD S7
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE %UMS
|
USE %UMS
|
||||||
@ -137,14 +137,14 @@ END
|
|||||||
|
|
||||||
NUMBER F_PERCENTUALE 5 2
|
NUMBER F_PERCENTUALE 5 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "Percentuale "
|
PROMPT 49 9 "Percentuale "
|
||||||
FIELD R2
|
FIELD R2
|
||||||
GROUP 3
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_NCAMPOCAL 10
|
STRING F_NCAMPOCAL 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Formula Doc. "
|
PROMPT 2 10 "Formula Doc. "
|
||||||
FIELD S5
|
FIELD S5
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %FRD
|
USE %FRD
|
||||||
@ -159,7 +159,7 @@ END
|
|||||||
|
|
||||||
STRING F_NCAMPOCAL1 50
|
STRING F_NCAMPOCAL1 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 17 13 ""
|
PROMPT 17 10 ""
|
||||||
USE %FRD KEY 2
|
USE %FRD KEY 2
|
||||||
INPUT S0 F_NCAMPOCAL1
|
INPUT S0 F_NCAMPOCAL1
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
@ -172,14 +172,14 @@ END
|
|||||||
|
|
||||||
NUMBER F_GRUPPOV 3
|
NUMBER F_GRUPPOV 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 14 "Conto vendita "
|
PROMPT 2 11 "Conto vendita "
|
||||||
FIELD I0
|
FIELD I0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CONTOV 3
|
NUMBER F_CONTOV 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 14 ""
|
PROMPT 22 11 ""
|
||||||
FIELD I1
|
FIELD I1
|
||||||
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO=="")
|
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO=="")
|
||||||
INPUT GRUPPO F_GRUPPOV
|
INPUT GRUPPO F_GRUPPOV
|
||||||
@ -196,7 +196,7 @@ BEGIN
|
|||||||
|
|
||||||
NUMBER F_SOTTOV 6
|
NUMBER F_SOTTOV 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 14 ""
|
PROMPT 30 11 ""
|
||||||
FIELD I2
|
FIELD I2
|
||||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
|
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
|
||||||
@ -218,7 +218,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESCRCONTOV 50
|
STRING F_DESCRCONTOV 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 17 15 ""
|
PROMPT 17 12 ""
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="")
|
USE LF_PCON KEY 2 SELECT (SOTTOCONTO!="")
|
||||||
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
|
JOIN LF_PCON ALIAS 500 INTO GRUPPO==GRUPPO CONTO==CONTO
|
||||||
@ -235,14 +235,14 @@ END
|
|||||||
|
|
||||||
NUMBER F_GRUPPOA 3
|
NUMBER F_GRUPPOA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 16 "Conto acquisti "
|
PROMPT 2 13 "Conto acquisti "
|
||||||
FIELD I3
|
FIELD I3
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CONTOA 3
|
NUMBER F_CONTOA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 16 ""
|
PROMPT 22 13 ""
|
||||||
FIELD I4
|
FIELD I4
|
||||||
COPY USE F_CONTOV
|
COPY USE F_CONTOV
|
||||||
INPUT GRUPPO F_GRUPPOA
|
INPUT GRUPPO F_GRUPPOA
|
||||||
@ -259,7 +259,7 @@ BEGIN
|
|||||||
|
|
||||||
NUMBER F_SOTTOA 6
|
NUMBER F_SOTTOA 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 16 ""
|
PROMPT 30 13 ""
|
||||||
FIELD I5
|
FIELD I5
|
||||||
COPY USE F_SOTTOV
|
COPY USE F_SOTTOV
|
||||||
INPUT GRUPPO F_GRUPPOA
|
INPUT GRUPPO F_GRUPPOA
|
||||||
@ -277,7 +277,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESCRCONTOA 50
|
STRING F_DESCRCONTOA 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 17 17 ""
|
PROMPT 17 14 ""
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
COPY USE F_DESCRCONTOV
|
COPY USE F_DESCRCONTOV
|
||||||
INPUT DESCR F_DESCRCONTOA
|
INPUT DESCR F_DESCRCONTOA
|
||||||
@ -288,64 +288,119 @@ BEGIN
|
|||||||
ADD RUN CG0 -0
|
ADD RUN CG0 -0
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_GRUPPOPCI 3
|
NUMBER F_GRUPPOPCIA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 18 "Conto industr. "
|
PROMPT 2 15 "Conto industr. "
|
||||||
FIELD I6
|
FIELD I6
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CONTOPCI 3
|
NUMBER F_CONTOPCIA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 18 ""
|
PROMPT 22 15 ""
|
||||||
FIELD I7
|
FIELD I7
|
||||||
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
|
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
|
||||||
INPUT CODTAB[1,3] F_GRUPPOPCI
|
INPUT CODTAB[1,3] F_GRUPPOPCIA
|
||||||
INPUT CODTAB[4,6] F_CONTOPCI
|
INPUT CODTAB[4,6] F_CONTOPCIA
|
||||||
DISPLAY "Gruppo" CODTAB[1,3]
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
DISPLAY "Conto" CODTAB[4,6]
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_GRUPPOPCI CODTAB[1,3]
|
OUTPUT F_GRUPPOPCIA CODTAB[1,3]
|
||||||
OUTPUT F_CONTOPCI CODTAB[4,6]
|
OUTPUT F_CONTOPCIA CODTAB[4,6]
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
ADD RUN BA3 -0 PCI
|
ADD RUN BA3 -0 PCI
|
||||||
WARNING "Codice piano dei conti industriale assente"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_SOTTOPCI 6
|
NUMBER F_SOTTOPCIA 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 18 ""
|
PROMPT 30 15 ""
|
||||||
FIELD I8
|
FIELD I8
|
||||||
USE PCI SELECT CODTAB[7,12]!=""
|
USE PCI SELECT CODTAB[7,12]!=""
|
||||||
INPUT CODTAB[1,3] F_GRUPPOPCI
|
INPUT CODTAB[1,3] F_GRUPPOPCIA
|
||||||
INPUT CODTAB[4,6] F_CONTOPCI
|
INPUT CODTAB[4,6] F_CONTOPCIA
|
||||||
INPUT CODTAB[7,12] F_SOTTOPCI
|
INPUT CODTAB[7,12] F_SOTTOPCIA
|
||||||
DISPLAY "Gruppo" CODTAB[1,3]
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
DISPLAY "Conto" CODTAB[4,6]
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
DISPLAY "Sottoconto" CODTAB[7,12]
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_GRUPPOPCI CODTAB[1,3]
|
OUTPUT F_GRUPPOPCIA CODTAB[1,3]
|
||||||
OUTPUT F_CONTOPCI CODTAB[4,6]
|
OUTPUT F_CONTOPCIA CODTAB[4,6]
|
||||||
OUTPUT F_SOTTOPCI CODTAB[7,12]
|
OUTPUT F_SOTTOPCIA CODTAB[7,12]
|
||||||
OUTPUT F_DESCRCONTOPCI S0
|
OUTPUT F_DESCRCONTOPCIA S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Sottoconto errato"
|
|
||||||
ADD RUN BA3 -0 PCI
|
ADD RUN BA3 -0 PCI
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCRCONTOPCI 50
|
STRING F_DESCRCONTOPCIA 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 17 19 ""
|
PROMPT 2 16 "acquisti "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE PCI KEY 2 SELECT (CODTAB[7,12]!="")
|
USE PCI KEY 2 SELECT (CODTAB[7,12]!="")
|
||||||
INPUT S0 F_DESCRCONTOPCI
|
INPUT S0 F_DESCRCONTOPCIA
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
DISPLAY "Gruppo" CODTAB[1,3]
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
DISPLAY "Conto" CODTAB[4,6]
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
DISPLAY "Sottoconto" CODTAB[7,12]
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
COPY OUTPUT F_SOTTOPCI
|
COPY OUTPUT F_SOTTOPCIA
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
ADD RUN BA0 -3 PCI
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPOPCIV 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "Conto industr. "
|
||||||
|
FIELD I9
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CONTOPCIV 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 22 17 ""
|
||||||
|
FIELD I10
|
||||||
|
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
|
||||||
|
INPUT CODTAB[1,3] F_GRUPPOPCIV
|
||||||
|
INPUT CODTAB[4,6] F_CONTOPCIV
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRUPPOPCIV CODTAB[1,3]
|
||||||
|
OUTPUT F_CONTOPCIV CODTAB[4,6]
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
ADD RUN BA3 -0 PCI
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOTTOPCIV 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 17 ""
|
||||||
|
FIELD I11
|
||||||
|
USE PCI SELECT CODTAB[7,12]!=""
|
||||||
|
INPUT CODTAB[1,3] F_GRUPPOPCIV
|
||||||
|
INPUT CODTAB[4,6] F_CONTOPCIV
|
||||||
|
INPUT CODTAB[7,12] F_SOTTOPCIV
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRUPPOPCIV CODTAB[1,3]
|
||||||
|
OUTPUT F_CONTOPCIV CODTAB[4,6]
|
||||||
|
OUTPUT F_SOTTOPCIV CODTAB[7,12]
|
||||||
|
OUTPUT F_DESCRCONTOPCIV S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
ADD RUN BA3 -0 PCI
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRCONTOPCIV 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 18 "vendita "
|
||||||
|
FLAG "U"
|
||||||
|
USE PCI KEY 2 SELECT (CODTAB[7,12]!="")
|
||||||
|
INPUT S0 F_DESCRCONTOPCIV
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
|
COPY OUTPUT F_SOTTOPCIV
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Codice piano conti industriale assente"
|
|
||||||
ADD RUN BA0 -3 PCI
|
ADD RUN BA0 -3 PCI
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -281,23 +281,16 @@ BEGIN
|
|||||||
FIELD B6
|
FIELD B6
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NATURA 1
|
STRING F_NATURA 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 44 18 "Natura transazione "
|
PROMPT 44 18 "Natura transazione "
|
||||||
SHEET "Cod.|Descrizione@66"
|
FLAGS "U"
|
||||||
INPUT F_NATURA
|
USE %INT
|
||||||
ITEM "|"
|
INPUT CODTAB F_NATURA
|
||||||
ITEM "1|Acquisto o vendita (compreso il baratto)"
|
DISPLAY "Codice" CODTAB
|
||||||
ITEM "2|Restituzione o sostituzione di merci"
|
DISPLAY "Descrizione@50" S0
|
||||||
ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea"
|
OUTPUT F_NATURA CODTAB
|
||||||
ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione"
|
FIELD S3[4,4]
|
||||||
ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione"
|
|
||||||
ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)"
|
|
||||||
ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata"
|
|
||||||
ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile"
|
|
||||||
ITEM "9|Altre transazioni"
|
|
||||||
OUTPUT F_NATURA
|
|
||||||
FIELD I2
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
47
|
47
|
||||||
0
|
0
|
||||||
$anamag|0|0|757|0|Anagrafica di magazzino|NART||
|
$anamag|0|0|775|0|Anagrafica di magazzino|NART||
|
||||||
|
@ -55,8 +55,8 @@ CONCAR|4|15|5|Peso Carta (Kg) per CONAI
|
|||||||
CONPLA|4|15|5|Peso Plastica (Kg) per CONAI
|
CONPLA|4|15|5|Peso Plastica (Kg) per CONAI
|
||||||
CONLEG|4|15|5|Peso Legno (Kg) per CONAI
|
CONLEG|4|15|5|Peso Legno (Kg) per CONAI
|
||||||
CONVET|4|15|5|Peso Vetro (Kg) per CONAI
|
CONVET|4|15|5|Peso Vetro (Kg) per CONAI
|
||||||
COLLTYPE|1|1|0|Tipo di collegamento per movimenti con distinta <> Nessuno, dalla riga <M>ovimento della causale collegata, dal <F>ornitore, dall'<A>rticolo
|
CONTOINDA|1|12|0|Codice piano dei conti industriale (GrCoSo) Acquisti
|
||||||
CODMAG|1|5|0|Codice magazzino alternativo per movimenti con distinta
|
CONTOINDV|1|12|0|Codice piano dei conti industriale (GrCoSo) Vendite
|
||||||
USER1|1|20|0|Campo libero 1
|
USER1|1|20|0|Campo libero 1
|
||||||
USER2|1|20|0|Campo libero 2
|
USER2|1|20|0|Campo libero 2
|
||||||
USER3|1|20|0|Campo libero 3
|
USER3|1|20|0|Campo libero 3
|
||||||
|
@ -363,7 +363,6 @@ void TMotore_application::ini2mask(TConfig& ini, TMask& msk, bool query)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
TSheet_field& f = msk.sfield(F_SHEET);
|
TSheet_field& f = msk.sfield(F_SHEET);
|
||||||
f.destroy();
|
|
||||||
|
|
||||||
TTipo_riga_documento tr;
|
TTipo_riga_documento tr;
|
||||||
|
|
||||||
@ -374,7 +373,10 @@ void TMotore_application::ini2mask(TConfig& ini, TMask& msk, bool query)
|
|||||||
for (int i = 1; ini.set_paragraph(format("%d,%d", LF_RIGHEDOC, i)); i++)
|
for (int i = 1; ini.set_paragraph(format("%d,%d", LF_RIGHEDOC, i)); i++)
|
||||||
{
|
{
|
||||||
if (i == 1) // Se trovo almeno una riga allora cancello tutto, poi aggiungo le righe
|
if (i == 1) // Se trovo almeno una riga allora cancello tutto, poi aggiungo le righe
|
||||||
|
{
|
||||||
|
f.destroy();
|
||||||
doc().destroy_rows();
|
doc().destroy_rows();
|
||||||
|
}
|
||||||
|
|
||||||
// Considera solo i tipi riga validi
|
// Considera solo i tipi riga validi
|
||||||
const TString16 tipo = ini.get(RDOC_TIPORIGA);
|
const TString16 tipo = ini.get(RDOC_TIPORIGA);
|
||||||
|
@ -1,32 +1,50 @@
|
|||||||
#include "ve0100b1.h"
|
#include "ve0100b1.h"
|
||||||
|
|
||||||
PAGE "Elaborazioni " -1 -1 78 17
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Elaborazioni " -1 -1 78 19
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN F_TYPE
|
BOOLEAN F_TYPE
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "Aggiungi al documento attuale"
|
PROMPT 1 0 "Aggiungere al doc. attuale"
|
||||||
MESSAGE FALSE SHOW,F_GROUP_D|HIDE,F_GROUP_S
|
MESSAGE FALSE SHOW,F_GROUP_D|HIDE,F_GROUP_S|CLEAR,F_UPDATE_HEADER
|
||||||
MESSAGE TRUE SHOW,F_GROUP_S|HIDE,F_GROUP_D
|
MESSAGE TRUE SHOW,F_GROUP_S|HIDE,F_GROUP_D|ENABLE,F_UPDATE_HEADER
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
LISTBOX F_ELAB 3 50
|
LISTBOX F_ELAB 50 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Elaborazione "
|
PROMPT 31 0 "@bElaborazione "
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX F_GROUP_D 77 11
|
GROUPBOX F_GROUP_D 77 9
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Destinazione"
|
PROMPT 1 1 "@bDestinazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX F_GROUP_S 77 11
|
GROUPBOX F_GROUP_S 77 9
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Sorgente"
|
PROMPT 1 1 "@bSorgente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPODOC_ELAB 4
|
STRING F_TIPODOC_ELAB 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Tipo documento "
|
PROMPT 2 2 "Tipo documento "
|
||||||
HELP "Codice tipo documento"
|
HELP "Codice tipo documento"
|
||||||
USE %TIP
|
USE %TIP
|
||||||
INPUT CODTAB F_TIPODOC_ELAB
|
INPUT CODTAB F_TIPODOC_ELAB
|
||||||
@ -41,7 +59,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESTIPODOC_ELAB 50
|
STRING F_DESTIPODOC_ELAB 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 5 ""
|
PROMPT 24 2 ""
|
||||||
HELP "Descrizione tipo documento"
|
HELP "Descrizione tipo documento"
|
||||||
USE %TIP KEY 2
|
USE %TIP KEY 2
|
||||||
INPUT S0 F_DESTIPODOC_ELAB
|
INPUT S0 F_DESTIPODOC_ELAB
|
||||||
@ -54,7 +72,7 @@ END
|
|||||||
|
|
||||||
STRING F_STATODOC_ELAB 1
|
STRING F_STATODOC_ELAB 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Stato "
|
PROMPT 2 3 "Stato "
|
||||||
USE %STD
|
USE %STD
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
INPUT CODTAB F_STATODOC_ELAB
|
INPUT CODTAB F_STATODOC_ELAB
|
||||||
@ -68,7 +86,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESSTATODOC_ELAB 50
|
STRING F_DESSTATODOC_ELAB 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 7 ""
|
PROMPT 24 3 ""
|
||||||
HELP "Descrizione stato documento"
|
HELP "Descrizione stato documento"
|
||||||
USE %STD KEY 2
|
USE %STD KEY 2
|
||||||
INPUT S0 F_DESSTATODOC_ELAB
|
INPUT S0 F_DESSTATODOC_ELAB
|
||||||
@ -81,7 +99,7 @@ END
|
|||||||
|
|
||||||
STRING F_CODNUM_ELAB 4
|
STRING F_CODNUM_ELAB 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 9 "Cod. num. "
|
PROMPT 2 4 "Cod. num. "
|
||||||
HELP "Codice numerazione"
|
HELP "Codice numerazione"
|
||||||
USE %NUM
|
USE %NUM
|
||||||
INPUT CODTAB F_CODNUM_ELAB
|
INPUT CODTAB F_CODNUM_ELAB
|
||||||
@ -97,7 +115,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESNUM_ELAB 50
|
STRING F_DESNUM_ELAB 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 9 ""
|
PROMPT 24 4 ""
|
||||||
HELP "Descrizione numerazione"
|
HELP "Descrizione numerazione"
|
||||||
USE %NUM KEY 2
|
USE %NUM KEY 2
|
||||||
INPUT S0 F_DESNUM_ELAB
|
INPUT S0 F_DESNUM_ELAB
|
||||||
@ -109,13 +127,13 @@ END
|
|||||||
|
|
||||||
NUMBER F_ANNO_ELAB 4
|
NUMBER F_ANNO_ELAB 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "Esercizio "
|
PROMPT 2 5 "Esercizio "
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPOCF_ELAB 1 11
|
LIST F_TIPOCF_ELAB 1 11
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 ""
|
PROMPT 2 9 ""
|
||||||
FLAGS "H"
|
FLAGS "H"
|
||||||
HELP "Indicare se cliente oppure fornitore"
|
HELP "Indicare se cliente oppure fornitore"
|
||||||
ITEM "C|Clienti"
|
ITEM "C|Clienti"
|
||||||
@ -124,10 +142,11 @@ END
|
|||||||
|
|
||||||
NUMBER F_CODCF_ELAB 6
|
NUMBER F_CODCF_ELAB 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 15 ""
|
PROMPT 10 9 ""
|
||||||
FLAGS "HR"
|
FLAGS "HR"
|
||||||
END
|
END
|
||||||
STRING F_CODVAL_ELAB 4
|
|
||||||
|
STRING F_CODVAL_ELAB 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 25 ""
|
PROMPT 10 25 ""
|
||||||
FLAGS "HR"
|
FLAGS "HR"
|
||||||
@ -135,11 +154,14 @@ END
|
|||||||
|
|
||||||
NUMBER F_NDOC_ELAB 6
|
NUMBER F_NDOC_ELAB 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 11 "Numero doc. "
|
PROMPT 24 5 "Numero doc. "
|
||||||
USE LF_DOC
|
USE LF_DOC KEY 2
|
||||||
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
|
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||||
|
INPUT TIPOCF F_TIPOCF_ELAB SELECT
|
||||||
|
INPUT CODCF F_CODCF_ELAB SELECT
|
||||||
INPUT PROVV F_PROVV_ELAB SELECT
|
INPUT PROVV F_PROVV_ELAB SELECT
|
||||||
INPUT ANNO F_ANNO_ELAB SELECT
|
INPUT ANNO F_ANNO_ELAB SELECT
|
||||||
|
INPUT DATADOC F_DATADOC_ELAB
|
||||||
INPUT CODNUM F_CODNUM_ELAB
|
INPUT CODNUM F_CODNUM_ELAB
|
||||||
INPUT NDOC F_NDOC_ELAB
|
INPUT NDOC F_NDOC_ELAB
|
||||||
DISPLAY "Num." CODNUM
|
DISPLAY "Num." CODNUM
|
||||||
@ -147,14 +169,15 @@ BEGIN
|
|||||||
DISPLAY "Provv" PROVV
|
DISPLAY "Provv" PROVV
|
||||||
DISPLAY "Tipo" TIPODOC
|
DISPLAY "Tipo" TIPODOC
|
||||||
DISPLAY "N.Doc. " NDOC
|
DISPLAY "N.Doc. " NDOC
|
||||||
|
DISPLAY "Stato" STATO
|
||||||
DISPLAY "Data\ndocumento" DATADOC
|
DISPLAY "Data\ndocumento" DATADOC
|
||||||
DISPLAY "C/F" TIPOCF
|
DISPLAY "C/F" TIPOCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||||
OUTPUT F_NDOC_ELAB NDOC
|
OUTPUT F_DATADOC_ELAB DATADOC
|
||||||
OUTPUT F_CODNUM_ELAB CODNUM
|
OUTPUT F_CODNUM_ELAB CODNUM
|
||||||
|
OUTPUT F_NDOC_ELAB NDOC
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
FLAG "R"
|
|
||||||
WARNING "Documento inesistente o incompatibile"
|
WARNING "Documento inesistente o incompatibile"
|
||||||
ADD RUN ve0 -1
|
ADD RUN ve0 -1
|
||||||
MESSAGE EMPTY SHOW,F_DATADOC_ELAB
|
MESSAGE EMPTY SHOW,F_DATADOC_ELAB
|
||||||
@ -163,33 +186,33 @@ END
|
|||||||
|
|
||||||
LISTBOX F_PROVV_ELAB 14
|
LISTBOX F_PROVV_ELAB 14
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 46 11 "Tipo "
|
PROMPT 52 5 "Tipo "
|
||||||
ITEM "D|Definitiva "
|
ITEM "D|Definitiva "
|
||||||
ITEM "P|Provvisoria"
|
ITEM "P|Provvisoria"
|
||||||
KEY 1
|
KEY 1
|
||||||
FLAGS "P"
|
FLAGS "P"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_NUMDOCRIF 7
|
STRING F_NUMDOCRIF_ELAB 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Documento di riferimento "
|
PROMPT 2 6 "Documento di riferimento "
|
||||||
FLAGS "B"
|
FLAGS "B"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATADOC_ELAB
|
DATE F_DATADOC_ELAB
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 13 "Data documento "
|
PROMPT 2 7 "Data documento "
|
||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_UPDATE_HEADER
|
BOOLEAN F_UPDATE_HEADER
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 41 13 "Aggiorna testata"
|
PROMPT 41 7 "Aggiorna testata"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODART 20
|
STRING F_CODART 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Articolo "
|
PROMPT 2 8 "Articolo "
|
||||||
USE LF_ANAMAG
|
USE LF_ANAMAG
|
||||||
INPUT CODART F_CODART
|
INPUT CODART F_CODART
|
||||||
DISPLAY "Codice@20" CODART
|
DISPLAY "Codice@20" CODART
|
||||||
@ -203,7 +226,7 @@ END
|
|||||||
|
|
||||||
STRING F_UMQTA 2
|
STRING F_UMQTA 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 41 15 "U.M. "
|
PROMPT 41 8 "U.M. "
|
||||||
USE LF_UMART KEY 2
|
USE LF_UMART KEY 2
|
||||||
JOIN %UMS INTO CODTAB=UM
|
JOIN %UMS INTO CODTAB=UM
|
||||||
INPUT CODART F_CODART SELECT
|
INPUT CODART F_CODART SELECT
|
||||||
@ -220,19 +243,15 @@ END
|
|||||||
|
|
||||||
NUMBER F_QTA 13 5
|
NUMBER F_QTA 13 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 51 15 "Qta' "
|
PROMPT 51 8 "Qta' "
|
||||||
GROUP GRP_ART
|
GROUP GRP_ART
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
TREE F_ROWS -3 -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT 0 10 ""
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 9 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT -22 -1 ""
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -1,24 +1,44 @@
|
|||||||
#define F_TYPE 101
|
#define F_TYPE 201
|
||||||
#define F_ELAB 102
|
#define F_ELAB 202
|
||||||
#define F_TIPODOC_ELAB 103
|
#define F_TIPODOC_ELAB 203
|
||||||
#define F_STATODOC_ELAB 104
|
#define F_STATODOC_ELAB 204
|
||||||
#define F_DESTIPODOC_ELAB 105
|
#define F_DESTIPODOC_ELAB 205
|
||||||
#define F_DESSTATODOC_ELAB 106
|
#define F_DESSTATODOC_ELAB 206
|
||||||
#define F_GROUP_D 107
|
#define F_GROUP_D 207
|
||||||
#define F_GROUP_S 108
|
#define F_GROUP_S 208
|
||||||
#define F_CODNUM_ELAB 109
|
#define F_CODNUM_ELAB 209
|
||||||
#define F_DESNUM_ELAB 110
|
#define F_DESNUM_ELAB 210
|
||||||
#define F_ANNO_ELAB 111
|
#define F_ANNO_ELAB 211
|
||||||
#define F_NDOC_ELAB 112
|
#define F_NDOC_ELAB 212
|
||||||
#define F_PROVV_ELAB 113
|
#define F_PROVV_ELAB 213
|
||||||
#define F_TIPOCF_ELAB 114
|
#define F_TIPOCF_ELAB 214
|
||||||
#define F_CODCF_ELAB 115
|
#define F_CODCF_ELAB 215
|
||||||
#define F_DATADOC_ELAB 116
|
#define F_DATADOC_ELAB 216
|
||||||
#define F_UPDATE_HEADER 117
|
#define F_UPDATE_HEADER 217
|
||||||
#define F_CODART 118
|
#define F_CODART 218
|
||||||
#define F_UMQTA 119
|
#define F_UMQTA 219
|
||||||
#define F_QTA 120
|
#define F_QTA 220
|
||||||
#define F_NUMDOCRIF 127
|
#define F_NUMDOCRIF_ELAB 227
|
||||||
#define F_CODVAL_ELAB 128
|
#define F_CODVAL_ELAB 228
|
||||||
|
#define F_ROWS 229
|
||||||
|
|
||||||
#define GRP_ART 2
|
#define GRP_ART 2
|
||||||
|
|
||||||
|
#define S_RIGACONSEGNATA 101
|
||||||
|
#define S_QTARESIDUA 102
|
||||||
|
#define S_QTADAEVADERE 103
|
||||||
|
#define S_RIGAEVASA 104
|
||||||
|
#define S_CODMAG 105
|
||||||
|
#define S_CODDEP 106
|
||||||
|
#define S_CODART 107
|
||||||
|
#define S_LIVGIAC1 108
|
||||||
|
#define S_LIVGIAC2 109
|
||||||
|
#define S_LIVGIAC3 110
|
||||||
|
#define S_LIVGIAC4 111
|
||||||
|
#define S_DATACONS 112
|
||||||
|
#define S_PREZZO 113
|
||||||
|
#define S_DESCR 114
|
||||||
|
#define S_TIPORIGA 115
|
||||||
|
#define S_NUMRIGA 116
|
||||||
|
|
||||||
|
|
@ -1463,6 +1463,8 @@ bool TAnagrafica_magazzino::handle_copia(TMask_field &fld, KEY k)
|
|||||||
m.sfield(F_SHEETGIAC).destroy();
|
m.sfield(F_SHEETGIAC).destroy();
|
||||||
m.sfield(F_SHEETSTOMAG).destroy();
|
m.sfield(F_SHEETSTOMAG).destroy();
|
||||||
|
|
||||||
|
m.load_profile(0, FALSE);
|
||||||
|
|
||||||
m.set_mode(MODE_INS);
|
m.set_mode(MODE_INS);
|
||||||
xvt_statbar_set("Inserimento", TRUE);
|
xvt_statbar_set("Inserimento", TRUE);
|
||||||
}
|
}
|
||||||
|
12
ve/ve2400.h
12
ve/ve2400.h
@ -26,10 +26,14 @@
|
|||||||
#define F_CONTOV 136
|
#define F_CONTOV 136
|
||||||
#define F_SOTTOCV 137
|
#define F_SOTTOCV 137
|
||||||
#define F_DESCRV 138
|
#define F_DESCRV 138
|
||||||
#define F_GRUPPOPCI 110
|
#define F_GRUPPOPCIA 110
|
||||||
#define F_CONTOPCI 111
|
#define F_CONTOPCIA 111
|
||||||
#define F_SOTTOPCI 112
|
#define F_SOTTOPCIA 112
|
||||||
#define F_DESCRCONTOPCI 113
|
#define F_DESCRCONTOPCIA 113
|
||||||
|
#define F_GRUPPOPCIV 114
|
||||||
|
#define F_CONTOPCIV 115
|
||||||
|
#define F_SOTTOPCIV 116
|
||||||
|
#define F_DESCRCONTOPCIV 117
|
||||||
#define F_UMP 139
|
#define F_UMP 139
|
||||||
#define F_PESO 140
|
#define F_PESO 140
|
||||||
#define F_CLASSDOG1 141
|
#define F_CLASSDOG1 141
|
||||||
|
107
ve/ve2400.uml
107
ve/ve2400.uml
@ -479,62 +479,103 @@ BEGIN
|
|||||||
WARNING "Conto assente"
|
WARNING "Conto assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_GRUPPOPCI 3
|
NUMBER F_GRUPPOPCIA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 12 "Conto industr. "
|
PROMPT 1 12 "C. ind. acquisti "
|
||||||
FIELD I6
|
FIELD LF_ANAMAG->CONTOINDA[1,3]
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CONTOPCI 3
|
NUMBER F_CONTOPCIA 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 12 ""
|
PROMPT 22 12 ""
|
||||||
FIELD I7
|
FIELD LF_ANAMAG->CONTOINDA[4,6]
|
||||||
//USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
|
|
||||||
//INPUT CODTAB[1,3] F_GRUPPOPCI
|
|
||||||
//INPUT CODTAB[4,6] F_CONTOPCI
|
|
||||||
//DISPLAY "Gruppo" CODTAB[1,3]
|
|
||||||
//DISPLAY "Conto" CODTAB[4,6]
|
|
||||||
//DISPLAY "Descrizione@50" S0
|
|
||||||
//OUTPUT F_GRUPPOPCI CODTAB[1,3]
|
|
||||||
//OUTPUT F_CONTOPCI CODTAB[4,6]
|
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
ADD RUN BA3 -0 PCI
|
|
||||||
WARNING "Codice piano dei conti industriale assente"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_SOTTOPCI 6
|
NUMBER F_SOTTOPCIA 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 26 12 ""
|
PROMPT 26 12 ""
|
||||||
FIELD I8
|
FIELD LF_ANAMAG->CONTOINDA[7,12]
|
||||||
USE PCI SELECT CODTAB[7,12]!=""
|
USE PCI SELECT CODTAB[7,12]!=""
|
||||||
INPUT CODTAB[1,3] F_GRUPPOPCI
|
INPUT CODTAB[1,3] F_GRUPPOPCIA
|
||||||
INPUT CODTAB[4,6] F_CONTOPCI
|
INPUT CODTAB[4,6] F_CONTOPCIA
|
||||||
INPUT CODTAB[7,12] F_SOTTOPCI
|
INPUT CODTAB[7,12] F_SOTTOPCIA
|
||||||
DISPLAY "Gruppo" CODTAB[1,3]
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
DISPLAY "Conto" CODTAB[4,6]
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
DISPLAY "Sottoconto" CODTAB[7,12]
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_GRUPPOPCI CODTAB[1,3]
|
OUTPUT F_GRUPPOPCIA CODTAB[1,3]
|
||||||
OUTPUT F_CONTOPCI CODTAB[4,6]
|
OUTPUT F_CONTOPCIA CODTAB[4,6]
|
||||||
OUTPUT F_SOTTOPCI CODTAB[7,12]
|
OUTPUT F_SOTTOPCIA CODTAB[7,12]
|
||||||
OUTPUT F_DESCRCONTOPCI S0
|
OUTPUT F_DESCRCONTOPCIA S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Sottoconto errato"
|
WARNING "Sottoconto errato"
|
||||||
ADD RUN BA3 -0 PCI
|
ADD RUN BA3 -0 PCI
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCRCONTOPCI 50
|
STRING F_DESCRCONTOPCIA 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 12 ""
|
PROMPT 36 12 ""
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE PCI KEY 2 SELECT (CODTAB[7,12]!="")
|
USE PCI KEY 2 SELECT (CODTAB[7,12]!="")
|
||||||
INPUT S0 F_DESCRCONTOPCI
|
INPUT S0 F_DESCRCONTOPCIA
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
DISPLAY "Gruppo" CODTAB[1,3]
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
DISPLAY "Conto" CODTAB[4,6]
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
DISPLAY "Sottoconto" CODTAB[7,12]
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
COPY OUTPUT F_SOTTOPCI
|
COPY OUTPUT F_SOTTOPCIA
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice piano conti industriale assente"
|
||||||
|
ADD RUN BA0 -3 PCI
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPOPCIV 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 13 "C. ind. vendite "
|
||||||
|
FIELD LF_ANAMAG->CONTOINDV[1,3]
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CONTOPCIV 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 22 13 ""
|
||||||
|
FIELD LF_ANAMAG->CONTOINDV[4,6]
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOTTOPCIV 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 13 ""
|
||||||
|
FIELD LF_ANAMAG->CONTOINDV[7,12]
|
||||||
|
USE PCI SELECT CODTAB[7,12]!=""
|
||||||
|
INPUT CODTAB[1,3] F_GRUPPOPCIV
|
||||||
|
INPUT CODTAB[4,6] F_CONTOPCIV
|
||||||
|
INPUT CODTAB[7,12] F_SOTTOPCIV
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRUPPOPCIV CODTAB[1,3]
|
||||||
|
OUTPUT F_CONTOPCIV CODTAB[4,6]
|
||||||
|
OUTPUT F_SOTTOPCIV CODTAB[7,12]
|
||||||
|
OUTPUT F_DESCRCONTOPCIV S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Sottoconto errato"
|
||||||
|
ADD RUN BA3 -0 PCI
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRCONTOPCIV 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 13 ""
|
||||||
|
FLAG "U"
|
||||||
|
USE PCI KEY 2 SELECT (CODTAB[7,12]!="")
|
||||||
|
INPUT S0 F_DESCRCONTOPCIV
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,3]
|
||||||
|
DISPLAY "Conto" CODTAB[4,6]
|
||||||
|
DISPLAY "Sottoconto" CODTAB[7,12]
|
||||||
|
COPY OUTPUT F_SOTTOPCIV
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Codice piano conti industriale assente"
|
WARNING "Codice piano conti industriale assente"
|
||||||
ADD RUN BA0 -3 PCI
|
ADD RUN BA0 -3 PCI
|
||||||
@ -542,7 +583,7 @@ END
|
|||||||
|
|
||||||
BOOLEAN F_ARTFIS
|
BOOLEAN F_ARTFIS
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 13 "Articolo fiscale"
|
PROMPT 1 14 "Articolo fiscale"
|
||||||
FIELD LF_ANAMAG->ARTFIS
|
FIELD LF_ANAMAG->ARTFIS
|
||||||
MESSAGE TRUE ENABLE,G_RAGGFISC@
|
MESSAGE TRUE ENABLE,G_RAGGFISC@
|
||||||
MESSAGE FALSE DISABLE,G_RAGGFISC@
|
MESSAGE FALSE DISABLE,G_RAGGFISC@
|
||||||
@ -550,7 +591,7 @@ END
|
|||||||
|
|
||||||
STRING F_RAGGFIS 5
|
STRING F_RAGGFIS 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 14 "Raggrupp. fiscale "
|
PROMPT 1 15 "Raggrupp. fiscale "
|
||||||
FIELD LF_ANAMAG->RAGGFIS
|
FIELD LF_ANAMAG->RAGGFIS
|
||||||
FLAGS "UD"
|
FLAGS "UD"
|
||||||
USE RFA
|
USE RFA
|
||||||
@ -567,13 +608,13 @@ END
|
|||||||
|
|
||||||
STRING F_RAGGFIS1 40
|
STRING F_RAGGFIS1 40
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 31 14 ""
|
PROMPT 31 15 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING H_CLASSEFIS 2
|
STRING H_CLASSEFIS 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 15 ""
|
PROMPT 1 16 ""
|
||||||
FLAG "HG"
|
FLAG "HG"
|
||||||
MESSAGE DISABLE,F_CLASSEFIS|COPY,F_CLASSEFIS
|
MESSAGE DISABLE,F_CLASSEFIS|COPY,F_CLASSEFIS
|
||||||
MESSAGE EMPTY ENABLE,F_CLASSEFIS
|
MESSAGE EMPTY ENABLE,F_CLASSEFIS
|
||||||
@ -581,7 +622,7 @@ END
|
|||||||
|
|
||||||
STRING F_CLASSEFIS 2
|
STRING F_CLASSEFIS 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 15 "Classe fiscale "
|
PROMPT 1 16 "Classe fiscale "
|
||||||
FIELD LF_ANAMAG->CLASSEFIS
|
FIELD LF_ANAMAG->CLASSEFIS
|
||||||
FLAGS "UD"
|
FLAGS "UD"
|
||||||
USE %ASF
|
USE %ASF
|
||||||
@ -597,7 +638,7 @@ END
|
|||||||
|
|
||||||
STRING F_CLASSEFISD 40
|
STRING F_CLASSEFISD 40
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 31 15 ""
|
PROMPT 31 16 ""
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -273,7 +273,105 @@ error_type TContabil_tsys::write_all(TDocumento& doc, TMovimentoPN_VE & moviment
|
|||||||
row << work;
|
row << work;
|
||||||
format_num(ZERO, 2, work);
|
format_num(ZERO, 2, work);
|
||||||
row << work;
|
row << work;
|
||||||
|
check_len("Filler", row, 46);
|
||||||
}
|
}
|
||||||
|
if (row.len() != 4248)
|
||||||
|
{
|
||||||
|
error_box("Documento %s - lunghezza record %d errata", (const char *)doc.get(DOC_NDOC), row.len());
|
||||||
|
return generic_error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*_output_file << ((const char *) row);
|
||||||
|
|
||||||
|
format_num(real(_conf->get("CodDitta")), 5, row);
|
||||||
|
row << "11" ;
|
||||||
|
check_len("Dati intra", row, 7, TRUE);
|
||||||
|
format_signed(ZERO, 14, work);
|
||||||
|
row << zeros.sleft(7) << spaces.sleft(3) << work;
|
||||||
|
check_len("Dati intra", row, 24);
|
||||||
|
for (i = 0 ; i < 20 ; i++)
|
||||||
|
{
|
||||||
|
row << spaces.sleft(8);
|
||||||
|
format_signed(ZERO, 12, work);
|
||||||
|
row << work << work << spaces.sleft(1) << work << work << work;
|
||||||
|
check_len("Dati intra", row, 69);
|
||||||
|
row << spaces.sleft(2) << zeros.sleft(9) << spaces.sleft(4) ;
|
||||||
|
check_len("Dati intra", row, 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
row << zeros.sleft(12) << zeros.sleft(3) << zeros.sleft(22) << zeros.sleft(4) << spaces.sleft(8) << zeros.sleft(24);
|
||||||
|
check_len("770", row, 73);
|
||||||
|
row << spaces.sleft(28) << zeros.sleft(10);
|
||||||
|
check_len("770", row, 38);
|
||||||
|
int len = row.len();
|
||||||
|
TRectype cp = cache().get("%CPG", doc.get("CODPAG"));
|
||||||
|
TString16 codpag(cp.get("I9"));
|
||||||
|
|
||||||
|
if (codpag.empty())
|
||||||
|
codpag = doc.get("CODPAG");
|
||||||
|
|
||||||
|
codpag = codpag.sleft(3).lpad(3);
|
||||||
|
row << codpag;
|
||||||
|
work = doc.get("CODABIA").sleft(5).rpad(5);
|
||||||
|
work << doc.get("CODCABA").sleft(5).rpad(5);
|
||||||
|
const TRectype & ban = cache().get("BAN", work);
|
||||||
|
row << work << ban.get("S0").sleft(30).rpad(30) << zeros.sleft(6);
|
||||||
|
check_len("Riba", row, 49);
|
||||||
|
TPagamento & pag = doc.pagamento();
|
||||||
|
const int nrate = pag.n_rate();
|
||||||
|
format_num(nrate, 2, work);
|
||||||
|
row << work;
|
||||||
|
format_signed(head.get_real(MOV_TOTDOC) * molt, 12, work);
|
||||||
|
row << work;
|
||||||
|
check_len("Riba", row, 14);
|
||||||
|
|
||||||
|
TDate data_inizio = doc.get_date(DOC_DATAINSC);
|
||||||
|
if (!data_inizio.ok())
|
||||||
|
data_inizio = doc.get_date(DOC_DATADOC);
|
||||||
|
|
||||||
|
pag.set_inizio(data_inizio);
|
||||||
|
pag.set_total(head.get_real(MOV_TOTDOC), ZERO, ZERO);
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0 ; i < 12 ; i++)
|
||||||
|
{
|
||||||
|
if (i < nrate)
|
||||||
|
{
|
||||||
|
format_num(i, 2, work);
|
||||||
|
row << work;
|
||||||
|
TDate dsc = pag.data_rata(i);
|
||||||
|
work = dsc.string(brief);
|
||||||
|
row << work.left(2);
|
||||||
|
row << work.mid(3, 2);
|
||||||
|
row << work.mid(6);
|
||||||
|
const int tipo = pag.tipo_rata(i);
|
||||||
|
row << rata_types[tipo];
|
||||||
|
check_len("Riba", row, 9);
|
||||||
|
real imprata = pag.importo_rata(i);
|
||||||
|
format_signed(imprata * molt, 12, work);
|
||||||
|
if (work[11] == '-')
|
||||||
|
work[11] == '+';
|
||||||
|
row << work;
|
||||||
|
format_signed(doc.bolli(imprata, AUTO_DECIMALS, _netto) * molt, 12, work);
|
||||||
|
if (work[11] == '-')
|
||||||
|
work[11] == '+';
|
||||||
|
row << work;
|
||||||
|
check_len("Riba", row, 24);
|
||||||
|
static char tipocf = doc.get_char(DOC_TIPOCF);
|
||||||
|
bool avere = (tipocf == 'C' && imprata >= ZERO) || (tipocf == 'F' && imprata < ZERO);
|
||||||
|
row << (avere ? "A" : "D") << "0";
|
||||||
|
check_len("Riba", row, 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row << "000000000";
|
||||||
|
format_signed(ZERO, 12, work);
|
||||||
|
row << work << work << " 0";
|
||||||
|
check_len("Riba", row, 35);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
len = row.len();
|
||||||
|
row << spaces.left(1943);
|
||||||
|
|
||||||
if (row.len() != 4248)
|
if (row.len() != 4248)
|
||||||
{
|
{
|
||||||
|
@ -68,6 +68,8 @@ Item_09 = "Lingue", "ba3 -0 %LNG", ""
|
|||||||
Item_10 = "Divise", "ba3 -0 %VAL", ""
|
Item_10 = "Divise", "ba3 -0 %VAL", ""
|
||||||
Item_11 = "Cambi giornalieri", "ba3 -0 CAM", "F"
|
Item_11 = "Cambi giornalieri", "ba3 -0 CAM", "F"
|
||||||
Item_12 = "Esercizi", "cg0 -5 esc", "F"
|
Item_12 = "Esercizi", "cg0 -5 esc", "F"
|
||||||
|
Item_13 = "Commesse", "ba3 -0 cms", "F"
|
||||||
|
Item_14 = "Fasi commesse", "ba3 -0 fsc", "F"
|
||||||
|
|
||||||
[ACQVEN_006]
|
[ACQVEN_006]
|
||||||
Caption = "Tabelle magazzino"
|
Caption = "Tabelle magazzino"
|
||||||
|
@ -281,7 +281,7 @@ public:
|
|||||||
const char * field_prezzo() const { return _field_prezzo; }
|
const char * field_prezzo() const { return _field_prezzo; }
|
||||||
|
|
||||||
const TString & descrizione() const { return get("S0"); }
|
const TString & descrizione() const { return get("S0"); }
|
||||||
const TString & riferimento() const { return get("S1"); }
|
const TString & riferimento(const TDocumento & doc) const ;
|
||||||
const TString & imponibile() const { return _imponibile;}
|
const TString & imponibile() const { return _imponibile;}
|
||||||
const TString & imposta() const { return _imposta;}
|
const TString & imposta() const { return _imposta;}
|
||||||
const TString & totale_doc() const { return _totale;}
|
const TString & totale_doc() const { return _totale;}
|
||||||
@ -607,6 +607,7 @@ public:
|
|||||||
TCli_for & clifor() const;
|
TCli_for & clifor() const;
|
||||||
TOccasionale & occas() const;
|
TOccasionale & occas() const;
|
||||||
const TAgente & agente() const;
|
const TAgente & agente() const;
|
||||||
|
const TString & riferimento() const { return tipo().riferimento(*this); }
|
||||||
|
|
||||||
virtual TRecord_array& body(int logicnum = 0) const;
|
virtual TRecord_array& body(int logicnum = 0) const;
|
||||||
virtual TDocumento & operator =(const TDocumento & d) {return copy(d);}
|
virtual TDocumento & operator =(const TDocumento & d) {return copy(d);}
|
||||||
@ -787,6 +788,7 @@ public:
|
|||||||
const TString& stdmag() const { return _std_mag; }
|
const TString& stdmag() const { return _std_mag; }
|
||||||
const TString& stddep() const { return _std_dep; }
|
const TString& stddep() const { return _std_dep; }
|
||||||
|
|
||||||
|
|
||||||
TSheet_field& sheet() const { return *_sheet; }
|
TSheet_field& sheet() const { return *_sheet; }
|
||||||
TCodgiac_livelli& livelli() const { return *_livelli_giac; }
|
TCodgiac_livelli& livelli() const { return *_livelli_giac; }
|
||||||
static bool num_handler( TMask_field& f, KEY key );
|
static bool num_handler( TMask_field& f, KEY key );
|
||||||
@ -1129,7 +1131,7 @@ class TContabilizzazione : public TElaborazione // velib04b
|
|||||||
*_cco; // tabella categorie contabili
|
*_cco; // tabella categorie contabili
|
||||||
TRelation *_clifo; // relazione dei clienti e fornitori + cfven
|
TRelation *_clifo; // relazione dei clienti e fornitori + cfven
|
||||||
TViswin* _viswin; // Visualizzazione log di elaborazione
|
TViswin* _viswin; // Visualizzazione log di elaborazione
|
||||||
TBill _conto_errato;
|
TBill _conto_errato; // Conto da visualizzare in messaggio d'errore
|
||||||
bool _check_prev_cont; // Controllare se il documento precedente e' stato contabilizzato
|
bool _check_prev_cont; // Controllare se il documento precedente e' stato contabilizzato
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include "../mg/mglib.h"
|
#include "../mg/mglib.h"
|
||||||
#include "../mg/movmag.h"
|
#include "../mg/movmag.h"
|
||||||
#include "../pr/prlib.h"
|
#include "../pr/prlib.h"
|
||||||
#include "sconti.h"
|
|
||||||
#include "../sv/svlib01.h"
|
#include "../sv/svlib01.h"
|
||||||
#include "../db/dblib.h"
|
#include "../db/dblib.h"
|
||||||
|
|
||||||
@ -395,6 +394,7 @@ bool TTipo_documento::scarica_residuo() const
|
|||||||
return get_bool("B4");
|
return get_bool("B4");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
// TRiepilogo IVA
|
// TRiepilogo IVA
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
@ -444,6 +444,7 @@ public:
|
|||||||
|
|
||||||
HIDDEN TAgenti_cache _agenti;
|
HIDDEN TAgenti_cache _agenti;
|
||||||
|
|
||||||
|
/*
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Espressione documento
|
// Espressione documento
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -878,6 +879,7 @@ TFormula_documento::TFormula_documento(const TRectype& rec)
|
|||||||
_expr = new TExpr_documento(expr_string(), et);
|
_expr = new TExpr_documento(expr_string(), et);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TFormula_documento::~TFormula_documento()
|
TFormula_documento::~TFormula_documento()
|
||||||
{
|
{
|
||||||
if (_expr) delete _expr;
|
if (_expr) delete _expr;
|
||||||
@ -919,6 +921,7 @@ int TFormula_documento::read(const char* codice, const char * expr, bool numexpr
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Documento per vendite
|
// Documento per vendite
|
||||||
@ -1804,6 +1807,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
|||||||
r.put(RDOC_CODCMS, codcms);
|
r.put(RDOC_CODCMS, codcms);
|
||||||
if (r.get(RDOC_FASCMS).empty())
|
if (r.get(RDOC_FASCMS).empty())
|
||||||
r.put(RDOC_FASCMS, fascms);
|
r.put(RDOC_FASCMS, fascms);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (is_ordine())
|
if (is_ordine())
|
||||||
((TDocumento *)this)->put(DOC_DOCEVASO, docevaso); // Tutte le righe evase -> doc evaso
|
((TDocumento *)this)->put(DOC_DOCEVASO, docevaso); // Tutte le righe evase -> doc evaso
|
||||||
@ -1944,7 +1948,7 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
|
|||||||
TDate datadoc(data());
|
TDate datadoc(data());
|
||||||
|
|
||||||
while (_provv_agente->read(agente, anno,codnum,ndoc) == _islocked) // Legge le provvigioni per questo documento
|
while (_provv_agente->read(agente, anno,codnum,ndoc) == _islocked) // Legge le provvigioni per questo documento
|
||||||
if (!yesno_box("Dati agente %s in uso da un altro utente. Riprovo?", (const char*) agente))
|
if (!yesno_box("Dati agente %s in uso da un altro utente. Riprovare?", (const char*) agente))
|
||||||
return *_provv_agente;
|
return *_provv_agente;
|
||||||
|
|
||||||
const TString16 codval(TDocumento::valuta());
|
const TString16 codval(TDocumento::valuta());
|
||||||
@ -2115,16 +2119,13 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
|
|||||||
bool TDocumento::in_valuta() const
|
bool TDocumento::in_valuta() const
|
||||||
{
|
{
|
||||||
const TString& val = valuta();
|
const TString& val = valuta();
|
||||||
|
return is_true_value(val);
|
||||||
if (val.empty())
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return val != TCurrency::get_firm_val();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TCodgiac_livelli & TDocumento::livelli() const
|
TCodgiac_livelli & TDocumento::livelli() const
|
||||||
{
|
{
|
||||||
if (_livelli == NULL) _livelli = new TCodgiac_livelli();
|
if (_livelli == NULL)
|
||||||
|
_livelli = new TCodgiac_livelli();
|
||||||
return *_livelli;
|
return *_livelli;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
831
ve/velib03a.cpp
Executable file
831
ve/velib03a.cpp
Executable file
@ -0,0 +1,831 @@
|
|||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
#include "velib.h"
|
||||||
|
#include "vepriv.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Tipo documento
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TAssoc_array TTipo_documento::_formule_documento;
|
||||||
|
|
||||||
|
TTipo_documento::TTipo_documento(const char* tipodoc)
|
||||||
|
: TRectype(LF_TABCOM), _tipocf('\0')
|
||||||
|
{
|
||||||
|
settab("TIP");
|
||||||
|
if (tipodoc && *tipodoc)
|
||||||
|
read(tipodoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
TTipo_documento::TTipo_documento(const TRectype& rec)
|
||||||
|
: TRectype(rec), _tipocf('\0')
|
||||||
|
{
|
||||||
|
read_formule();
|
||||||
|
}
|
||||||
|
|
||||||
|
TTipo_documento::~TTipo_documento()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int TTipo_documento::read(const char* tipodoc)
|
||||||
|
{
|
||||||
|
*this = cache().get("%TIP", tipodoc);
|
||||||
|
int err = empty() ? _iskeynotfound : NOERR;
|
||||||
|
|
||||||
|
_formule.cut(0);
|
||||||
|
|
||||||
|
if (err == NOERR)
|
||||||
|
read_formule();
|
||||||
|
else
|
||||||
|
yesnofatal_box("Tipo documento errato: %s", tipodoc);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char TTipo_documento::tipocf()
|
||||||
|
{
|
||||||
|
if (_tipocf == '\0')
|
||||||
|
{
|
||||||
|
TFilename pn = profile_name();
|
||||||
|
pn.ext("ini");
|
||||||
|
TConfig prof(pn);
|
||||||
|
_tipocf = prof.get_char("TIPOCF", "MAIN");
|
||||||
|
}
|
||||||
|
return _tipocf;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString & TTipo_documento::riferimento(const TDocumento & doc) const
|
||||||
|
{
|
||||||
|
static TString __rif;
|
||||||
|
__rif = get("S1");
|
||||||
|
int p = __rif.find('[');
|
||||||
|
|
||||||
|
|
||||||
|
while (p >= 0)
|
||||||
|
{
|
||||||
|
const int last = __rif.find(']');
|
||||||
|
const TString16 field_name(__rif.sub(p + 1, last));
|
||||||
|
const TFieldref field(field_name, LF_DOC);
|
||||||
|
if (last < 0)
|
||||||
|
__rif.cut(p);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int len = __rif.len() - last;
|
||||||
|
for (int i = 0; i <= len; i++)
|
||||||
|
__rif[p + i] = __rif[last + i + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (field.file() == LF_DOC)
|
||||||
|
__rif.insert(field.read(doc), p);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString16 key(doc.get(DOC_TIPOCF));
|
||||||
|
key << "|" << doc.get(DOC_CODCF);
|
||||||
|
|
||||||
|
const TRectype rec = cache().get(field.file(), key);
|
||||||
|
|
||||||
|
__rif.insert(field.read(rec), p);
|
||||||
|
}
|
||||||
|
|
||||||
|
p = __rif.find('[');
|
||||||
|
}
|
||||||
|
return __rif;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString_array& TTipo_documento::keys_descrs()
|
||||||
|
{
|
||||||
|
if (_keys_descrs.items() == 0)
|
||||||
|
{
|
||||||
|
TString16 var, tiporiga;
|
||||||
|
TFilename pn(profile_name());
|
||||||
|
pn.ext("ini");
|
||||||
|
TConfig prof(pn);
|
||||||
|
const int numtr = prof.get_int( "NTIPIRIGA", "RIGHE" );
|
||||||
|
TTipo_riga_documento tr;
|
||||||
|
_keys_descrs.add("");
|
||||||
|
_keys_descrs.add("");
|
||||||
|
TToken_string& k = (TToken_string&)_keys_descrs[0];
|
||||||
|
TToken_string& d = (TToken_string&)_keys_descrs[1];
|
||||||
|
|
||||||
|
if (numtr > 0)
|
||||||
|
{
|
||||||
|
for ( int i = 1; i <= numtr; i ++ )
|
||||||
|
{
|
||||||
|
var.format("%d", i);
|
||||||
|
tiporiga = prof.get(var, "RIGHE");
|
||||||
|
tr.read(tiporiga);
|
||||||
|
k.add(tr.codice());
|
||||||
|
d.add(tr.descrizione());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TTable tri("%TRI");
|
||||||
|
|
||||||
|
for (int err = tri.first(); err == NOERR; err = tri.next())
|
||||||
|
{
|
||||||
|
k.add(tri.get("CODTAB"));
|
||||||
|
d.add(tri.get("S0"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _keys_descrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString_array& TTipo_documento::sheet_columns()
|
||||||
|
{
|
||||||
|
if (_sheet_columns.items() == 0)
|
||||||
|
{
|
||||||
|
TString16 col;
|
||||||
|
TFilename pn(profile_name());
|
||||||
|
pn.ext("ini");
|
||||||
|
TConfig prof(pn, "SHEET");
|
||||||
|
int ncols = prof.get_int( "NCOLS", "SHEET" );
|
||||||
|
for (int i = 1; i <= ncols; i++)
|
||||||
|
{
|
||||||
|
col.format( "%d", i );
|
||||||
|
_sheet_columns.add(prof.get(col, "SHEET"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _sheet_columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString_array& TTipo_documento::handlers()
|
||||||
|
{
|
||||||
|
if (_handlers.items() == 0)
|
||||||
|
{
|
||||||
|
TString16 chiave;
|
||||||
|
TFilename pn = profile_name();
|
||||||
|
pn.ext("ini");
|
||||||
|
TConfig prof(pn);
|
||||||
|
|
||||||
|
int numhandler = prof.get_int( "NHANDLER", "HANDLERS" ); // prof
|
||||||
|
|
||||||
|
for (int i = 1; i <= numhandler; i ++ )
|
||||||
|
{
|
||||||
|
chiave.format("%d", i);
|
||||||
|
_handlers.add(prof.get(chiave, "HANDLERS"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTipo_documento::set_defaults(TMask& m)
|
||||||
|
{
|
||||||
|
const int items = _defaults.items();
|
||||||
|
|
||||||
|
if (items == 0) // Carica lo string_array con i defaults
|
||||||
|
{
|
||||||
|
TString16 chiave;
|
||||||
|
TFilename pn(profile_name());
|
||||||
|
pn.ext("ini");
|
||||||
|
TConfig prof(pn, "DEFAULT");
|
||||||
|
const int ndefaults = prof.get_int("NDEFAULTS");
|
||||||
|
for(int i = 1; i <= ndefaults; i++)
|
||||||
|
{
|
||||||
|
chiave.format("%d", i);
|
||||||
|
_defaults.add(prof.get(chiave));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < items; i++) // Setta i campi della maschera
|
||||||
|
{
|
||||||
|
TToken_string& tt = (TToken_string&)_defaults[i];
|
||||||
|
const int ncampo = tt.get_int(0);
|
||||||
|
m.set(ncampo, tt.get(1), TRUE );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTipo_documento::read_formule()
|
||||||
|
{
|
||||||
|
TFilename profile(profile_name());
|
||||||
|
profile.ext("ini");
|
||||||
|
TConfig prof(profile, "MAIN");
|
||||||
|
prof.write_protect(); // Altrimenti non si distrugge!!!
|
||||||
|
|
||||||
|
_formule = prof.get("CAMPICALC", "MAIN");
|
||||||
|
const TString & calcoli = prof.get("CALCOLI", "MAIN");
|
||||||
|
|
||||||
|
if (calcoli == "*")
|
||||||
|
{
|
||||||
|
TTable frd("%FRD");
|
||||||
|
|
||||||
|
for (int err = frd.first(); err == NOERR; err = frd.next())
|
||||||
|
{
|
||||||
|
const TString & formula = frd.get("CODTAB");
|
||||||
|
if (_formule.find(formula) < 0)
|
||||||
|
_formule.add(formula);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_formule.add(calcoli);
|
||||||
|
_totale = prof.get("TOTALE", "MAIN");
|
||||||
|
if (_totale.empty())
|
||||||
|
_totale = "TOTDOC";
|
||||||
|
const TRectype& for_tot = cache().get("%FRD", _totale);
|
||||||
|
if (for_tot.empty())
|
||||||
|
_formule_documento.add(_totale, new TFormula_documento(_documento, _totale, "IMPONIBILI()+IMPOSTE()"), TRUE);
|
||||||
|
|
||||||
|
if (_formule.find(_totale) < 0)
|
||||||
|
_formule.add(_totale);
|
||||||
|
_totale_netto = "_";
|
||||||
|
_totale_netto << _totale;
|
||||||
|
|
||||||
|
_basesconto = prof.get("BASESCONTO");
|
||||||
|
if (_basesconto.empty())
|
||||||
|
_basesconto = "BASESCONTO";
|
||||||
|
|
||||||
|
const TRectype& for_bas = cache().get("%FRD", _basesconto);
|
||||||
|
if (for_bas.empty())
|
||||||
|
_formule_documento.add(_basesconto, new TFormula_documento(_documento, _basesconto, "SOMMA(\"IMPONIBILE()\", \"(TIPO() != 'S') && (TIPO() != 'C')\")"), TRUE);
|
||||||
|
|
||||||
|
if (_formule.find(_basesconto) < 0)
|
||||||
|
_formule.add(_basesconto);
|
||||||
|
|
||||||
|
_spese = prof.get("SPESE");
|
||||||
|
if (_spese.empty())
|
||||||
|
_spese = "SPESE";
|
||||||
|
|
||||||
|
const TRectype& for_spe = cache().get("%FRD", _spese);
|
||||||
|
if (for_spe.empty())
|
||||||
|
_formule_documento.add(_spese, new TFormula_documento(_documento, _spese, "SOMMA(\"IMPONIBILE()\", \"TIPO() == 'S'\")"), TRUE);
|
||||||
|
|
||||||
|
if (_formule.find(_spese) < 0)
|
||||||
|
_formule.add(_spese);
|
||||||
|
|
||||||
|
_totvalres = prof.get("TOTVALRES");
|
||||||
|
if (_totvalres.empty())
|
||||||
|
_totvalres = "TOTVALRES";
|
||||||
|
|
||||||
|
_totvalore = prof.get("TOTVALORE");
|
||||||
|
if (_totvalore.empty())
|
||||||
|
_totvalore = "TOTVALORE";
|
||||||
|
|
||||||
|
const TRectype& for_tvr = cache().get("%FRD", _totvalres);
|
||||||
|
if (for_tvr.empty())
|
||||||
|
_formule_documento.add(_totvalres, new TFormula_documento(_documento, _totvalres, "VALDOC(0)"), TRUE);
|
||||||
|
|
||||||
|
if (_formule.find(_totvalres) < 0)
|
||||||
|
_formule.add(_totvalres);
|
||||||
|
|
||||||
|
const TRectype& for_tva = cache().get("%FRD", _totvalore);
|
||||||
|
if (for_tva.empty())
|
||||||
|
_formule_documento.add(_totvalore, new TFormula_documento(_documento, _totvalore, "VALDOC(1)"), TRUE);
|
||||||
|
|
||||||
|
if (_formule.find(_totvalore) < 0)
|
||||||
|
_formule.add(_totvalore);
|
||||||
|
|
||||||
|
if (provvigioni())
|
||||||
|
{
|
||||||
|
TString80 campo(prof.get("TOTPROVV"));
|
||||||
|
if (campo.empty())
|
||||||
|
campo = "TOTPROVV";
|
||||||
|
const TRectype& frd = cache().get("%FRD", campo);
|
||||||
|
|
||||||
|
_totprovv = "_";
|
||||||
|
_totprovv << campo;
|
||||||
|
|
||||||
|
TString80 expr(frd.get("S1"));
|
||||||
|
if (expr.empty())
|
||||||
|
expr = "SOMMA(\"PROVV()\")";
|
||||||
|
_formule_documento.add(_totprovv, new TFormula_documento(_documento, _totprovv, expr, TRUE));
|
||||||
|
if (_formule.find(campo) < 0)
|
||||||
|
_formule.add(campo);
|
||||||
|
_formule.add(_totprovv);
|
||||||
|
_formule_documento.add(campo, new TFormula_documento(_documento, campo, "TOTPROVV()"), TRUE);
|
||||||
|
}
|
||||||
|
_totale_cont = prof.get("TOTALECONT", "MAIN");
|
||||||
|
_cnt_prezzi = prof.get_bool("CONTROLLO_PREZZI", "MAIN");
|
||||||
|
_field_prezzo = prof.get("PREZZO", "MAIN");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTipo_documento::stato_with_mov_mag(const char stato) const
|
||||||
|
{
|
||||||
|
if (!mov_mag())
|
||||||
|
return FALSE;
|
||||||
|
const char stato_finale(stato_mov_finale());
|
||||||
|
if (stato_finale > ' ' && stato > stato_finale)
|
||||||
|
return FALSE;
|
||||||
|
const char stato_iniziale(stato_mov_iniziale());
|
||||||
|
return stato >= stato_iniziale;
|
||||||
|
}
|
||||||
|
|
||||||
|
TFormula_documento * TTipo_documento::succ_formula(bool restart)
|
||||||
|
{
|
||||||
|
if (restart)
|
||||||
|
_formule.restart();
|
||||||
|
|
||||||
|
TString formula = _formule.get();
|
||||||
|
while (formula.not_empty())
|
||||||
|
{
|
||||||
|
if (formula.blank())
|
||||||
|
formula = _formule.get();
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formula.not_empty())
|
||||||
|
{
|
||||||
|
char *expr = NULL;
|
||||||
|
const int p = formula.find('=');
|
||||||
|
if (p > 0)
|
||||||
|
{
|
||||||
|
expr = (char *) (const char *) formula + p;
|
||||||
|
*expr = '\0'; expr++;
|
||||||
|
}
|
||||||
|
TFormula_documento * o = (TFormula_documento*)_formule_documento.objptr(formula);
|
||||||
|
if (o == NULL)
|
||||||
|
{
|
||||||
|
o = new TFormula_documento(_documento, formula, expr);
|
||||||
|
_formule_documento.add(formula, o);
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TTipo_documento::scarica_residuo() const
|
||||||
|
{
|
||||||
|
if (is_ordine() && !riporta_ordinato())
|
||||||
|
return TRUE;
|
||||||
|
return get_bool("B4");
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Espressione documento
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TExpr_documento::TExpr_documento(const char* expression, TTypeexp type,
|
||||||
|
TDocumento * doc, TRiga_documento * row)
|
||||||
|
: TExpression(type), _doc(doc), _row(row)
|
||||||
|
{
|
||||||
|
if (!set(expression, type))
|
||||||
|
error_box("Wrong expression : '%s'", expression);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TExpr_documento::parse_user_func(const char * name, int nparms) const
|
||||||
|
{
|
||||||
|
if (strcmp(name, "SOMMA") == 0)
|
||||||
|
return nparms > 0 || nparms < 3 ? _somma : -1;
|
||||||
|
if (strcmp(name, "BOLLI") == 0)
|
||||||
|
return nparms > 0 || nparms < 4 ? _bolli : -1;
|
||||||
|
if (strcmp(name, "_BOLLI") == 0)
|
||||||
|
return nparms > 0 || nparms < 3 ? _bolli_int : -1;
|
||||||
|
if (strcmp(name, "SPESEINC") == 0)
|
||||||
|
return nparms > 0 || nparms < 4 ? _spinc : -1;
|
||||||
|
if (strcmp(name, "PREZZO") == 0)
|
||||||
|
return nparms < 4 ? _prezzo : -1;
|
||||||
|
if (strcmp(name, "IMPORTO") == 0)
|
||||||
|
return nparms < 4 ? _importo : -1;
|
||||||
|
if (strcmp(name, "SCONTO") == 0)
|
||||||
|
return nparms < 2 ? _sconto : -1;
|
||||||
|
if (strcmp(name, "IMPONIBILE") == 0)
|
||||||
|
return nparms == 0 ? _imponibile : -1;
|
||||||
|
if (strcmp(name, "IVA") == 0)
|
||||||
|
return nparms == 0 ? _iva : -1;
|
||||||
|
if (strcmp(name, "PROVV") == 0)
|
||||||
|
return nparms < 2 ? _provv : -1;
|
||||||
|
if (strcmp(name, "QTARES") == 0)
|
||||||
|
return nparms < 2 ? _qtares : -1;
|
||||||
|
if (strcmp(name, "VALDOC") == 0)
|
||||||
|
return nparms < 3 ? _valdoc : -1;
|
||||||
|
if (strcmp(name, "TIPO") == 0)
|
||||||
|
return nparms == 0 ? _tipo : -1;
|
||||||
|
if (strcmp(name, "IMPONIBILI") == 0)
|
||||||
|
return nparms < 3 ? _imponibili : -1;
|
||||||
|
if (strcmp(name, "IMPOSTE") == 0)
|
||||||
|
return nparms < 3 ? _imposte : -1;
|
||||||
|
if (strcmp(name, "TOTPROVV") == 0)
|
||||||
|
return nparms < 3 ? _totprovv : -1;
|
||||||
|
if (strcmp(name, "PSCONTOT") == 0)
|
||||||
|
return nparms < 1 ? _pscontot : -1;
|
||||||
|
if (strcmp(name, "RITENUTA") == 0)
|
||||||
|
return nparms < 3 ? _ritenuta : -1;
|
||||||
|
if (strcmp(name, "TIPORIT") == 0)
|
||||||
|
return nparms < 1 ? _tipo_ritenuta : -1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & stack, TTypeexp type) const
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case _somma:
|
||||||
|
{
|
||||||
|
const TString cond(nparms == 2 ? stack.pop_string() : "STR(1)");
|
||||||
|
const TString & field = stack.pop_string();
|
||||||
|
real somma;
|
||||||
|
|
||||||
|
if (_doc != NULL)
|
||||||
|
{
|
||||||
|
TExpr_documento cond_expr(cond, _strexpr, _doc);
|
||||||
|
const int cond_nvars = cond_expr.numvar();
|
||||||
|
TExpr_documento expr(field, _numexpr, _doc);
|
||||||
|
const int nvars = expr.numvar();
|
||||||
|
const int nrows = _doc->rows();
|
||||||
|
|
||||||
|
for (int i = nrows; i > 0; i--)
|
||||||
|
{
|
||||||
|
TRiga_documento & riga = (TRiga_documento &) (*_doc)[i];
|
||||||
|
|
||||||
|
for (int j = cond_nvars - 1; j >= 0; j--)
|
||||||
|
{
|
||||||
|
const char* s = cond_expr.varname(j);
|
||||||
|
TFieldref f(s,0);
|
||||||
|
cond_expr.setvar(j, f.read(riga));
|
||||||
|
}
|
||||||
|
cond_expr.set_row(&riga);
|
||||||
|
if ((bool)cond_expr)
|
||||||
|
{
|
||||||
|
for (j = nvars - 1; j >= 0; j--)
|
||||||
|
{
|
||||||
|
const char* s = expr.varname(j);
|
||||||
|
TFieldref f(s,0);
|
||||||
|
expr.setvar(j, f.read(riga));
|
||||||
|
}
|
||||||
|
expr.set_row(&riga);
|
||||||
|
somma += expr.as_real();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stack.push(somma);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _spinc:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool netto = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 2)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 1)
|
||||||
|
netto = !stack.pop_real().is_zero();
|
||||||
|
|
||||||
|
real & r = stack.peek_real();
|
||||||
|
|
||||||
|
if (_doc)
|
||||||
|
r = _doc->spese_incasso(r, ndec, netto ? _netto : _lordo);
|
||||||
|
else
|
||||||
|
r = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _bolli:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool netto = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 2)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 1)
|
||||||
|
netto = !stack.pop_real().is_zero();
|
||||||
|
|
||||||
|
real & r = stack.peek_real();
|
||||||
|
|
||||||
|
if (_doc)
|
||||||
|
{
|
||||||
|
r += _doc->spese_incasso(r, ndec);
|
||||||
|
r = _doc->bolli(r, ndec, netto ? _netto : _lordo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
r = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _bolli_int:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
|
||||||
|
if (nparms > 2)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
|
||||||
|
real & r = stack.peek_real();
|
||||||
|
|
||||||
|
if (_doc)
|
||||||
|
{
|
||||||
|
real r1 = _doc->spese_incasso(r, ndec);
|
||||||
|
r += r1;
|
||||||
|
r1 += _doc->bolli(r, ndec);
|
||||||
|
r = r1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
r = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _prezzo:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool lordo = FALSE;
|
||||||
|
bool scontato = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 2)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 1)
|
||||||
|
lordo = !stack.pop_real().is_zero();
|
||||||
|
if (nparms > 0)
|
||||||
|
scontato = !stack.peek_real().is_zero();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
if (_row)
|
||||||
|
val = _row->prezzo(scontato, lordo, ndec);
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _importo:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool lordo = FALSE;
|
||||||
|
bool scontato = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 2)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 1)
|
||||||
|
lordo = !stack.pop_real().is_zero();
|
||||||
|
if (nparms > 0)
|
||||||
|
scontato = !stack.peek_real().is_zero();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
if (_row)
|
||||||
|
val = _row->importo(scontato, lordo, ndec);
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _imponibile:
|
||||||
|
{
|
||||||
|
real r;
|
||||||
|
|
||||||
|
if (_row)
|
||||||
|
r = _row->imponibile();
|
||||||
|
stack.push(r);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _sconto:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
|
||||||
|
if (nparms > 0)
|
||||||
|
ndec = (int) stack.peek_real().integer();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
if (_row)
|
||||||
|
{
|
||||||
|
if (_row->is_sconto())
|
||||||
|
val = -_row->importo(FALSE, FALSE, ndec);
|
||||||
|
else
|
||||||
|
val = _row->importo(FALSE, FALSE, ndec) - _row->importo(TRUE, FALSE, ndec);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _iva:
|
||||||
|
{
|
||||||
|
real r;
|
||||||
|
|
||||||
|
if (_row)
|
||||||
|
r = _row->imposta();
|
||||||
|
stack.push(r);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _provv:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
|
||||||
|
if (nparms > 0)
|
||||||
|
ndec = (int) stack.peek_real().integer();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
|
||||||
|
if (_row)
|
||||||
|
val = _row->provvigione(ndec);
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _qtares:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
|
||||||
|
if (nparms > 0)
|
||||||
|
ndec = (int) stack.peek_real().integer();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
|
||||||
|
if (_row)
|
||||||
|
val = _row->qtaresidua();
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _valdoc:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool totale = TRUE; // Totale o residuo per documento
|
||||||
|
|
||||||
|
if (nparms > 1)
|
||||||
|
ndec = (int)stack.pop_real().integer();
|
||||||
|
if (nparms > 0)
|
||||||
|
totale = !stack.peek_real().is_zero();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
|
||||||
|
real & r = stack.peek_real();
|
||||||
|
|
||||||
|
if (_doc)
|
||||||
|
r = _doc->valore(totale, ndec);
|
||||||
|
else
|
||||||
|
r = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _tipo:
|
||||||
|
{
|
||||||
|
TString s;
|
||||||
|
if (_row)
|
||||||
|
s << _row->tipo().tipo();
|
||||||
|
stack.push(s);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _imponibili:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool spese = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 1)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 0)
|
||||||
|
spese = !stack.peek_real().is_zero();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
val = _doc->imponibile(spese, ndec);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _imposte:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool spese = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 1)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 0)
|
||||||
|
spese = !stack.peek_real().is_zero();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
val = _doc->imposta(spese, ndec);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _totprovv:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
|
||||||
|
if (nparms > 0)
|
||||||
|
ndec = (int) stack.peek_real().integer();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
|
||||||
|
val = _doc->provvigione(ndec);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _pscontot:
|
||||||
|
{
|
||||||
|
real val;
|
||||||
|
TString80 s;
|
||||||
|
|
||||||
|
if (_doc && scontoexpr2perc(_doc->get(DOC_SCONTOPERC), FALSE, s, val) && val != ZERO)
|
||||||
|
val = 1 - val;
|
||||||
|
stack.push(val);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _ritenuta:
|
||||||
|
{
|
||||||
|
int ndec = AUTO_DECIMALS;
|
||||||
|
bool lordo = FALSE;
|
||||||
|
|
||||||
|
if (nparms > 1)
|
||||||
|
ndec = (int) stack.pop_real().integer();
|
||||||
|
if (nparms > 0)
|
||||||
|
lordo = !stack.peek_real().is_zero();
|
||||||
|
else
|
||||||
|
stack.push(ZERO);
|
||||||
|
real & val = stack.peek_real();
|
||||||
|
|
||||||
|
const bool spesa = _row->tipo().tipo() == 'S';
|
||||||
|
|
||||||
|
if (spesa)
|
||||||
|
{
|
||||||
|
const bool tipo_rit = _row->spesa().tipo_ritenuta();
|
||||||
|
|
||||||
|
if (tipo_rit != '\0')
|
||||||
|
{
|
||||||
|
((TSpesa_prest &)_row->spesa()).zero("S9");
|
||||||
|
_row->dirty_fields();
|
||||||
|
val = _row->importo(TRUE, lordo, ndec);
|
||||||
|
_row->dirty_fields();
|
||||||
|
((TSpesa_prest &)_row->spesa()).put("S9", (char)tipo_rit);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
val = ZERO;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _tipo_ritenuta:
|
||||||
|
{
|
||||||
|
TString s;
|
||||||
|
if (_row && _row->tipo().tipo() == 'S')
|
||||||
|
s << _row->spesa().tipo_ritenuta();
|
||||||
|
stack.push(s);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
TExpression::evaluate_user_func(index, nparms, stack, type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TObject* TExpr_documento::dup() const
|
||||||
|
{
|
||||||
|
TExpr_documento* o = new TExpr_documento(*this);
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Formula documento
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TFormula_documento::TFormula_documento(TTipo_formula tipo, const char* codice, const char * expr, bool numexpr)
|
||||||
|
: TRectype(LF_TABCOM), _expr(NULL)
|
||||||
|
{
|
||||||
|
_tab = tipo == _documento ? "FRD" : "FRR";
|
||||||
|
settab(_tab);
|
||||||
|
_tab.insert("%");
|
||||||
|
if (codice && *codice)
|
||||||
|
read(codice, expr, numexpr);
|
||||||
|
}
|
||||||
|
|
||||||
|
TFormula_documento::TFormula_documento(const TRectype& rec)
|
||||||
|
: TRectype(rec), _expr(NULL)
|
||||||
|
{
|
||||||
|
_tab = "%";
|
||||||
|
_tab << rec.get("COD");
|
||||||
|
const TTypeexp et = expr_type();
|
||||||
|
_expr = new TExpr_documento(expr_string(), et);
|
||||||
|
}
|
||||||
|
|
||||||
|
TFormula_documento::~TFormula_documento()
|
||||||
|
{
|
||||||
|
if (_expr) delete _expr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TFormula_documento::read(const char* codice, const char * expr, bool numexpr)
|
||||||
|
{
|
||||||
|
if (_expr != NULL)
|
||||||
|
{
|
||||||
|
delete _expr;
|
||||||
|
_expr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
put("CODTAB", codice);
|
||||||
|
|
||||||
|
int err = NOERR;
|
||||||
|
|
||||||
|
if (expr && *expr)
|
||||||
|
{
|
||||||
|
put("S1", expr);
|
||||||
|
put("B0", numexpr ? "X" : "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TTable t(_tab);
|
||||||
|
err = TRectype::read(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
const TTypeexp et = expr_type();
|
||||||
|
const TString e = expr_string(); // Copio espressione proveniente da record
|
||||||
|
_expr = new TExpr_documento(e, et);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
zero();
|
||||||
|
put("CODTAB", codice);
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,9 @@
|
|||||||
#include "velib.h"
|
|
||||||
#include <clifo.h>
|
|
||||||
|
|
||||||
#ifndef __EXECP_H
|
|
||||||
#include <execp.h>
|
#include <execp.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __TABUTIL_H
|
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#include "velib.h"
|
||||||
|
|
||||||
|
#include <clifo.h>
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Lista di documenti
|
// Lista di documenti
|
||||||
|
@ -71,7 +71,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
|
|
||||||
// Costruisce la stringa di riferimento
|
// Costruisce la stringa di riferimento
|
||||||
TString riferimento(80);
|
TString riferimento(80);
|
||||||
riferimento = doc_in.tipo().riferimento();
|
riferimento = doc_in.riferimento();
|
||||||
if (riferimento.empty())
|
if (riferimento.empty())
|
||||||
riferimento = doc_in.tipo().descrizione();
|
riferimento = doc_in.tipo().descrizione();
|
||||||
if (usa_doc_rif() && doc_in.get(DOC_NUMDOCRIF).not_empty())
|
if (usa_doc_rif() && doc_in.get(DOC_NUMDOCRIF).not_empty())
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <rmoviva.h>
|
#include <rmoviva.h>
|
||||||
#include <clifo.h>
|
#include <clifo.h>
|
||||||
#include <cfven.h>
|
#include <cfven.h>
|
||||||
|
#include <comuni.h>
|
||||||
#include <occas.h>
|
#include <occas.h>
|
||||||
#include <scadenze.h>
|
#include <scadenze.h>
|
||||||
#include <doc.h>
|
#include <doc.h>
|
||||||
@ -363,8 +364,7 @@ bool TMovimentoPN_VE::movement_ok()
|
|||||||
tot_imp.valore() = 0.0;
|
tot_imp.valore() = 0.0;
|
||||||
if (_caus != NULL && _caus->intra())
|
if (_caus != NULL && _caus->intra())
|
||||||
{
|
{
|
||||||
real totdoc = curr().get(MOV_TOTDOC);
|
const TString& totdoc = curr().get(MOV_TOTDOC);
|
||||||
|
|
||||||
curr().put(MOV_CORRLIRE, totdoc);
|
curr().put(MOV_CORRLIRE, totdoc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -587,6 +587,17 @@ error_type TIVA_array::add(const TRiga_documento & r, const TBill& conto, const
|
|||||||
{
|
{
|
||||||
detr = t.detraibilita();
|
detr = t.detraibilita();
|
||||||
pind = t.perc_indetraibilita();
|
pind = t.perc_indetraibilita();
|
||||||
|
|
||||||
|
if (codcms.not_empty())
|
||||||
|
{
|
||||||
|
const TRectype & rec = cache().get("CMS", codcms);
|
||||||
|
|
||||||
|
if (rec.get("S7") == "NR")
|
||||||
|
{
|
||||||
|
detr = 9;
|
||||||
|
pind = 100.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
real impres = (impon * pind) / 100.0;
|
real impres = (impon * pind) / 100.0;
|
||||||
@ -678,6 +689,7 @@ error_type TIVA_array::add(const TRiga_documento & r, const TBill& conto, const
|
|||||||
return no_error;
|
return no_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TContabilizzazione::TContabilizzazione(const char* cod)
|
TContabilizzazione::TContabilizzazione(const char* cod)
|
||||||
: TElaborazione(cod), _auto_data(FALSE), _nump_iva(2)
|
: TElaborazione(cod), _auto_data(FALSE), _nump_iva(2)
|
||||||
{
|
{
|
||||||
@ -711,6 +723,7 @@ TContabilizzazione::TContabilizzazione(const char* cod)
|
|||||||
_righe_iva = new TIVA_array;
|
_righe_iva = new TIVA_array;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_can_write = TRUE;
|
_can_write = TRUE;
|
||||||
_error = no_error;
|
_error = no_error;
|
||||||
_total_docs = 0L;
|
_total_docs = 0L;
|
||||||
@ -967,7 +980,7 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
|||||||
// per reperire il tipo documento ed il tipo movimento
|
// per reperire il tipo documento ed il tipo movimento
|
||||||
// reperisce la descrizione dal tipo documento e la completa con la data documento ed il
|
// reperisce la descrizione dal tipo documento e la completa con la data documento ed il
|
||||||
// numero documento
|
// numero documento
|
||||||
TString80 descr(tipo.riferimento());
|
TString80 descr(doc.riferimento());
|
||||||
if (descr.empty()) descr = tipo.descrizione();
|
if (descr.empty()) descr = tipo.descrizione();
|
||||||
|
|
||||||
const TString16 rif = doc.get(DOC_NUMDOCRIF);
|
const TString16 rif = doc.get(DOC_NUMDOCRIF);
|
||||||
@ -2672,13 +2685,13 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
|
|||||||
const TRectype& por_rec = cchh.get("%POR", doc.get(DOC_CODPORTO));
|
const TRectype& por_rec = cchh.get("%POR", doc.get(DOC_CODPORTO));
|
||||||
const TString16 consegna(por_rec.get("S3")); // condizioni di consegna
|
const TString16 consegna(por_rec.get("S3")); // condizioni di consegna
|
||||||
const int trasporto = por_rec.get_int("I0"); // tipo di trasporto...
|
const int trasporto = por_rec.get_int("I0"); // tipo di trasporto...
|
||||||
const int natura = doc.tipo().get_int("I2"); // natura della transazione, valida per tutte le righe del documento
|
const char natura = doc.tipo().get("S3")[3]; // natura della transazione, valida per tutte le righe del documento
|
||||||
const long numreg = rm.get_long(MOV_NUMREG);
|
const long numreg = rm.get_long(MOV_NUMREG);
|
||||||
TString16 nomenclatura, paeseorig, provincia, paese, codmag, commag;
|
TString16 nomenclatura, ums, paeseorig, provincia, paese, codmag, commag;
|
||||||
real totale_righe;
|
real totale_righe, massanun, unsuppun;
|
||||||
const real cambio = doc.cambio();
|
const real cambio = doc.cambio();
|
||||||
const bool is_val = doc.in_valuta();
|
const bool is_val = doc.in_valuta();
|
||||||
const bool is_cessione = rm.get(MOV_TIPO)=="C";
|
const bool is_cessione = rm.get_char(MOV_TIPO)=='C';
|
||||||
|
|
||||||
paese = _clifo->lfile().get(CLI_STATOPAIV); // Paese del cliente/fornitore...
|
paese = _clifo->lfile().get(CLI_STATOPAIV); // Paese del cliente/fornitore...
|
||||||
|
|
||||||
@ -2692,17 +2705,28 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
|
|||||||
const TRiga_documento& rr = doc[i];
|
const TRiga_documento& rr = doc[i];
|
||||||
if (rr.is_articolo())
|
if (rr.is_articolo())
|
||||||
{
|
{
|
||||||
key = "";
|
|
||||||
codmag = rr.get(RDOC_CODMAG);
|
codmag = rr.get(RDOC_CODMAG);
|
||||||
const TRectype& rec_anamag = cchh.get(LF_ANAMAG, rr.get(RDOC_CODARTMAG));
|
const TRectype& rec_anamag = cchh.get(LF_ANAMAG, rr.get(RDOC_CODARTMAG));
|
||||||
commag = cchh.get("MAG", codmag, "S5"); // Comune del magazzino
|
commag = cchh.get("MAG", codmag, "S5"); // Comune del magazzino
|
||||||
nomenclatura = rec_anamag.get(ANAMAG_CLASSDOG);
|
nomenclatura = rec_anamag.get(ANAMAG_CLASSDOG);
|
||||||
|
ums = cchh.get("%NOC", nomenclatura, "S5");
|
||||||
|
massanun = rec_anamag.get_real(ANAMAG_MASSANUN); // Massa KG
|
||||||
|
unsuppun = rec_anamag.get_real(ANAMAG_UNSUPPUN); // Massa UMS
|
||||||
paeseorig = !is_cessione ? rec_anamag.get(ANAMAG_PAESE) : EMPTY_STRING; // Campo solo per Acquisti
|
paeseorig = !is_cessione ? rec_anamag.get(ANAMAG_PAESE) : EMPTY_STRING; // Campo solo per Acquisti
|
||||||
provincia = is_cessione ? rec_anamag.get(ANAMAG_PROV) : cchh.get(LF_COMUNI, commag, "PROVCOM");
|
provincia = is_cessione ? rec_anamag.get(ANAMAG_PROV) : cchh.get(LF_COMUNI, commag, COM_PROVCOM);
|
||||||
|
|
||||||
|
if (nomenclatura.blank() || unsuppun.is_zero() || massanun.is_zero())
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg << "--- L'articolo " << rec_anamag.get(ANAMAG_CODART) << " non riporta tutti i dati necessari per il movimento intracomunitario:";
|
||||||
|
_viswin->add_line(msg);
|
||||||
|
_viswin->add_line(" Verificare i seguenti valori: nomenclatura combinata, unità di misura supplementare, massa netta unitaria.");
|
||||||
|
}
|
||||||
|
|
||||||
|
key.cut(0);
|
||||||
key.add(nomenclatura);
|
key.add(nomenclatura);
|
||||||
key.add(paeseorig);
|
key.add(paeseorig);
|
||||||
key.add(provincia);
|
key.add(provincia);
|
||||||
|
|
||||||
TRectype* rc = (TRectype*) righe.objptr(key);
|
TRectype* rc = (TRectype*) righe.objptr(key);
|
||||||
if (rc == NULL)
|
if (rc == NULL)
|
||||||
{
|
{
|
||||||
@ -2712,7 +2736,7 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
|
|||||||
rc->put("NATURA", natura);
|
rc->put("NATURA", natura);
|
||||||
rc->put("CONSEGNA", consegna);
|
rc->put("CONSEGNA", consegna);
|
||||||
rc->put("TRASPORTO", trasporto);
|
rc->put("TRASPORTO", trasporto);
|
||||||
rc->put("UMS", cchh.get("%NOC", nomenclatura, "S5"));
|
rc->put("UMS", ums);
|
||||||
rc->put("NOMENCL", nomenclatura);
|
rc->put("NOMENCL", nomenclatura);
|
||||||
rc->put("PAESE", paese);
|
rc->put("PAESE", paese);
|
||||||
rc->put("PAESEORIG", paeseorig);
|
rc->put("PAESEORIG", paeseorig);
|
||||||
@ -2723,16 +2747,16 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
|
|||||||
TCurrency_documento imp_val(rr.exist("VALINTRA") ? rr.get_real("VALINTRA") :rr.importo(TRUE, FALSE), doc);
|
TCurrency_documento imp_val(rr.exist("VALINTRA") ? rr.get_real("VALINTRA") :rr.importo(TRUE, FALSE), doc);
|
||||||
TCurrency_documento imp(imp_val); imp.change_to_firm_val();
|
TCurrency_documento imp(imp_val); imp.change_to_firm_val();
|
||||||
imp_val.change_value(codvali, cambioi);
|
imp_val.change_value(codvali, cambioi);
|
||||||
real ammlire = rc->get_real("AMMLIRE");
|
real ammlire = rc->get("AMMLIRE");
|
||||||
real ammvaluta = rc->get_real("AMMVALUTA");
|
real ammvaluta = rc->get("AMMVALUTA");
|
||||||
real massakg = rc->get_real("MASSAKG");
|
real massakg = rc->get("MASSAKG");
|
||||||
real massaums = rc->get_real("MASSAUMS");
|
real massaums = rc->get("MASSAUMS");
|
||||||
real valstat = rc->get_real("VALSTAT");
|
real valstat = rc->get("VALSTAT");
|
||||||
|
|
||||||
ammlire += imp.get_num();
|
ammlire += imp.get_num();
|
||||||
ammvaluta += is_val ? imp_val.get_num() : ZERO;
|
ammvaluta += is_val ? imp_val.get_num() : ZERO;
|
||||||
massakg += qta * rec_anamag.get_real(ANAMAG_MASSANUN);
|
massakg += qta * massanun;
|
||||||
massaums += qta * rec_anamag.get_real(ANAMAG_UNSUPPUN);
|
massaums += qta * unsuppun;
|
||||||
|
|
||||||
if (rr.exist("VALSTAT"))
|
if (rr.exist("VALSTAT"))
|
||||||
{
|
{
|
||||||
@ -2753,6 +2777,8 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_error == no_error)
|
||||||
|
{
|
||||||
// Copia il contenuto dell'assoc nel record array
|
// Copia il contenuto dell'assoc nel record array
|
||||||
TRectype* rc = new TRectype(LF_RINTRA);
|
TRectype* rc = new TRectype(LF_RINTRA);
|
||||||
rc->put("NUMREG", numreg);
|
rc->put("NUMREG", numreg);
|
||||||
@ -2773,9 +2799,15 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
|
|||||||
if (intra.write() == _isdupkey) // Sebbene non debba succedere, si effettua una riscrittura
|
if (intra.write() == _isdupkey) // Sebbene non debba succedere, si effettua una riscrittura
|
||||||
intra.rewrite();
|
intra.rewrite();
|
||||||
|
|
||||||
|
if (intra.status() == NOERR)
|
||||||
|
{
|
||||||
// righe!
|
// righe!
|
||||||
if (intra.status() != NOERR || rintra.write(TRUE) != NOERR) // Forza la riscrittura se necessario
|
if (rintra.write(TRUE) != NOERR) // Forza la riscrittura se necessario
|
||||||
_error = intra_mov_error;
|
_error = intra_mov_error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_error = intra_mov_error;
|
||||||
|
}
|
||||||
|
|
||||||
return _error;
|
return _error;
|
||||||
}
|
}
|
||||||
@ -3114,6 +3146,7 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& /*
|
|||||||
if (good() && _can_write)
|
if (good() && _can_write)
|
||||||
write_all(doc, *_movimento); // Se la scrittura e' andata ok...
|
write_all(doc, *_movimento); // Se la scrittura e' andata ok...
|
||||||
|
|
||||||
|
|
||||||
if (!good())
|
if (!good())
|
||||||
{
|
{
|
||||||
display_error(doc);
|
display_error(doc);
|
||||||
|
600
ve/velib06.cpp
600
ve/velib06.cpp
@ -1,10 +1,11 @@
|
|||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
#include <dongle.h>
|
#include <dongle.h>
|
||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <utility.h>
|
#include <tree.h>
|
||||||
#include <postman.h>
|
#include <postman.h>
|
||||||
|
|
||||||
#include "velib.h"
|
#include "velib.h"
|
||||||
@ -20,6 +21,9 @@
|
|||||||
|
|
||||||
#include "sconti.h"
|
#include "sconti.h"
|
||||||
|
|
||||||
|
#include "doc.h"
|
||||||
|
#include "rdoc.h"
|
||||||
|
|
||||||
TDocumento_mask::TDocumento_mask(const char* td)
|
TDocumento_mask::TDocumento_mask(const char* td)
|
||||||
: TVariable_mask(), _progs_page(-1), _last_prog(-1),
|
: TVariable_mask(), _progs_page(-1), _last_prog(-1),
|
||||||
_condv(NULL)
|
_condv(NULL)
|
||||||
@ -121,7 +125,6 @@ TDocumento_mask::TDocumento_mask(const char* td)
|
|||||||
const bool gesval = cfg.get_bool("GESVAL");
|
const bool gesval = cfg.get_bool("GESVAL");
|
||||||
const bool gescambi = cfg.get_bool("GESVALAC");
|
const bool gescambi = cfg.get_bool("GESVALAC");
|
||||||
|
|
||||||
|
|
||||||
if (gesval)
|
if (gesval)
|
||||||
{
|
{
|
||||||
const bool enable_controeuro = cfg.get_bool("CONTROEURO");
|
const bool enable_controeuro = cfg.get_bool("CONTROEURO");
|
||||||
@ -600,7 +603,10 @@ void TDocumento_mask::sconto_testa2mask()
|
|||||||
else
|
else
|
||||||
cod = " ";
|
cod = " ";
|
||||||
if( ditta.get_bool("SCOKEY", "ve", 3))
|
if( ditta.get_bool("SCOKEY", "ve", 3))
|
||||||
cod << format("%-2s", (const char *)ven_rec.get(CFV_CODZONA));
|
{
|
||||||
|
TString8 cz; cz.format("%-2s", (const char*)ven_rec.get(CFV_CODZONA));
|
||||||
|
cod << cz;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
cod << " ";
|
cod << " ";
|
||||||
if( ditta.get_bool("SCOKEY", "ve", 4))
|
if( ditta.get_bool("SCOKEY", "ve", 4))
|
||||||
@ -723,8 +729,7 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
|||||||
|
|
||||||
for( int i = 1; i <= numhandler; i ++ )
|
for( int i = 1; i <= numhandler; i ++ )
|
||||||
{
|
{
|
||||||
TString16 chiave;
|
TString8 chiave; chiave.format("%d", i );
|
||||||
chiave.format( "%d", i );
|
|
||||||
TToken_string riga = pro.get( chiave, "HANDLERS" );
|
TToken_string riga = pro.get( chiave, "HANDLERS" );
|
||||||
row_set_handler( *m, riga.get_int( 0 ), riga.get_int( 1 ) );
|
row_set_handler( *m, riga.get_int( 0 ), riga.get_int( 1 ) );
|
||||||
}
|
}
|
||||||
@ -816,6 +821,7 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
|||||||
if (close_filter) filter << ')';
|
if (close_filter) filter << ')';
|
||||||
browse.set_filter(filter);
|
browse.set_filter(filter);
|
||||||
}
|
}
|
||||||
|
m->set_handler(DLG_USER, link_handler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -978,8 +984,10 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
|||||||
else
|
else
|
||||||
if ( key == K_TAB ) // ingresso nella riga
|
if ( key == K_TAB ) // ingresso nella riga
|
||||||
{
|
{
|
||||||
set_curr_um(ss.sheet_mask());
|
TMask & sm = ss.sheet_mask();
|
||||||
|
set_curr_um(sm);
|
||||||
m.update_giacenza();
|
m.update_giacenza();
|
||||||
|
sm.enable(DLG_USER, doc[r + 1].get(RDOC_DACODNUM).not_empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1091,14 +1099,291 @@ bool TDocumento_mask::clifo_handler( TMask_field& f, KEY key )
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TDocument_tree
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TDocument_tree : public TBidirectional_tree
|
||||||
|
{
|
||||||
|
TRelation* _relation;
|
||||||
|
TCursor* _cursor;
|
||||||
|
TToken_string _curnode;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void node2id(const TObject* node, TString& id) const;
|
||||||
|
bool on_head() const;
|
||||||
|
bool on_row() const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool goto_root();
|
||||||
|
virtual bool goto_firstson();
|
||||||
|
virtual bool goto_rbrother();
|
||||||
|
virtual bool goto_node(const TString &id);
|
||||||
|
virtual bool has_son() const;
|
||||||
|
virtual bool has_rbrother() const;
|
||||||
|
virtual bool has_father() const;
|
||||||
|
virtual bool has_lbrother() const;
|
||||||
|
virtual bool goto_father();
|
||||||
|
virtual bool goto_lbrother();
|
||||||
|
virtual TObject* curr_node() const { return &(TToken_string&)_curnode; }
|
||||||
|
virtual bool get_description(TString& str) const;
|
||||||
|
|
||||||
|
const TRectype& testata() const;
|
||||||
|
const TRectype& riga() const;
|
||||||
|
const TRectype& record() const;
|
||||||
|
|
||||||
|
void set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff = NULL);
|
||||||
|
TCursor* get_cursor() { return _cursor; }
|
||||||
|
|
||||||
|
TDocument_tree();
|
||||||
|
~TDocument_tree();
|
||||||
|
};
|
||||||
|
|
||||||
|
const TRectype& TDocument_tree::testata() const
|
||||||
|
{
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
const TRecnotype pos = me._curnode.get_long(0);
|
||||||
|
if (_cursor->pos() != pos)
|
||||||
|
*me._cursor = pos;
|
||||||
|
return _relation->curr();
|
||||||
|
}
|
||||||
|
|
||||||
|
const TRectype& TDocument_tree::riga() const
|
||||||
|
{
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
const TRectype& rec = _relation->curr(LF_RIGHEDOC);
|
||||||
|
const TRecnotype pos = me._curnode.get_long(0);
|
||||||
|
const int nriga = me._curnode.get_int(1);
|
||||||
|
if (_cursor->pos() != pos || rec.get_int(RDOC_NRIGA) > nriga)
|
||||||
|
*me._cursor = pos;
|
||||||
|
for (int i = rec.get_int(RDOC_NRIGA); i < nriga; i++)
|
||||||
|
_relation->next_match(LF_RIGHEDOC);
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TRectype& TDocument_tree::record() const
|
||||||
|
{
|
||||||
|
return on_row() ? riga() : testata();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDocument_tree::node2id(const TObject* node, TString& id) const
|
||||||
|
{
|
||||||
|
id = *(TString*)node;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::on_head() const
|
||||||
|
{
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
return me._curnode.get_int(1) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::on_row() const
|
||||||
|
{
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
return me._curnode.get_int(1) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::goto_root()
|
||||||
|
{
|
||||||
|
bool ok = _cursor != NULL && _cursor->items()>0;
|
||||||
|
_curnode = ok ? "0" : "";
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::goto_firstson()
|
||||||
|
{
|
||||||
|
bool ok = has_son();
|
||||||
|
if (ok)
|
||||||
|
_curnode.add(1,1);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::goto_rbrother()
|
||||||
|
{
|
||||||
|
bool ok = has_rbrother();
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
if (on_head())
|
||||||
|
{
|
||||||
|
const long pos = _curnode.get_long(0);
|
||||||
|
_curnode.add(pos+1, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int nriga = _curnode.get_int(1);
|
||||||
|
_curnode.add(nriga+1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::goto_node(const TString &id)
|
||||||
|
{
|
||||||
|
_curnode = id;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::has_son() const
|
||||||
|
{
|
||||||
|
bool ok = on_head();
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
testata();
|
||||||
|
const TRectype& rec = _relation->curr(LF_RIGHEDOC);
|
||||||
|
ok = rec.get_int(RDOC_NRIGA) > 0;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::has_rbrother() const
|
||||||
|
{
|
||||||
|
bool ok = FALSE;
|
||||||
|
if (on_head())
|
||||||
|
{
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
const long pos = me._curnode.get_long(0);
|
||||||
|
ok = pos < _cursor->items()-1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
riga(); // Posizionati sulla riga corrente
|
||||||
|
ok = _relation->next_match(LF_RIGHEDOC);
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::has_father() const
|
||||||
|
{
|
||||||
|
return on_row();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::has_lbrother() const
|
||||||
|
{
|
||||||
|
bool ok = FALSE;
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
if (on_head())
|
||||||
|
{
|
||||||
|
const long pos = me._curnode.get_long(0);
|
||||||
|
ok = pos > 0L;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int nriga = me._curnode.get_int(1);
|
||||||
|
ok = nriga > 1;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::goto_father()
|
||||||
|
{
|
||||||
|
bool ok = on_row();
|
||||||
|
if (ok)
|
||||||
|
_curnode.add(0, 1);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::goto_lbrother()
|
||||||
|
{
|
||||||
|
bool ok = has_lbrother();
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
if (on_head())
|
||||||
|
{
|
||||||
|
const long pos = _curnode.get_long(0);
|
||||||
|
_curnode.add(pos-1, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int nriga = _curnode.get_int(1);
|
||||||
|
_curnode.add(nriga-1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocument_tree::get_description(TString& str) const
|
||||||
|
{
|
||||||
|
TDocument_tree& me = (TDocument_tree&)*this;
|
||||||
|
if (on_head())
|
||||||
|
{
|
||||||
|
const TRectype& rec = testata();
|
||||||
|
TString16 tmp;
|
||||||
|
str = rec.get(DOC_ANNO);
|
||||||
|
str << ' ' << rec.get(DOC_CODNUM);
|
||||||
|
tmp.format("%6ld", rec.get_long(DOC_NDOC));
|
||||||
|
str << ' ' << tmp << ' ' << rec.get(DOC_DATADOC);
|
||||||
|
const char tipocf = rec.get_char(DOC_TIPOCF);
|
||||||
|
const long codcf = rec.get_long(DOC_CODCF);
|
||||||
|
tmp.format(" %c%6ld ", tipocf, codcf);
|
||||||
|
str << tmp;
|
||||||
|
tmp.format("%c|%6ld", tipocf, codcf);
|
||||||
|
str << cache().get(LF_CLIFO, tmp, CLI_RAGSOC);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TRectype& rec = riga();
|
||||||
|
str.format("%4d: ", rec.get_int(RDOC_NRIGA));
|
||||||
|
const TString80 codart = rec.get(RDOC_CODART);
|
||||||
|
if (codart.not_empty())
|
||||||
|
{
|
||||||
|
str << rec.get_real(RDOC_QTA).string("#.###.##@,@@@@@");
|
||||||
|
str << ' ' << codart << ' ';
|
||||||
|
}
|
||||||
|
str << rec.get(RDOC_DESCR);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDocument_tree::set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff)
|
||||||
|
{
|
||||||
|
if (_relation == NULL)
|
||||||
|
{
|
||||||
|
_relation = new TRelation(LF_DOC);
|
||||||
|
_relation->add(LF_RIGHEDOC, "PROVV==PROVV|ANNO==ANNO|CODNUM==CODNUM|NDOC==NDOC");
|
||||||
|
}
|
||||||
|
if (_cursor == NULL)
|
||||||
|
{
|
||||||
|
_cursor = new TCursor(_relation, "", 2);
|
||||||
|
}
|
||||||
|
TRectype& rec = _relation->curr();
|
||||||
|
rec.zero();
|
||||||
|
rec.put(DOC_TIPOCF, tipocf);
|
||||||
|
rec.put(DOC_CODCF, codcf);
|
||||||
|
rec.put(DOC_PROVV, "D");
|
||||||
|
rec.put(DOC_ANNO, anno);
|
||||||
|
_cursor->freeze(FALSE);
|
||||||
|
_cursor->setfilter(filter);
|
||||||
|
_cursor->setregion(rec, rec);
|
||||||
|
const long items = _cursor->items();
|
||||||
|
_cursor->freeze(TRUE);
|
||||||
|
|
||||||
|
goto_root();
|
||||||
|
if (items <= 3)
|
||||||
|
expand_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
TDocument_tree::TDocument_tree()
|
||||||
|
: _relation(NULL), _cursor(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TDocument_tree::~TDocument_tree()
|
||||||
|
{
|
||||||
|
if (_cursor)
|
||||||
|
delete _cursor;
|
||||||
|
if (_relation)
|
||||||
|
delete _relation;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TElabora_mask
|
// TElabora_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TElabora_mask : public TMask
|
class TElabora_mask : public TAutomask
|
||||||
{
|
{
|
||||||
TDocumento_mask* _main;
|
TDocumento_mask* _main;
|
||||||
TLista_elaborazioni _elab;
|
TLista_elaborazioni _elab;
|
||||||
|
TDocument_tree _tree;
|
||||||
|
|
||||||
// @access Protected Member
|
// @access Protected Member
|
||||||
protected:
|
protected:
|
||||||
@ -1106,27 +1391,77 @@ protected:
|
|||||||
static TElabora_mask* _myself;
|
static TElabora_mask* _myself;
|
||||||
static bool article_filter(const TRelation* rel);
|
static bool article_filter(const TRelation* rel);
|
||||||
|
|
||||||
// @access Public Member
|
void add_valuta_filter(TString& filter) const;
|
||||||
public:
|
|
||||||
|
void docrif_search();
|
||||||
void update_list();
|
void update_list();
|
||||||
void update_ndoc_filter(bool is_tipo_elaborazione = FALSE);
|
void update_ndoc_filter(bool is_tipo_elaborazione = FALSE);
|
||||||
|
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
// @access Public Member
|
||||||
|
public:
|
||||||
bool elabora();
|
bool elabora();
|
||||||
TElaborazione* curr_elab();
|
TElaborazione* curr_elab();
|
||||||
static bool tipo_elaborazione_handler( TMask_field& f, KEY key );
|
|
||||||
static bool tipo_documento_handler( TMask_field& f, KEY key );
|
|
||||||
static bool codnum_handler( TMask_field& f, KEY key );
|
|
||||||
static bool codart_handler( TMask_field& f, KEY key );
|
|
||||||
static bool list_elab_handler( TMask_field& f, KEY key );
|
|
||||||
static bool docrif_handler( TMask_field& f, KEY key );
|
|
||||||
|
|
||||||
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
|
// @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
|
||||||
TElabora_mask(TDocumento_mask * main_mask);
|
TElabora_mask(TDocumento_mask& main_mask);
|
||||||
// @cmember Distruttore
|
// @cmember Distruttore
|
||||||
virtual ~TElabora_mask() {}
|
virtual ~TElabora_mask() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TElabora_mask* TElabora_mask::_myself = NULL;
|
TElabora_mask* TElabora_mask::_myself = NULL;
|
||||||
|
|
||||||
|
bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_CODART:
|
||||||
|
case F_CODNUM_ELAB:
|
||||||
|
if (e == fe_modify)
|
||||||
|
update_ndoc_filter();
|
||||||
|
break;
|
||||||
|
case F_TYPE:
|
||||||
|
if (e == fe_init || e == fe_modify)
|
||||||
|
{
|
||||||
|
update_list();
|
||||||
|
update_ndoc_filter(TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_STATODOC_ELAB:
|
||||||
|
case F_TIPODOC_ELAB:
|
||||||
|
if (e == fe_modify)
|
||||||
|
{
|
||||||
|
update_list();
|
||||||
|
update_ndoc_filter();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_ELAB:
|
||||||
|
if (e == fe_modify)
|
||||||
|
update_ndoc_filter(TRUE);
|
||||||
|
break;
|
||||||
|
case F_NUMDOCRIF_ELAB:
|
||||||
|
if (e == fe_button)
|
||||||
|
docrif_search();
|
||||||
|
break;
|
||||||
|
case F_ROWS:
|
||||||
|
if (e == fe_modify && is_running())
|
||||||
|
{
|
||||||
|
TCursor* c = _tree.get_cursor();
|
||||||
|
if (c != NULL && c->items() > 0)
|
||||||
|
{
|
||||||
|
const TRectype& head = _tree.testata();
|
||||||
|
set(F_DATADOC_ELAB, head.get(DOC_DATADOC)); // Anch'essa nella chiave 2!
|
||||||
|
set(F_NDOC_ELAB, head.get(DOC_NDOC));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void TElabora_mask::update_list()
|
void TElabora_mask::update_list()
|
||||||
{
|
{
|
||||||
TString_array elabs;
|
TString_array elabs;
|
||||||
@ -1148,7 +1483,6 @@ void TElabora_mask::update_list()
|
|||||||
set(F_UPDATE_HEADER, agg_test ? "X" : "");
|
set(F_UPDATE_HEADER, agg_test ? "X" : "");
|
||||||
|
|
||||||
const bool ok = items > 0;
|
const bool ok = items > 0;
|
||||||
|
|
||||||
enable(DLG_OK, ok);
|
enable(DLG_OK, ok);
|
||||||
enable(F_ELAB, ok);
|
enable(F_ELAB, ok);
|
||||||
|
|
||||||
@ -1156,11 +1490,11 @@ void TElabora_mask::update_list()
|
|||||||
TToken_string codes;
|
TToken_string codes;
|
||||||
TToken_string descrs;
|
TToken_string descrs;
|
||||||
|
|
||||||
if (ok)
|
|
||||||
for (int i = 0; i < items; i++)
|
for (int i = 0; i < items; i++)
|
||||||
{
|
{
|
||||||
codes.add(format("%s", (const char *)_elab[elabs.row(i)].codice()));
|
const TElaborazione& e = _elab[elabs.row(i)];
|
||||||
descrs.add((const char *)_elab[elabs.row(i)].descrizione());
|
codes.add(e.codice());
|
||||||
|
descrs.add(e.descrizione());
|
||||||
}
|
}
|
||||||
if (codes != f.get_codes())
|
if (codes != f.get_codes())
|
||||||
f.replace_items(codes, descrs);
|
f.replace_items(codes, descrs);
|
||||||
@ -1174,9 +1508,6 @@ void TElabora_mask::update_list()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* TLista_elaborazioni TElabora_mask::_elab; */
|
|
||||||
|
|
||||||
bool TElabora_mask::elabora()
|
bool TElabora_mask::elabora()
|
||||||
{
|
{
|
||||||
bool update_mask = FALSE;
|
bool update_mask = FALSE;
|
||||||
@ -1278,7 +1609,7 @@ bool TElabora_mask::elabora()
|
|||||||
|
|
||||||
set(F_CODNUM_ELAB, num_in);
|
set(F_CODNUM_ELAB, num_in);
|
||||||
set(F_NDOC_ELAB, "");
|
set(F_NDOC_ELAB, "");
|
||||||
set(F_NUMDOCRIF, "");
|
set(F_NUMDOCRIF_ELAB, "");
|
||||||
}
|
}
|
||||||
if (e->tipo() == _consegna_ordini)
|
if (e->tipo() == _consegna_ordini)
|
||||||
{
|
{
|
||||||
@ -1338,16 +1669,37 @@ bool TElabora_mask::article_filter(const TRelation* rel)
|
|||||||
return yes;
|
return yes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TElabora_mask::add_valuta_filter(TString& filter) const
|
||||||
|
{
|
||||||
|
TString16 valuta = get(F_CODVAL_ELAB);
|
||||||
|
if (::is_firm_value(valuta))
|
||||||
|
{
|
||||||
|
filter << "((CODVAL==\"" << valuta << "\")";
|
||||||
|
if (valuta.empty())
|
||||||
|
valuta = TCurrency::get_firm_val();
|
||||||
|
else
|
||||||
|
valuta.cut(0);
|
||||||
|
filter << "||(CODVAL==\"" << valuta << "\"))";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
filter << "(CODVAL==\"" << valuta << "\")";
|
||||||
|
}
|
||||||
|
|
||||||
void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
||||||
{
|
{
|
||||||
TString filter(80);
|
TString filter(80);
|
||||||
filter.format("(TIPOCF==\"%s\")&&(CODCF==\"%s\")&&(CODVAL==\"%s\")", (const char *)get(F_TIPOCF_ELAB), (const char *)get(F_CODCF_ELAB), (const char *)get(F_CODVAL_ELAB));
|
// Ora è nella maschera
|
||||||
|
// filter.format("(TIPOCF==\"%s\")&&(CODCF==\"%s\")&&", (const char *)get(F_TIPOCF_ELAB), (const char *)get(F_CODCF_ELAB));
|
||||||
|
add_valuta_filter(filter);
|
||||||
const TString16 tipo(get(F_TIPODOC_ELAB));
|
const TString16 tipo(get(F_TIPODOC_ELAB));
|
||||||
TElaborazione * e = curr_elab();
|
TElaborazione * e = curr_elab();
|
||||||
const bool to_elab = get_bool(F_TYPE);
|
const bool to_elab = get_bool(F_TYPE);
|
||||||
|
|
||||||
if (!field(F_CODNUM_ELAB).empty())
|
if (!field(F_CODNUM_ELAB).empty())
|
||||||
filter << format("&&(CODNUM==\"%s\")", (const char*)get(F_CODNUM_ELAB));
|
{
|
||||||
|
TString80 cn; cn.format("&&(CODNUM==\"%s\")", (const char*)get(F_CODNUM_ELAB));
|
||||||
|
filter << cn;
|
||||||
|
}
|
||||||
|
|
||||||
enable(-1, to_elab /*&& e != NULL*/);
|
enable(-1, to_elab /*&& e != NULL*/);
|
||||||
|
|
||||||
@ -1357,16 +1709,16 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
{
|
{
|
||||||
if (to_elab)
|
if (to_elab)
|
||||||
{
|
{
|
||||||
TString8 num_in(e->codice_numerazione_iniziale());
|
const TString8 num_in = e->codice_numerazione_iniziale();
|
||||||
// TString8 tipo_in1;
|
|
||||||
// char stato_in1;
|
|
||||||
|
|
||||||
if (tipo.not_empty())
|
if (tipo.not_empty())
|
||||||
{
|
{
|
||||||
filter << format("&&(TIPODOC==\"%s\")", (const char *)tipo);
|
TString80 td; td.format("&&(TIPODOC==\"%s\")", (const char *)tipo);
|
||||||
const char* stato = get(F_STATODOC_ELAB);
|
filter << td;
|
||||||
if (stato != 0)
|
const TString& stato = get(F_STATODOC_ELAB);
|
||||||
filter << format("&&(STATO==\"%s\")", stato);
|
if (stato.not_empty())
|
||||||
|
{
|
||||||
|
filter << "&&(STATO==\"" << stato << "\")";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool almost_one = FALSE;
|
bool almost_one = FALSE;
|
||||||
@ -1384,17 +1736,16 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
filter << "&&(";
|
filter << "&&(";
|
||||||
almost_one = TRUE;
|
almost_one = TRUE;
|
||||||
|
|
||||||
filter << format("(STATO==\"%c\")", stato_in);
|
filter << "(STATO==\"" << stato_in << "\")";
|
||||||
}
|
}
|
||||||
if (i==0)
|
if (i==0)
|
||||||
{
|
{
|
||||||
// tipo_in1=tipo_in;
|
|
||||||
// stato_in1=stato_in;
|
|
||||||
set(F_CODNUM_ELAB, num_in);
|
set(F_CODNUM_ELAB, num_in);
|
||||||
field(F_CODNUM_ELAB).check();
|
field(F_CODNUM_ELAB).check();
|
||||||
set(F_TIPODOC_ELAB , tipo_in);
|
set(F_TIPODOC_ELAB , tipo_in);
|
||||||
field(F_TIPODOC_ELAB).check();
|
field(F_TIPODOC_ELAB).check();
|
||||||
set(F_STATODOC_ELAB, format("%c",stato_in));
|
TString8 si; si << stato_in;
|
||||||
|
set(F_STATODOC_ELAB, si);
|
||||||
field(F_STATODOC_ELAB).check();
|
field(F_STATODOC_ELAB).check();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1417,22 +1768,19 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
else
|
else
|
||||||
filter << "&&(";
|
filter << "&&(";
|
||||||
almost_one = TRUE;
|
almost_one = TRUE;
|
||||||
filter << format("((TIPODOC==\"%s\")", (const char *)tipo_in);
|
filter << "((TIPODOC==\"" << tipo_in << "\")";
|
||||||
|
|
||||||
const char stato_in = e->stato_iniziale(i);
|
const char stato_in[2] = { e->stato_iniziale(i), '\0' };
|
||||||
|
if (stato_in[0] > '0')
|
||||||
if (stato_in > '0')
|
filter << "&&(STATO==\"" << stato_in << "\")";
|
||||||
filter << format("&&(STATO==\"%c\")", stato_in);
|
|
||||||
filter << ')';
|
filter << ')';
|
||||||
if (i==0)
|
if (i==0)
|
||||||
{
|
{
|
||||||
// tipo_in1=tipo_in;
|
|
||||||
// stato_in1=stato_in;
|
|
||||||
set(F_CODNUM_ELAB, num_in);
|
set(F_CODNUM_ELAB, num_in);
|
||||||
field(F_CODNUM_ELAB).check();
|
field(F_CODNUM_ELAB).check();
|
||||||
set(F_TIPODOC_ELAB , tipo_in);
|
set(F_TIPODOC_ELAB , tipo_in);
|
||||||
field(F_TIPODOC_ELAB).check();
|
field(F_TIPODOC_ELAB).check();
|
||||||
set(F_STATODOC_ELAB, format("%c",stato_in));
|
set(F_STATODOC_ELAB, stato_in);
|
||||||
field(F_STATODOC_ELAB).check();
|
field(F_STATODOC_ELAB).check();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1442,7 +1790,6 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (is_tipo_elaborazione)
|
|
||||||
{
|
{
|
||||||
const TString16 tipo_fin(e->tipo_finale());
|
const TString16 tipo_fin(e->tipo_finale());
|
||||||
const TString16 stato_fin(e->stato_finale());
|
const TString16 stato_fin(e->stato_finale());
|
||||||
@ -1450,12 +1797,13 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
filter << "&&";
|
filter << "&&";
|
||||||
if (stato_fin != "0")
|
if (stato_fin != "0")
|
||||||
filter << '(';
|
filter << '(';
|
||||||
filter << format("(TIPODOC==\"%s\")", (const char *)tipo_fin);
|
filter << "(TIPODOC==\"" << tipo_fin << "\")";
|
||||||
if (stato_fin != "0")
|
if (stato_fin != "0")
|
||||||
filter << format("&&(STATO==\"%s\"))", (const char *)stato_fin);
|
filter << "&&(STATO==\"" << stato_fin << "\"))";
|
||||||
|
|
||||||
|
if (is_tipo_elaborazione)
|
||||||
|
{
|
||||||
const TString16 num_fin(e->codice_numerazione_finale());
|
const TString16 num_fin(e->codice_numerazione_finale());
|
||||||
|
|
||||||
set(F_CODNUM_ELAB, num_fin);
|
set(F_CODNUM_ELAB, num_fin);
|
||||||
field(F_CODNUM_ELAB).check();
|
field(F_CODNUM_ELAB).check();
|
||||||
set(F_TIPODOC_ELAB, tipo_fin);
|
set(F_TIPODOC_ELAB, tipo_fin);
|
||||||
@ -1464,6 +1812,7 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
field(F_STATODOC_ELAB).check();
|
field(F_STATODOC_ELAB).check();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
reset(-1);
|
reset(-1);
|
||||||
|
|
||||||
@ -1471,95 +1820,57 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
|||||||
brew.set_filter(filter);
|
brew.set_filter(filter);
|
||||||
|
|
||||||
_art_filter = get(F_CODART);
|
_art_filter = get(F_CODART);
|
||||||
|
|
||||||
|
TCursor* cursor = brew.cursor();
|
||||||
if (_art_filter.not_empty() && to_elab)
|
if (_art_filter.not_empty() && to_elab)
|
||||||
brew.cursor()->set_filterfunction(article_filter);
|
cursor->set_filterfunction(article_filter);
|
||||||
else
|
else
|
||||||
brew.cursor()->set_filterfunction(NULL);
|
cursor->set_filterfunction(NULL);
|
||||||
|
|
||||||
|
TTree_field& tf = tfield(F_ROWS);
|
||||||
|
if (tipo.not_empty())
|
||||||
|
{
|
||||||
|
tf.set_tree(&_tree);
|
||||||
|
if (_art_filter.not_empty() && to_elab)
|
||||||
|
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter, article_filter);
|
||||||
|
else
|
||||||
|
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tf.set_tree(NULL);
|
||||||
|
tf.win().force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TElabora_mask::tipo_elaborazione_handler( TMask_field& f, KEY key )
|
void TElabora_mask::docrif_search()
|
||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
|
||||||
{
|
|
||||||
TElabora_mask & m = (TElabora_mask &) f.mask();
|
|
||||||
m.update_list();
|
|
||||||
m.update_ndoc_filter(TRUE);
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TElabora_mask::tipo_documento_handler( TMask_field& f, KEY key )
|
|
||||||
{
|
|
||||||
if (key != K_ENTER && f.to_check(key, TRUE))
|
|
||||||
{
|
|
||||||
TElabora_mask & m = (TElabora_mask &) f.mask();
|
|
||||||
|
|
||||||
m.update_list();
|
|
||||||
m.update_ndoc_filter();
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TElabora_mask::codnum_handler( TMask_field& f, KEY key )
|
|
||||||
{
|
|
||||||
if (key != K_ENTER && f.to_check(key, TRUE))
|
|
||||||
{
|
|
||||||
TElabora_mask & m = (TElabora_mask &) f.mask();
|
|
||||||
|
|
||||||
m.update_ndoc_filter();
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TElabora_mask::codart_handler( TMask_field& f, KEY key )
|
|
||||||
{
|
|
||||||
if (key != K_ENTER && f.to_check(key, TRUE))
|
|
||||||
{
|
|
||||||
TElabora_mask & m = (TElabora_mask &) f.mask();
|
|
||||||
m.update_ndoc_filter();
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TElabora_mask::list_elab_handler( TMask_field& f, KEY key )
|
|
||||||
{
|
|
||||||
if (key == K_SPACE)
|
|
||||||
{
|
|
||||||
TElabora_mask & m = (TElabora_mask &) f.mask();
|
|
||||||
m.update_ndoc_filter(TRUE);
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TElabora_mask::docrif_handler( TMask_field& f, KEY key )
|
|
||||||
{
|
|
||||||
if (key == K_F9)
|
|
||||||
{
|
|
||||||
TElabora_mask& m = (TElabora_mask&)f.mask();
|
|
||||||
|
|
||||||
TRectype filtrec(LF_DOC);
|
TRectype filtrec(LF_DOC);
|
||||||
filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF_ELAB));
|
filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB));
|
||||||
filtrec.put(DOC_CODCF, m.get(F_CODCF_ELAB));
|
filtrec.put(DOC_CODCF, get(F_CODCF_ELAB));
|
||||||
filtrec.put(DOC_PROVV, m.get(F_PROVV_ELAB));
|
filtrec.put(DOC_PROVV, get(F_PROVV_ELAB));
|
||||||
filtrec.put(DOC_ANNO, m.get(F_ANNO_ELAB));
|
filtrec.put(DOC_ANNO, get(F_ANNO_ELAB));
|
||||||
|
|
||||||
TRelation rel(LF_DOC);
|
TRelation rel(LF_DOC);
|
||||||
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
||||||
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
|
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
|
||||||
TString80 flt;
|
TString flt(256);
|
||||||
if (!m.field(F_CODNUM_ELAB).empty())
|
if (!field(F_CODNUM_ELAB).empty())
|
||||||
flt << format("(CODNUM==\"%s\")&&", (const char*)m.get(F_CODNUM_ELAB));
|
flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&";
|
||||||
if (!m.field(F_TIPODOC_ELAB).empty())
|
if (!field(F_TIPODOC_ELAB).empty())
|
||||||
flt << format("(TIPODOC==\"%s\")&&", (const char*)m.get(F_TIPODOC_ELAB));
|
flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&";
|
||||||
flt << "(STATO==\"" << m.get(F_STATODOC_ELAB) << "\")";
|
if (!field(F_STATODOC_ELAB).empty())
|
||||||
|
flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&";
|
||||||
|
add_valuta_filter(flt); flt << "&&";
|
||||||
|
TEdit_field& f = efield(F_NUMDOCRIF_ELAB);
|
||||||
if (!f.empty())
|
if (!f.empty())
|
||||||
flt << "&&(NUMDOCRIF==\"" << f.get() << "\")";
|
flt << "(NUMDOCRIF==\"" << f.get() << "\")&&";
|
||||||
|
flt.rtrim(2); // Togli gli ultimi &&
|
||||||
|
|
||||||
cur.setfilter(flt);
|
cur.setfilter(flt);
|
||||||
TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
|
|
||||||
|
TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
|
||||||
TCursor_sheet sheet(&cur, fields,
|
TCursor_sheet sheet(&cur, fields,
|
||||||
"Documento di riferimento",
|
"Documento di riferimento",
|
||||||
"Anno|Num.|Tipo|Docum.Rif.|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50",
|
"Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50",
|
||||||
0, 1);
|
0, 1);
|
||||||
if (sheet.run() == K_ENTER)
|
if (sheet.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
@ -1568,29 +1879,18 @@ bool TElabora_mask::docrif_handler( TMask_field& f, KEY key )
|
|||||||
f.set(nrif);
|
f.set(nrif);
|
||||||
const int ndocpos = fields.get_pos("NDOC");
|
const int ndocpos = fields.get_pos("NDOC");
|
||||||
const TString16 ndoc = sheet.row(-1).get(ndocpos);
|
const TString16 ndoc = sheet.row(-1).get(ndocpos);
|
||||||
m.set(F_NDOC_ELAB, ndoc);
|
set(F_NDOC_ELAB, ndoc);
|
||||||
const int codnumpos = fields.get_pos("CODNUM");
|
const int codnumpos = fields.get_pos("CODNUM");
|
||||||
const TString16 codnum = sheet.row(-1).get(codnumpos);
|
const TString16 codnum = sheet.row(-1).get(codnumpos);
|
||||||
m.set(F_CODNUM_ELAB, codnum, TRUE);
|
set(F_CODNUM_ELAB, codnum, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
TElabora_mask::TElabora_mask(TDocumento_mask& main_mask)
|
||||||
}
|
: TAutomask("ve0100b"), _main(&main_mask)
|
||||||
|
|
||||||
TElabora_mask::TElabora_mask(TDocumento_mask * main_mask)
|
|
||||||
: TMask("ve0100b"), _main(main_mask)
|
|
||||||
{
|
{
|
||||||
_myself = this;
|
_myself = this;
|
||||||
|
|
||||||
set_handler(F_TYPE, tipo_elaborazione_handler);
|
|
||||||
set_handler(F_TIPODOC_ELAB, tipo_documento_handler);
|
|
||||||
set_handler(F_STATODOC_ELAB, tipo_documento_handler);
|
|
||||||
set_handler(F_CODNUM_ELAB, codnum_handler);
|
|
||||||
set_handler(F_CODART, codart_handler);
|
|
||||||
set_handler(F_ELAB, list_elab_handler);
|
|
||||||
set_handler(F_NUMDOCRIF, docrif_handler);
|
|
||||||
|
|
||||||
set(F_ANNO_ELAB, _main->get(F_ANNO));
|
set(F_ANNO_ELAB, _main->get(F_ANNO));
|
||||||
set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));
|
set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));
|
||||||
set(F_CODCF_ELAB, _main->get(F_CODCF));
|
set(F_CODCF_ELAB, _main->get(F_CODCF));
|
||||||
@ -1605,7 +1905,7 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
|||||||
m.update_progs();
|
m.update_progs();
|
||||||
if (m.check_fields()) // Check values
|
if (m.check_fields()) // Check values
|
||||||
{
|
{
|
||||||
TElabora_mask* selection = new TElabora_mask(&m); // No woman no stack
|
TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
|
||||||
bool update_mask = FALSE;
|
bool update_mask = FALSE;
|
||||||
const char stato_iniziale = m.doc().stato();
|
const char stato_iniziale = m.doc().stato();
|
||||||
|
|
||||||
@ -1645,6 +1945,10 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TDocumento_mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
bool TDocumento_mask::print_handler( TMask_field& f, KEY key )
|
bool TDocumento_mask::print_handler( TMask_field& f, KEY key )
|
||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
if (key == K_SPACE)
|
||||||
@ -1789,22 +2093,6 @@ bool TDocumento_mask::codcamp_handler( TMask_field& f, KEY key )
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
bool TDocumento_mask::controeuro_handler( TMask_field& f, KEY key )
|
|
||||||
{
|
|
||||||
TMask & m = f.mask();
|
|
||||||
|
|
||||||
if (m.is_running() && key == K_SPACE)
|
|
||||||
{
|
|
||||||
const real cambio_euro = TCurrency::get_euro_change();
|
|
||||||
const real val = cambio_euro / m.get_real(F_CAMBIO);
|
|
||||||
|
|
||||||
m.set(F_CAMBIO, val);
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
|
bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
|
||||||
{
|
{
|
||||||
if (key == K_TAB && f.focusdirty())
|
if (key == K_TAB && f.focusdirty())
|
||||||
|
@ -1206,3 +1206,18 @@ bool TDocumento_mask::datadocrif_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool link_handler( TMask_field& f, KEY key )
|
||||||
|
{
|
||||||
|
if (key == K_SPACE)
|
||||||
|
{
|
||||||
|
const TSheet_field & sf = *f.mask().get_sheet();
|
||||||
|
const TDocumento_mask & m = (const TDocumento_mask & )sf.mask();
|
||||||
|
const TDocumento & d = m.doc();
|
||||||
|
const int nrow = sf.selected() + 1;
|
||||||
|
const TRiga_documento & r = d[nrow];
|
||||||
|
r.edit(LF_DOC, "DAPROVV|DAANNO|DACODNUM|DANDOC");
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -24,5 +24,6 @@ bool qta_handler(TMask_field& f, KEY key);
|
|||||||
bool qta_evasa_handler(TMask_field& f, KEY key);
|
bool qta_evasa_handler(TMask_field& f, KEY key);
|
||||||
bool causmag_handler(TMask_field& f, KEY key);
|
bool causmag_handler(TMask_field& f, KEY key);
|
||||||
bool pricerange_handler(TMask_field& f, KEY key );
|
bool pricerange_handler(TMask_field& f, KEY key );
|
||||||
|
bool link_handler( TMask_field& f, KEY key );
|
||||||
|
|
||||||
bool numdocrif_hndl(TMask_field& field, KEY key);
|
bool numdocrif_hndl(TMask_field& field, KEY key);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user