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_FDR), config, "NF");
|
||||
config_loader(mask.sfield(F_RIGHE_RER), config, "RR");
|
||||
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_FDR), config, "NF");
|
||||
config_setter(mask.sfield(F_RIGHE_RER), config, "RR");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@
|
||||
|
||||
#define F_RIGHE_NUM 170
|
||||
#define F_RIGHE_FDR 171
|
||||
#define F_RIGHE_RER 172
|
||||
|
||||
//elementi dello sheet dei documenti da escludere dal rendiconto
|
||||
#define SN_CODNUM 101
|
||||
@ -61,3 +62,7 @@
|
||||
//elementi dello sheet dei documenti da considerare fatture da ricevere
|
||||
#define SF_CODNUM 101
|
||||
#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
|
||||
|
||||
PAGE "Regole" -1 -1 78 20
|
||||
PAGE "Regole rendiconto" -1 -1 78 20
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bNumerazioni documenti da escludere nel rendiconto"
|
||||
END
|
||||
|
||||
SPREADSHEET F_RIGHE_NUM -1 -12
|
||||
SPREADSHEET F_RIGHE_NUM -1 4
|
||||
BEGIN
|
||||
PROMPT 1 2 ""
|
||||
ITEM "Numerazione"
|
||||
@ -425,16 +425,26 @@ END
|
||||
|
||||
TEXT -1
|
||||
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
|
||||
|
||||
SPREADSHEET F_RIGHE_FDR -1 -1
|
||||
SPREADSHEET F_RIGHE_FDR -1 4
|
||||
BEGIN
|
||||
PROMPT 1 14 ""
|
||||
PROMPT 1 8 ""
|
||||
ITEM "Numerazione"
|
||||
ITEM "Descrizione@50"
|
||||
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
|
||||
|
||||
ENDPAGE
|
||||
@ -554,3 +564,48 @@ ENDPAGE
|
||||
|
||||
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 _reverse_cos_ric;
|
||||
TString _prefix;
|
||||
TAssoc_array _ratrisc;
|
||||
|
||||
protected:
|
||||
int _anno;
|
||||
@ -260,18 +261,37 @@ protected:
|
||||
int sort_indbil(int indbil) const;
|
||||
TString riclassifica(const int gruppo, const int conto, const long sottoconto, TRectype& tmpcurr);
|
||||
real get_budget(const TString& conto, char tipo) const;
|
||||
bool is_causale_rateo_risconto(const char* codcaus);
|
||||
|
||||
|
||||
public:
|
||||
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();
|
||||
};
|
||||
|
||||
|
||||
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()
|
||||
{ }
|
||||
|
||||
@ -523,6 +543,12 @@ static int bill2indbil(const TString& codconto, bool is_anal)
|
||||
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
|
||||
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"
|
||||
codnum_desc.cut(0);
|
||||
|
||||
//----- CONTI -----//
|
||||
TString codconto = rmovana.get(RMOVANA_CODCONTO);
|
||||
TString codcontocg;
|
||||
int indbil = 0;
|
||||
|
||||
// il conto puo' essere analitico o contabile...
|
||||
//se è compilato l'archivio di collegamento PANAPDC
|
||||
//si deve usare come conto il campo codconto del panapdc!!!...
|
||||
//Solo se si ha un conto contabile e' possibile riclassificare in analitico!!!
|
||||
//se è compilato l'archivio di collegamento PANAPDC..
|
||||
//..si deve usare come conto il campo codconto del panapdc!!!...
|
||||
//Ricordare ch SOLO se si ha un conto contabile e' possibile riclassificare in analitico!!!
|
||||
if (_riclassificato) //traduzione:sei il CRPA/CSA
|
||||
{
|
||||
//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!
|
||||
const int ordcont = sort_indbil(indbil);
|
||||
tmpcurr.put("ORDCONT", ordcont);
|
||||
//---- FINE CONTI ----//
|
||||
|
||||
|
||||
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
||||
//tipo movimento CONSUNTIVO (o TEMPORANEO)
|
||||
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
||||
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("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!
|
||||
int selettore = 0;
|
||||
if (newdoc != NULL)
|
||||
{
|
||||
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)
|
||||
|
||||
//---- FINE DOC ORIG DELL'ANALMOV ----//
|
||||
/*[Tipo documento] //schema divino per destinare gli importi nei campi corretti
|
||||
O=I**
|
||||
B=IM*
|
||||
BO=*M*
|
||||
FB=**F
|
||||
FO=*MF
|
||||
F=IMF*/
|
||||
F=IMF*/
|
||||
//---- IMPEGANTO,MATURATO O FATTURATO? QUESTO E' IL PROBLEMA.. ----//
|
||||
switch (tipo_documento)
|
||||
{
|
||||
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)
|
||||
else //movimenti puri di analitica (no documento di origine!)
|
||||
{
|
||||
selettore = FATTURATO;
|
||||
selettore |= MATURATO;
|
||||
selettore |= IMPEGNATO;
|
||||
if (is_causale_rateo_risconto(caus.codice())) //movimenti con causali "rateo/risconto"
|
||||
{
|
||||
selettore = MATURATO;
|
||||
inverti_sezione = true;
|
||||
}
|
||||
else //movimenti con causali "normali"
|
||||
{
|
||||
selettore = FATTURATO;
|
||||
selettore |= MATURATO;
|
||||
selettore |= IMPEGNATO;
|
||||
}
|
||||
} //if(newdoc != NULL)
|
||||
|
||||
//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));
|
||||
const int anno_caus = movana.get_date(MOVANA_DATAREG).year();
|
||||
|
||||
TCausale caus(movana.get(MOVANA_CODCAUS), anno_caus);
|
||||
TipoIVA tipoiva = caus.iva();
|
||||
TipoIVA tipoiva = caus.iva(); //tipo iva legato alla causale (codcaus e' letto ad inizio procedura)
|
||||
char sezione_normale;
|
||||
|
||||
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
|
||||
tmpcurr.put("FATTURATO", imp.valore());
|
||||
}
|
||||
else
|
||||
else //if(codcaus.full()
|
||||
{
|
||||
//i documenti speciali vanno SOLO in FATTURATO
|
||||
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
|
||||
//..alle fatture da ricevere che devono essere trattate in modo particolare
|
||||
TConfig& config = ca_config();
|
||||
|
||||
//TString_array contenente le numerazioni delle fatture da ricevere
|
||||
TString_array num_fdr;
|
||||
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())
|
||||
break;
|
||||
num_fdr.add(codfdr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user