Patch level :4.0 506
Files correlati :ca0.exe ca3.exe ca0300.msk Ricompilazione Demo : [ ] Commento :aggiunto trattamento causali rateo/risconto in configurazione e stampa rendiconto; richiesta di Eva Braun del CRPA git-svn-id: svn://10.65.10.50/trunk@14372 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
10db434c95
commit
058332cd99
@ -153,6 +153,7 @@ bool TConf_Analitica::preprocess_config (TMask& mask, TConfig& config)
|
|||||||
{
|
{
|
||||||
config_loader(mask.sfield(F_RIGHE_NUM), config, "ND");
|
config_loader(mask.sfield(F_RIGHE_NUM), config, "ND");
|
||||||
config_loader(mask.sfield(F_RIGHE_FDR), config, "NF");
|
config_loader(mask.sfield(F_RIGHE_FDR), config, "NF");
|
||||||
|
config_loader(mask.sfield(F_RIGHE_RER), config, "RR");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +161,7 @@ bool TConf_Analitica::postprocess_config (TMask& mask, TConfig& config)
|
|||||||
{
|
{
|
||||||
config_setter(mask.sfield(F_RIGHE_NUM), config, "ND");
|
config_setter(mask.sfield(F_RIGHE_NUM), config, "ND");
|
||||||
config_setter(mask.sfield(F_RIGHE_FDR), config, "NF");
|
config_setter(mask.sfield(F_RIGHE_FDR), config, "NF");
|
||||||
|
config_setter(mask.sfield(F_RIGHE_RER), config, "RR");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@
|
|||||||
|
|
||||||
#define F_RIGHE_NUM 170
|
#define F_RIGHE_NUM 170
|
||||||
#define F_RIGHE_FDR 171
|
#define F_RIGHE_FDR 171
|
||||||
|
#define F_RIGHE_RER 172
|
||||||
|
|
||||||
//elementi dello sheet dei documenti da escludere dal rendiconto
|
//elementi dello sheet dei documenti da escludere dal rendiconto
|
||||||
#define SN_CODNUM 101
|
#define SN_CODNUM 101
|
||||||
@ -61,3 +62,7 @@
|
|||||||
//elementi dello sheet dei documenti da considerare fatture da ricevere
|
//elementi dello sheet dei documenti da considerare fatture da ricevere
|
||||||
#define SF_CODNUM 101
|
#define SF_CODNUM 101
|
||||||
#define SF_DESCR 102
|
#define SF_DESCR 102
|
||||||
|
|
||||||
|
//elementi dello sheet delle causali per ratei e risconti
|
||||||
|
#define SR_CODNUM 101
|
||||||
|
#define SR_DESCR 102
|
@ -406,14 +406,14 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Regole" -1 -1 78 20
|
PAGE "Regole rendiconto" -1 -1 78 20
|
||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "@bNumerazioni documenti da escludere nel rendiconto"
|
PROMPT 1 1 "@bNumerazioni documenti da escludere nel rendiconto"
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_RIGHE_NUM -1 -12
|
SPREADSHEET F_RIGHE_NUM -1 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 ""
|
PROMPT 1 2 ""
|
||||||
ITEM "Numerazione"
|
ITEM "Numerazione"
|
||||||
@ -425,16 +425,26 @@ END
|
|||||||
|
|
||||||
TEXT -1
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 13 "@bNumerazioni documenti per le fatture da ricevere nel rendiconto"
|
PROMPT 1 7 "@bNumerazioni documenti per le fatture da ricevere nel rendiconto"
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_RIGHE_FDR -1 -1
|
SPREADSHEET F_RIGHE_FDR -1 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 14 ""
|
PROMPT 1 8 ""
|
||||||
ITEM "Numerazione"
|
ITEM "Numerazione"
|
||||||
ITEM "Descrizione@50"
|
ITEM "Descrizione@50"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
TEXT -1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 13 "@bCausali per ratei e risconti"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_RIGHE_RER -1 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 14 ""
|
||||||
|
ITEM "Causale"
|
||||||
|
ITEM "Descrizione@50"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -554,3 +564,48 @@ ENDPAGE
|
|||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "Riga causali per ratei e risconti" -1 -1 78 8
|
||||||
|
|
||||||
|
STRING SR_CODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Codice numerazione "
|
||||||
|
USE LF_CAUSALI SELECT MOVIND!=''
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
INPUT CODCAUS SR_CODNUM
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT SR_CODNUM CODCAUS
|
||||||
|
OUTPUT SR_DESCR DESCR
|
||||||
|
FLAGS "UZ"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING SR_DESCR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Descrizione "
|
||||||
|
USE LF_CAUSALI
|
||||||
|
KEY 2
|
||||||
|
SELECT MOVIND!=''
|
||||||
|
INPUT DESCR SR_DESCR
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT SR_CODNUM
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
@ -236,6 +236,7 @@ class TPrint_rendiconto_ca_recordset : public TISAM_recordset
|
|||||||
bool _riclassificato;
|
bool _riclassificato;
|
||||||
bool _reverse_cos_ric;
|
bool _reverse_cos_ric;
|
||||||
TString _prefix;
|
TString _prefix;
|
||||||
|
TAssoc_array _ratrisc;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int _anno;
|
int _anno;
|
||||||
@ -260,18 +261,37 @@ protected:
|
|||||||
int sort_indbil(int indbil) const;
|
int sort_indbil(int indbil) const;
|
||||||
TString riclassifica(const int gruppo, const int conto, const long sottoconto, TRectype& tmpcurr);
|
TString riclassifica(const int gruppo, const int conto, const long sottoconto, TRectype& tmpcurr);
|
||||||
real get_budget(const TString& conto, char tipo) const;
|
real get_budget(const TString& conto, char tipo) const;
|
||||||
|
bool is_causale_rateo_risconto(const char* codcaus);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void set_filter(const TPrint_rendiconto_ca_mask& msk, int cms_row);
|
virtual void set_filter(const TPrint_rendiconto_ca_mask& msk, int cms_row);
|
||||||
|
|
||||||
TPrint_rendiconto_ca_recordset(const TString& sql) : TISAM_recordset(sql), _riclassificato(false) { _tmp = NULL;}
|
TPrint_rendiconto_ca_recordset(const TString& sql);
|
||||||
~TPrint_rendiconto_ca_recordset();
|
~TPrint_rendiconto_ca_recordset();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static TPrint_rendiconto_ca_recordset* myself = NULL;
|
static TPrint_rendiconto_ca_recordset* myself = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
TPrint_rendiconto_ca_recordset::TPrint_rendiconto_ca_recordset(const TString& sql)
|
||||||
|
: TISAM_recordset(sql), _riclassificato(false), _tmp(NULL)
|
||||||
|
{
|
||||||
|
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono causali di tipo..
|
||||||
|
//..rateo/risconto che devono essere calcolate come solo maturato (Eva Braun request)
|
||||||
|
TConfig& config = ca_config();
|
||||||
|
//riempie l'assoc_array contenente i codici causale rateo/risconto
|
||||||
|
for (int j = 0;;j++)
|
||||||
|
{
|
||||||
|
const TString& codcaus = config.get("RR", NULL, j); //scansione delle righe RR(i)=.. sul paragrafo di configurazione CA
|
||||||
|
if (codcaus.blank())
|
||||||
|
break;
|
||||||
|
_ratrisc.add(codcaus, codcaus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TPrint_rendiconto_ca_recordset::~TPrint_rendiconto_ca_recordset()
|
TPrint_rendiconto_ca_recordset::~TPrint_rendiconto_ca_recordset()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -523,6 +543,12 @@ static int bill2indbil(const TString& codconto, bool is_anal)
|
|||||||
return indbil;
|
return indbil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//controlla se la causale passata e' di tipo rateo/risconto
|
||||||
|
bool TPrint_rendiconto_ca_recordset::is_causale_rateo_risconto(const char* codcaus)
|
||||||
|
{
|
||||||
|
return _ratrisc.objptr(codcaus) != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
//compila i campi del file temporaneo che sara' poi stampato
|
//compila i campi del file temporaneo che sara' poi stampato
|
||||||
void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const TRectype& movana, const TDocumento* doc)
|
void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const TRectype& movana, const TDocumento* doc)
|
||||||
{
|
{
|
||||||
@ -532,14 +558,15 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
|||||||
TString8 codnum_desc; //codnum da usare sia per compilare il campo "CODNUM"
|
TString8 codnum_desc; //codnum da usare sia per compilare il campo "CODNUM"
|
||||||
codnum_desc.cut(0);
|
codnum_desc.cut(0);
|
||||||
|
|
||||||
|
//----- CONTI -----//
|
||||||
TString codconto = rmovana.get(RMOVANA_CODCONTO);
|
TString codconto = rmovana.get(RMOVANA_CODCONTO);
|
||||||
TString codcontocg;
|
TString codcontocg;
|
||||||
int indbil = 0;
|
int indbil = 0;
|
||||||
|
|
||||||
// il conto puo' essere analitico o contabile...
|
// il conto puo' essere analitico o contabile...
|
||||||
//se è compilato l'archivio di collegamento PANAPDC
|
//se è compilato l'archivio di collegamento PANAPDC..
|
||||||
//si deve usare come conto il campo codconto del panapdc!!!...
|
//..si deve usare come conto il campo codconto del panapdc!!!...
|
||||||
//Solo se si ha un conto contabile e' possibile riclassificare in analitico!!!
|
//Ricordare ch SOLO se si ha un conto contabile e' possibile riclassificare in analitico!!!
|
||||||
if (_riclassificato) //traduzione:sei il CRPA/CSA
|
if (_riclassificato) //traduzione:sei il CRPA/CSA
|
||||||
{
|
{
|
||||||
//prende il gr/co/so dalla riga rmovana in esame
|
//prende il gr/co/so dalla riga rmovana in esame
|
||||||
@ -578,8 +605,9 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
|||||||
//..di appoggio;se sei del CRPA/CSA vuoi i costi dopo i ricavi!
|
//..di appoggio;se sei del CRPA/CSA vuoi i costi dopo i ricavi!
|
||||||
const int ordcont = sort_indbil(indbil);
|
const int ordcont = sort_indbil(indbil);
|
||||||
tmpcurr.put("ORDCONT", ordcont);
|
tmpcurr.put("ORDCONT", ordcont);
|
||||||
|
//---- FINE CONTI ----//
|
||||||
|
|
||||||
|
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
||||||
//tipo movimento CONSUNTIVO (o TEMPORANEO)
|
//tipo movimento CONSUNTIVO (o TEMPORANEO)
|
||||||
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
||||||
if (tipomov <= ' ' || tipomov == 'T')
|
if (tipomov <= ' ' || tipomov == 'T')
|
||||||
@ -611,9 +639,13 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
|||||||
tmpcurr.put("NUMRD", movana.get(MOVANA_NUMREGCG)); //numregcg del movana
|
tmpcurr.put("NUMRD", movana.get(MOVANA_NUMREGCG)); //numregcg del movana
|
||||||
tmpcurr.put("DATA", movana.get(MOVANA_DATACOMP)); //data del movana
|
tmpcurr.put("DATA", movana.get(MOVANA_DATACOMP)); //data del movana
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int selettore = 0;
|
||||||
|
bool inverti_sezione = false; //inversore D/A per causali rateo/risconto
|
||||||
|
const int anno_caus = movana.get_date(MOVANA_DATAREG).year();
|
||||||
|
const TCausale caus(movana.get(MOVANA_CODCAUS), anno_caus); //la causale serve un po' ovunque...
|
||||||
|
|
||||||
//ricerca del mitico documento padre della riga documento attuale!
|
//ricerca del mitico documento padre della riga documento attuale!
|
||||||
int selettore = 0;
|
|
||||||
if (newdoc != NULL)
|
if (newdoc != NULL)
|
||||||
{
|
{
|
||||||
tmpcurr.put("NUMDOCRIF", newdoc->get(DOC_NUMDOCRIF)); //docrif del documento originante il movana
|
tmpcurr.put("NUMDOCRIF", newdoc->get(DOC_NUMDOCRIF)); //docrif del documento originante il movana
|
||||||
@ -664,13 +696,15 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
|||||||
|
|
||||||
tmpcurr.put("DOCORIG", riferimento); //documento di riferimento (mitologico documento originale)
|
tmpcurr.put("DOCORIG", riferimento); //documento di riferimento (mitologico documento originale)
|
||||||
|
|
||||||
|
//---- FINE DOC ORIG DELL'ANALMOV ----//
|
||||||
/*[Tipo documento] //schema divino per destinare gli importi nei campi corretti
|
/*[Tipo documento] //schema divino per destinare gli importi nei campi corretti
|
||||||
O=I**
|
O=I**
|
||||||
B=IM*
|
B=IM*
|
||||||
BO=*M*
|
BO=*M*
|
||||||
FB=**F
|
FB=**F
|
||||||
FO=*MF
|
FO=*MF
|
||||||
F=IMF*/
|
F=IMF*/
|
||||||
|
//---- IMPEGANTO,MATURATO O FATTURATO? QUESTO E' IL PROBLEMA.. ----//
|
||||||
switch (tipo_documento)
|
switch (tipo_documento)
|
||||||
{
|
{
|
||||||
case TTipo_documento::_bolla: //bolla B -> IM a meno che non sia bolla da ordine BO -> M
|
case TTipo_documento::_bolla: //bolla B -> IM a meno che non sia bolla da ordine BO -> M
|
||||||
@ -704,19 +738,27 @@ F=IMF*/
|
|||||||
} //if(newdoc != NULL)
|
} //if(newdoc != NULL)
|
||||||
else //movimenti puri di analitica (no documento di origine!)
|
else //movimenti puri di analitica (no documento di origine!)
|
||||||
{
|
{
|
||||||
selettore = FATTURATO;
|
if (is_causale_rateo_risconto(caus.codice())) //movimenti con causali "rateo/risconto"
|
||||||
selettore |= MATURATO;
|
{
|
||||||
selettore |= IMPEGNATO;
|
selettore = MATURATO;
|
||||||
|
inverti_sezione = true;
|
||||||
|
}
|
||||||
|
else //movimenti con causali "normali"
|
||||||
|
{
|
||||||
|
selettore = FATTURATO;
|
||||||
|
selettore |= MATURATO;
|
||||||
|
selettore |= IMPEGNATO;
|
||||||
|
}
|
||||||
} //if(newdoc != NULL)
|
} //if(newdoc != NULL)
|
||||||
|
|
||||||
//riempie i record del file temporaneo nel caso di rmovana con documento di origine
|
//riempie i record del file temporaneo nel caso di rmovana con documento di origine
|
||||||
const char sezione = rmovana.get_char(RMOVANA_SEZIONE);
|
char sezione = rmovana.get_char(RMOVANA_SEZIONE);
|
||||||
|
if (inverti_sezione)
|
||||||
|
sezione = sezione == 'D' ? 'A' : 'D';
|
||||||
|
|
||||||
TImporto imp(sezione, rmovana.get_real(RMOVANA_IMPORTO));
|
TImporto imp(sezione, rmovana.get_real(RMOVANA_IMPORTO));
|
||||||
const int anno_caus = movana.get_date(MOVANA_DATAREG).year();
|
|
||||||
|
|
||||||
TCausale caus(movana.get(MOVANA_CODCAUS), anno_caus);
|
TipoIVA tipoiva = caus.iva(); //tipo iva legato alla causale (codcaus e' letto ad inizio procedura)
|
||||||
TipoIVA tipoiva = caus.iva();
|
|
||||||
char sezione_normale;
|
char sezione_normale;
|
||||||
|
|
||||||
if (tipoiva == iva_vendite)
|
if (tipoiva == iva_vendite)
|
||||||
@ -903,7 +945,7 @@ void TPrint_rendiconto_ca_recordset::scrive_riga_speciale(const TDocumento* doc,
|
|||||||
//i documenti speciali vanno SOLO in FATTURATO
|
//i documenti speciali vanno SOLO in FATTURATO
|
||||||
tmpcurr.put("FATTURATO", imp.valore());
|
tmpcurr.put("FATTURATO", imp.valore());
|
||||||
}
|
}
|
||||||
else
|
else //if(codcaus.full()
|
||||||
{
|
{
|
||||||
//i documenti speciali vanno SOLO in FATTURATO
|
//i documenti speciali vanno SOLO in FATTURATO
|
||||||
tmpcurr.put("FATTURATO", importo);
|
tmpcurr.put("FATTURATO", importo);
|
||||||
@ -1030,12 +1072,11 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(const TPrint_rendiconto_
|
|||||||
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni relative
|
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni relative
|
||||||
//..alle fatture da ricevere che devono essere trattate in modo particolare
|
//..alle fatture da ricevere che devono essere trattate in modo particolare
|
||||||
TConfig& config = ca_config();
|
TConfig& config = ca_config();
|
||||||
|
|
||||||
//TString_array contenente le numerazioni delle fatture da ricevere
|
//TString_array contenente le numerazioni delle fatture da ricevere
|
||||||
TString_array num_fdr;
|
TString_array num_fdr;
|
||||||
for (int j = 0;;j++)
|
for (int j = 0;;j++)
|
||||||
{
|
{
|
||||||
TString codfdr(config.get("NF", NULL, j)); //scansione delle righe NF(i)=.. sul paragrafo di configurazione CA
|
const TString& codfdr = config.get("NF", NULL, j); //scansione delle righe NF(i)=.. sul paragrafo di configurazione CA
|
||||||
if (codfdr.blank())
|
if (codfdr.blank())
|
||||||
break;
|
break;
|
||||||
num_fdr.add(codfdr);
|
num_fdr.add(codfdr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user