Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@16747 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3ba205c2bd
commit
66a1950abb
499
ca/ca3700.cpp
499
ca/ca3700.cpp
@ -568,7 +568,8 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
||||
{
|
||||
#ifdef DBG
|
||||
//cazzone
|
||||
if (rmovana.get_long(RMOVANA_NUMREG) == 7968)
|
||||
const long cazzo_numreg = rmovana.get_long(RMOVANA_NUMREG);
|
||||
if (cazzo_numreg == 6481 || cazzo_numreg == 7654)
|
||||
int cazzone = 1;
|
||||
#endif
|
||||
|
||||
@ -625,147 +626,146 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
||||
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
||||
//tipo movimento CONSUNTIVO (o TEMPORANEO); per i movimenti di budget (P o V) vedi l'else
|
||||
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
||||
if (tipomov <= ' ' || tipomov == 'T')
|
||||
|
||||
//serve un documento da cui ricavare i parametri di stampa
|
||||
TDocumento* newdoc = (TDocumento*)doc;
|
||||
bool should_delete = false;
|
||||
if (newdoc == NULL && movana.get_long(MOVANA_DNDOC) > 0)
|
||||
{
|
||||
//serve un documento da cui ricavare i parametri di stampa
|
||||
TDocumento* newdoc = (TDocumento*)doc;
|
||||
bool should_delete = false;
|
||||
if (newdoc == NULL && movana.get_long(MOVANA_DNDOC) > 0)
|
||||
const TString4 dacodnum = movana.get(MOVANA_DCODNUM);
|
||||
newdoc = new TDocumento('D', movana.get_int(MOVANA_DANNO), dacodnum, movana.get_long(MOVANA_DNDOC));
|
||||
should_delete = true; //settato true per cancellare il doc al termine del metodo(sennò addio memoria!)
|
||||
}
|
||||
|
||||
const bool dadoc = newdoc != NULL;
|
||||
//i movimenti possono essere normali o generati da documento...
|
||||
if (dadoc) //movimento generato da documento
|
||||
{
|
||||
codnum_desc = movana.get(MOVANA_DCODNUM); //serve anche in fondo al metodo
|
||||
tmpcurr.put("CODNUM", codnum_desc); //codnum del documento che origina il movana
|
||||
tmpcurr.put("ANNO", movana.get(MOVANA_DANNO)); //anno del doc di origine
|
||||
tmpcurr.put("NUMRD", movana.get(MOVANA_DNDOC)); //numero del doc che origina movana
|
||||
tmpcurr.put("DATA", newdoc->get(DOC_DATADOC)); //data del documento che genera movana..
|
||||
} //..non esiste il campo in movana
|
||||
else //movimento normale (senza documento)
|
||||
{
|
||||
tmpcurr.put("CODNUM", movana.get(MOVANA_CODCAUS)); //mette la causale del movimento
|
||||
tmpcurr.put("ANNO", movana.get(MOVANA_ANNOES)); //anno del movimento
|
||||
tmpcurr.put("NUMRD", movana.get(MOVANA_NUMREGCG)); //numregcg del movana
|
||||
tmpcurr.put("DATA", movana.get(MOVANA_DATACOMP)); //data del movana
|
||||
}
|
||||
|
||||
int selettore = 0;
|
||||
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!
|
||||
if (newdoc != NULL)
|
||||
{
|
||||
tmpcurr.put("NUMDOCRIF", newdoc->get(DOC_NUMDOCRIF)); //docrif del documento originante il movana
|
||||
tmpcurr.put("DATADOCRIF", newdoc->get(DOC_DATADOCRIF)); //datadocrif del documento originante il movana
|
||||
|
||||
//procedura per ottenere i campi del documento
|
||||
//deve tener conto del vero tipo del documento,nel caso sia classificato come _altro;in questo
|
||||
//..caso si deve accorgere se e' in realta' una bolla o una fattura (utilizza la tipo_riclassificato())
|
||||
const int tipo_documento = newdoc->tipo_riclassificato();
|
||||
int tipo_babbo = TTipo_documento::_altro;
|
||||
|
||||
TToken_string riferimento(20, '\n'); //tokenstring su cui scrivere gli estremi dei docs padri (se li trova!)
|
||||
TString80 rif; //stringa di lavoro su cui viene scritto un doc originale
|
||||
const int rows = newdoc->physical_rows(); //righe del doc attuale
|
||||
|
||||
for (int i = 1; i <= rows; i++) //scandisce tutte le righe del doc..
|
||||
{
|
||||
const TString4 dacodnum = movana.get(MOVANA_DCODNUM);
|
||||
newdoc = new TDocumento('D', movana.get_int(MOVANA_DANNO), dacodnum, movana.get_long(MOVANA_DNDOC));
|
||||
should_delete = true; //settato true per cancellare il doc al termine del metodo(sennò addio memoria!)
|
||||
}
|
||||
const TRiga_documento& riga = (*newdoc)[i];
|
||||
//commessa e fase della riga documento
|
||||
const TString codcms_rigadoc = riga.codice_commessa();
|
||||
const TString codfase_rigadoc = riga.fase_commessa();
|
||||
const TString codcdc_rigadoc = riga.codice_costo();
|
||||
//per evitare di scrivere per ogni riga documento tutte le righe del doc babbo (in pratica..
|
||||
//..per evitare di avere n righe ordine ogni riga fattura) confronta commessa e fase e cdc..
|
||||
//..della riga movimento analitico con quelli la riga movimento e procede solo nel..
|
||||
//..caso coincidano (richiesta Adolfica! heil Magnavakken!)
|
||||
|
||||
const bool dadoc = newdoc != NULL;
|
||||
//i movimenti possono essere normali o generati da documento...
|
||||
if (dadoc) //movimento generato da documento
|
||||
{
|
||||
codnum_desc = movana.get(MOVANA_DCODNUM); //serve anche in fondo al metodo
|
||||
tmpcurr.put("CODNUM", codnum_desc); //codnum del documento che origina il movana
|
||||
tmpcurr.put("ANNO", movana.get(MOVANA_DANNO)); //anno del doc di origine
|
||||
tmpcurr.put("NUMRD", movana.get(MOVANA_DNDOC)); //numero del doc che origina movana
|
||||
tmpcurr.put("DATA", newdoc->get(DOC_DATADOC)); //data del documento che genera movana..
|
||||
} //..non esiste il campo in movana
|
||||
else //movimento normale (senza documento)
|
||||
{
|
||||
tmpcurr.put("CODNUM", movana.get(MOVANA_CODCAUS)); //mette la causale del movimento
|
||||
tmpcurr.put("ANNO", movana.get(MOVANA_ANNOES)); //anno del movimento
|
||||
tmpcurr.put("NUMRD", movana.get(MOVANA_NUMREGCG)); //numregcg del movana
|
||||
tmpcurr.put("DATA", movana.get(MOVANA_DATACOMP)); //data del movana
|
||||
}
|
||||
|
||||
int selettore = 0;
|
||||
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...
|
||||
//Altra richiesta Adolfica: nel caso di ripartizioni, per non perdere la connessione tra..
|
||||
//..commessa/fase/cdc originale della riga analitica non ripartita e cms/fase/cdc della riga doc,..
|
||||
//..e' necessario controllare l'esistenza dei campi ori che segnalano una ripartizione avvenuta.
|
||||
//Se i campi ori sono compilati vanno usati!!! In caso contrario verrebbe perso il legame tra riga anal..
|
||||
//..e riga doc e doc_babbo, perdendo la giusta configurazione del SELETTORE
|
||||
|
||||
//ricerca del mitico documento padre della riga documento attuale!
|
||||
if (newdoc != NULL)
|
||||
{
|
||||
tmpcurr.put("NUMDOCRIF", newdoc->get(DOC_NUMDOCRIF)); //docrif del documento originante il movana
|
||||
tmpcurr.put("DATADOCRIF", newdoc->get(DOC_DATADOCRIF)); //datadocrif del documento originante il movana
|
||||
TString codcms_rmovana = rmovana.get(RMOVANA_CODCMSORI);
|
||||
if (!codcms_rmovana.full())
|
||||
codcms_rmovana = rmovana.get(RMOVANA_CODCMS);
|
||||
TString codfase_rmovana = rmovana.get(RMOVANA_CODFASEORI);
|
||||
if (!codfase_rmovana.full())
|
||||
codfase_rmovana = rmovana.get(RMOVANA_CODFASE);
|
||||
TString codcdc_rmovana = rmovana.get(RMOVANA_CODCCORI);
|
||||
if (!codcdc_rmovana.full())
|
||||
codcdc_rmovana = rmovana.get(RMOVANA_CODCCOSTO);
|
||||
|
||||
//procedura per ottenere i campi del documento
|
||||
//deve tener conto del vero tipo del documento,nel caso sia classificato come _altro;in questo
|
||||
//..caso si deve accorgere se e' in realta' una bolla o una fattura (utilizza la tipo_riclassificato())
|
||||
const int tipo_documento = newdoc->tipo_riclassificato();
|
||||
int tipo_babbo = TTipo_documento::_altro;
|
||||
|
||||
TToken_string riferimento(20, '\n'); //tokenstring su cui scrivere gli estremi dei docs padri (se li trova!)
|
||||
TString80 rif; //stringa di lavoro su cui viene scritto un doc originale
|
||||
const int rows = newdoc->physical_rows(); //righe del doc attuale
|
||||
|
||||
for (int i = 1; i <= rows; i++) //scandisce tutte le righe del doc..
|
||||
if (codcms_rigadoc == codcms_rmovana && codfase_rigadoc == codfase_rmovana && codcdc_rigadoc == codcdc_rmovana)
|
||||
{
|
||||
const TRiga_documento& riga = (*newdoc)[i];
|
||||
//commessa e fase della riga documento
|
||||
const TString& codcms_rigadoc = riga.codice_commessa();
|
||||
const TString& codfase_rigadoc = riga.fase_commessa();
|
||||
const TString& codcdc_rigadoc = riga.codice_costo();
|
||||
//per evitare di scrivere per ogni riga documento tutte le righe del doc babbo (in pratica..
|
||||
//..per evitare di avere n righe ordine ogni riga fattura) confronta commessa e fase e cdc..
|
||||
//..della riga movimento analitico con quelli la riga movimento e procede solo nel..
|
||||
//..caso coincidano (richiesta Adolfica! heil Magnavakken!)
|
||||
|
||||
//Altra richiesta Adolfica: nel caso di ripartizioni, per non perdere la connessione tra..
|
||||
//..commessa/fase/cdc originale della riga analitica non ripartita e cms/fase/cdc della riga doc,..
|
||||
//..e' necessario controllare l'esistenza dei campi ori che segnalano una ripartizione avvenuta.
|
||||
//Se i campi ori sono compilati vanno usati!!! In caso contrario verrebbe perso il legame tra riga anal..
|
||||
//..e riga doc e doc_babbo, perdendo la giusta configurazione del SELETTORE
|
||||
|
||||
TString codcms_rmovana = rmovana.get(RMOVANA_CODCMSORI);
|
||||
if (!codcms_rmovana.full())
|
||||
codcms_rmovana = rmovana.get(RMOVANA_CODCMS);
|
||||
TString codfase_rmovana = rmovana.get(RMOVANA_CODFASEORI);
|
||||
if (!codfase_rmovana.full())
|
||||
codfase_rmovana = rmovana.get(RMOVANA_CODFASE);
|
||||
TString codcdc_rmovana = rmovana.get(RMOVANA_CODCCORI);
|
||||
if (!codcdc_rmovana.full())
|
||||
codcdc_rmovana = rmovana.get(RMOVANA_CODCCOSTO);
|
||||
|
||||
if (codcms_rigadoc == codcms_rmovana && codfase_rigadoc == codfase_rmovana && codcdc_rigadoc == codcdc_rmovana)
|
||||
const TRectype* babbo = riga.find_original_rdoc(); //cerca il doc padre della riga doc attuale
|
||||
if (babbo != NULL) //se trova il doc padre..
|
||||
{
|
||||
const TRectype* babbo = riga.find_original_rdoc(); //cerca il doc padre della riga doc attuale
|
||||
if (babbo != NULL) //se trova il doc padre..
|
||||
{
|
||||
const TString4 babbo_codnum = babbo->get(RDOC_CODNUM);
|
||||
const int anno = babbo->get_int(RDOC_ANNO);
|
||||
const long ndoc = babbo->get_long(RDOC_NDOC);
|
||||
rif.cut(0) << babbo_codnum << '-' << anno << '-' << ndoc;
|
||||
const TString4 babbo_codnum = babbo->get(RDOC_CODNUM);
|
||||
const int anno = babbo->get_int(RDOC_ANNO);
|
||||
const long ndoc = babbo->get_long(RDOC_NDOC);
|
||||
rif.cut(0) << babbo_codnum << '-' << anno << '-' << ndoc;
|
||||
|
||||
//caso particolare dei conti del CRPA. Se il conto non e' riclassificato (ma siamo in presenza..
|
||||
//.di un piano dei conti riclassificato)...
|
||||
if (conto_non_riclass)
|
||||
//caso particolare dei conti del CRPA. Se il conto non e' riclassificato (ma siamo in presenza..
|
||||
//.di un piano dei conti riclassificato)...
|
||||
if (conto_non_riclass)
|
||||
{
|
||||
//Controlla se il documento di origine (padre del documento da cui deriva l'attuale riga..
|
||||
//..di analitica) era una FDR/FDE...
|
||||
const TCodice_numerazione& kodice_num = TDocumento::codice_numerazione(babbo_codnum);
|
||||
//Se lo era...
|
||||
if (kodice_num.fattura_emettere_ricevere())
|
||||
{
|
||||
//Controlla se il documento di origine (padre del documento da cui deriva l'attuale riga..
|
||||
//..di analitica) era una FDR/FDE...
|
||||
const TCodice_numerazione& kodice_num = TDocumento::codice_numerazione(babbo_codnum);
|
||||
//Se lo era...
|
||||
if (kodice_num.fattura_emettere_ricevere())
|
||||
//Ricrea il documento origine
|
||||
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc);
|
||||
//elaborazione analitica del documento originale
|
||||
TContabilizzazione_analitica cont_anal;
|
||||
TAnal_mov mov_babbo;
|
||||
//se riesce a contabilizzare il documento origine (si spera, senno' so' cazzi!)..
|
||||
cont_anal.elabora(doc_babbo, 0, NULL, false, mov_babbo);
|
||||
if (mov_babbo.rows() > 0)
|
||||
{
|
||||
//Ricrea il documento origine
|
||||
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc);
|
||||
//elaborazione analitica del documento originale
|
||||
TContabilizzazione_analitica cont_anal;
|
||||
TAnal_mov mov_babbo;
|
||||
//se riesce a contabilizzare il documento origine (si spera, senno' so' cazzi!)..
|
||||
cont_anal.elabora(doc_babbo, 0, NULL, false, mov_babbo);
|
||||
if (mov_babbo.rows() > 0)
|
||||
const int anal_rows = mov_babbo.rows();
|
||||
for (int k = 1; k <= anal_rows; k++)
|
||||
{
|
||||
const int anal_rows = mov_babbo.rows();
|
||||
for (int k = 1; k <= anal_rows; k++)
|
||||
//cerca la riga con il conto che gli serve e lo assegna a codconto, attualmente vuoto..
|
||||
//..in quanto non e' stato riclassificato
|
||||
const TRectype& mov_babbo_riga = mov_babbo.body()[k];
|
||||
const TString& conto_babbo = mov_babbo_riga.get(RMOVANA_CODCONTO);
|
||||
if (conto_babbo != codcontocg)
|
||||
{
|
||||
//cerca la riga con il conto che gli serve e lo assegna a codconto, attualmente vuoto..
|
||||
//..in quanto non e' stato riclassificato
|
||||
const TRectype& mov_babbo_riga = mov_babbo.body()[k];
|
||||
const TString& conto_babbo = mov_babbo_riga.get(RMOVANA_CODCONTO);
|
||||
if (conto_babbo != codcontocg)
|
||||
{
|
||||
//ovviamente deve riclassificare il conto_babbo!
|
||||
codconto = riclassifica(conto_babbo, tmpcurr);
|
||||
indbil = bill2indbil(codconto, true);
|
||||
break;
|
||||
}
|
||||
//ovviamente deve riclassificare il conto_babbo!
|
||||
codconto = riclassifica(conto_babbo, tmpcurr);
|
||||
indbil = bill2indbil(codconto, true);
|
||||
break;
|
||||
}
|
||||
} //if (mov_babbo.rows() > 0)
|
||||
}
|
||||
else
|
||||
continue;
|
||||
}
|
||||
} //if (mov_babbo.rows() > 0)
|
||||
}
|
||||
else
|
||||
continue;
|
||||
}
|
||||
|
||||
if (riferimento.get_pos(rif) < 0) //il doc originale va aggiunto solo se non esiste gia'!
|
||||
{
|
||||
riferimento.add(rif);
|
||||
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc); //crea una copia del doc padre per prendere..
|
||||
tipo_babbo = doc_babbo.tipo_riclassificato(); //..il tipo documento..
|
||||
}
|
||||
} //if (babbo != NULL)..
|
||||
} //if (codcms_rigadoc == codcms_rmovana..
|
||||
} //for (int i..
|
||||
if (riferimento.get_pos(rif) < 0) //il doc originale va aggiunto solo se non esiste gia'!
|
||||
{
|
||||
riferimento.add(rif);
|
||||
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc); //crea una copia del doc padre per prendere..
|
||||
tipo_babbo = doc_babbo.tipo_riclassificato(); //..il tipo documento..
|
||||
}
|
||||
} //if (babbo != NULL)..
|
||||
} //if (codcms_rigadoc == codcms_rmovana..
|
||||
} //for (int i..
|
||||
|
||||
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 ----//
|
||||
//---- FINE DOC ORIG DELL'ANALMOV ----//
|
||||
/*[Tipo documento] //schema divino per destinare gli importi nei campi corretti
|
||||
O=I**
|
||||
B=IM*
|
||||
@ -773,140 +773,141 @@ BO=*M*
|
||||
FB=**F
|
||||
FO=*MF
|
||||
F=IMF*/
|
||||
//---- IMPEGNATO,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
|
||||
selettore = MATURATO;
|
||||
if (tipo_babbo != TTipo_documento::_ordine)
|
||||
selettore |= IMPEGNATO;
|
||||
break;
|
||||
|
||||
case TTipo_documento::_fattura:
|
||||
selettore = FATTURATO; //fattura da bolla FB -> F
|
||||
if (tipo_babbo == TTipo_documento::_ordine) //fattura da ordine FO -> MF
|
||||
{
|
||||
selettore |= MATURATO;
|
||||
} else
|
||||
if (tipo_babbo == TTipo_documento::_altro) //fattura senza padri F -> IMF
|
||||
selettore |= (IMPEGNATO | MATURATO);
|
||||
break;
|
||||
|
||||
case TTipo_documento::_ordine:
|
||||
selettore = IMPEGNATO;
|
||||
break;
|
||||
|
||||
case TTipo_documento::_altro:
|
||||
CHECK(false, "Ma dove cavolo stai passando Willis?");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} //if(newdoc != NULL)
|
||||
else //movimenti puri di analitica (no documento di origine!)
|
||||
//---- IMPEGNATO,MATURATO O FATTURATO? QUESTO E' IL PROBLEMA.. ----//
|
||||
switch (tipo_documento)
|
||||
{
|
||||
if (is_causale_rateo_risconto(caus.codice())) //movimenti con causali "rateo/risconto"
|
||||
case TTipo_documento::_bolla: //bolla B -> IM a meno che non sia bolla da ordine BO -> M
|
||||
selettore = MATURATO;
|
||||
if (tipo_babbo != TTipo_documento::_ordine)
|
||||
selettore |= IMPEGNATO;
|
||||
break;
|
||||
|
||||
case TTipo_documento::_fattura:
|
||||
selettore = FATTURATO; //fattura da bolla FB -> F
|
||||
if (tipo_babbo == TTipo_documento::_ordine) //fattura da ordine FO -> MF
|
||||
{
|
||||
selettore = MATURATO;
|
||||
}
|
||||
else //movimenti con causali "normali"
|
||||
{
|
||||
selettore = FATTURATO;
|
||||
selettore |= MATURATO;
|
||||
selettore |= IMPEGNATO;
|
||||
}
|
||||
} //if(newdoc != NULL)
|
||||
} else
|
||||
if (tipo_babbo == TTipo_documento::_altro) //fattura senza padri F -> IMF
|
||||
selettore |= (IMPEGNATO | MATURATO);
|
||||
break;
|
||||
|
||||
//riempie i record del file temporaneo nel caso di rmovana con documento di origine
|
||||
char sezione = rmovana.get_char(RMOVANA_SEZIONE);
|
||||
|
||||
TImporto imp(sezione, rmovana.get_real(RMOVANA_IMPORTO));
|
||||
case TTipo_documento::_ordine:
|
||||
selettore = IMPEGNATO;
|
||||
break;
|
||||
|
||||
TipoIVA tipoiva = caus.iva(); //tipo iva legato alla causale (codcaus e' letto ad inizio procedura)
|
||||
char sezione_normale = sezione; //inizializza la sezione normale a sezione per evitare vuoti
|
||||
case TTipo_documento::_altro:
|
||||
CHECK(false, "Ma dove cavolo stai passando Willis?");
|
||||
break;
|
||||
|
||||
if (tipoiva == iva_vendite)
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
if (tipoiva == iva_acquisti)
|
||||
sezione_normale = 'D';
|
||||
else
|
||||
if (tipoiva == nessuna_iva)
|
||||
{
|
||||
if (caus.tipomov() > 0 && caus.tipomov() < 3) //solo causali Fattura e Nota di Credito!
|
||||
{
|
||||
if (caus.sezione_clifo() == 'D')
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
sezione_normale = 'D';
|
||||
}
|
||||
else
|
||||
{
|
||||
if (indbil == 1 || indbil == 3) //attivita' e costi sono in DARE
|
||||
sezione_normale = 'D';
|
||||
else //passivita' e ricavi sono in AVERE
|
||||
sezione_normale = 'A';
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //iva errata -> non ha causali -> cerca di capire se cliente o fornitore
|
||||
if (newdoc != NULL)
|
||||
{
|
||||
if (newdoc->get_char(DOC_TIPOCF) == 'C')
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
sezione_normale = 'D';
|
||||
}
|
||||
}
|
||||
|
||||
imp.normalize(sezione_normale);
|
||||
|
||||
//riempie i record del file temporaneo nel caso di rmovana con documento di origine
|
||||
if (selettore & FATTURATO)
|
||||
tmpcurr.put("FATTURATO", imp.valore());
|
||||
if (selettore & MATURATO)
|
||||
tmpcurr.put("MATURATO", imp.valore());
|
||||
if (selettore & IMPEGNATO)
|
||||
tmpcurr.put("IMPEGNATO", imp.valore());
|
||||
|
||||
//campi comuni a rmovana e rdoc senza particolari operazioni
|
||||
TString descr = movana.get(MOVANA_DESCR);
|
||||
int pos = descr.find('$'); //solo per il CRPA!
|
||||
if (pos > 0)
|
||||
{
|
||||
descr.ltrim(pos+1);
|
||||
descr.trim();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
//----Scrittura Conti sul file----//
|
||||
//Scrittura dei conti (i valori delle variabili sono stati settati nella parte iniziale del metodo)
|
||||
//mette i conti nel file (se piano dei conti puramente contabile i valori coincidono)
|
||||
tmpcurr.put("CONTO", codconto); //conto
|
||||
tmpcurr.put("CONTOCG", codcontocg); //conto_cg
|
||||
|
||||
//fa il sort l'indicatore di bilancio del conto e lo utilizza per ordinare i record nel file..
|
||||
//..di appoggio;se sei del CRPA/CSA vuoi i costi dopo i ricavi!
|
||||
const int ordcont = sort_indbil(indbil);
|
||||
tmpcurr.put("ORDCONT", ordcont);
|
||||
|
||||
//----Scrittura dati riga movimento----//
|
||||
tmpcurr.put("NUMREG", rmovana.get(RMOVANA_NUMREG));
|
||||
tmpcurr.put("NUMREGCG", movana.get(MOVANA_NUMREGCG)); //numero di registrazione contabile
|
||||
tmpcurr.put("DESC", descr); //descrizione movana
|
||||
tmpcurr.put("NRIGA", rmovana.get(RMOVANA_NUMRIG)); //numero riga
|
||||
tmpcurr.put("DESCRIGA", rmovana.get(RMOVANA_DESCR)); //descrizione rmovana
|
||||
|
||||
if (should_delete)
|
||||
delete newdoc;
|
||||
|
||||
} //if (tipomov == ..)
|
||||
else
|
||||
|
||||
} //if(newdoc != NULL)
|
||||
else //movimenti puri di analitica (no documento di origine!)
|
||||
{
|
||||
tmpcurr.put("HIDDEN", "X");
|
||||
if (is_causale_rateo_risconto(caus.codice())) //movimenti con causali "rateo/risconto"
|
||||
{
|
||||
selettore = MATURATO;
|
||||
}
|
||||
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
|
||||
char sezione = rmovana.get_char(RMOVANA_SEZIONE);
|
||||
|
||||
TImporto imp(sezione, rmovana.get_real(RMOVANA_IMPORTO));
|
||||
|
||||
TipoIVA tipoiva = caus.iva(); //tipo iva legato alla causale (codcaus e' letto ad inizio procedura)
|
||||
char sezione_normale = sezione; //inizializza la sezione normale a sezione per evitare vuoti
|
||||
|
||||
if (tipoiva == iva_vendite)
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
if (tipoiva == iva_acquisti)
|
||||
sezione_normale = 'D';
|
||||
else
|
||||
if (tipoiva == nessuna_iva)
|
||||
{
|
||||
if (caus.tipomov() > 0 && caus.tipomov() < 3) //solo causali Fattura e Nota di Credito!
|
||||
{
|
||||
if (caus.sezione_clifo() == 'D')
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
sezione_normale = 'D';
|
||||
}
|
||||
else
|
||||
{
|
||||
if (indbil == 1 || indbil == 3) //attivita' e costi sono in DARE
|
||||
sezione_normale = 'D';
|
||||
else //passivita' e ricavi sono in AVERE
|
||||
sezione_normale = 'A';
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //iva errata -> non ha causali -> cerca di capire se cliente o fornitore
|
||||
if (newdoc != NULL)
|
||||
{
|
||||
if (newdoc->get_char(DOC_TIPOCF) == 'C')
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
sezione_normale = 'D';
|
||||
}
|
||||
}
|
||||
|
||||
imp.normalize(sezione_normale);
|
||||
|
||||
//riempie i record del file temporaneo nel caso di rmovana con documento di origine
|
||||
if (selettore & FATTURATO)
|
||||
tmpcurr.put("FATTURATO", imp.valore());
|
||||
if (selettore & MATURATO)
|
||||
tmpcurr.put("MATURATO", imp.valore());
|
||||
if (selettore & IMPEGNATO)
|
||||
tmpcurr.put("IMPEGNATO", imp.valore());
|
||||
|
||||
//campi comuni a rmovana e rdoc senza particolari operazioni
|
||||
TString descr = movana.get(MOVANA_DESCR);
|
||||
int pos = descr.find('$'); //solo per il CRPA!
|
||||
if (pos > 0)
|
||||
{
|
||||
descr.ltrim(pos+1);
|
||||
descr.trim();
|
||||
}
|
||||
|
||||
//----Scrittura Conti sul file----//
|
||||
//Scrittura dei conti (i valori delle variabili sono stati settati nella parte iniziale del metodo)
|
||||
//mette i conti nel file (se piano dei conti puramente contabile i valori coincidono)
|
||||
tmpcurr.put("CONTO", codconto); //conto
|
||||
tmpcurr.put("CONTOCG", codcontocg); //conto_cg
|
||||
|
||||
//fa il sort l'indicatore di bilancio del conto e lo utilizza per ordinare i record nel file..
|
||||
//..di appoggio;se sei del CRPA/CSA vuoi i costi dopo i ricavi!
|
||||
const int ordcont = sort_indbil(indbil);
|
||||
tmpcurr.put("ORDCONT", ordcont);
|
||||
|
||||
//----Scrittura dati riga movimento----//
|
||||
tmpcurr.put("NUMREG", rmovana.get(RMOVANA_NUMREG));
|
||||
tmpcurr.put("NUMREGCG", movana.get(MOVANA_NUMREGCG)); //numero di registrazione contabile
|
||||
tmpcurr.put("DESC", descr); //descrizione movana
|
||||
tmpcurr.put("NRIGA", rmovana.get(RMOVANA_NUMRIG)); //numero riga
|
||||
tmpcurr.put("DESCRIGA", rmovana.get(RMOVANA_DESCR)); //descrizione rmovana
|
||||
|
||||
if (should_delete)
|
||||
delete newdoc;
|
||||
|
||||
//I movimenti di budget (preventivi e variazioni) vanno nascosti nei body!!! Devono essere considerati in..
|
||||
//..quanto servono per sapere quali conti sono stati movimentati per i budget, in modo che per ogni conto..
|
||||
//..il report si crei la testata e faccia il relativo calcolo del saldo del conto! (cerca #PREVENTIVO)
|
||||
if (tipomov == 'P' || tipomov == 'V')
|
||||
tmpcurr.put("HIDDEN", "X");
|
||||
|
||||
|
||||
//scrive sul file di appoggio il record appena riempito
|
||||
int err = _tmp->write();
|
||||
|
||||
|
@ -141,7 +141,7 @@
|
||||
<prescript description="H1.102 PRESCRIPT">MESSAGE ISAMREAD,CLIFO,TIPOCF=C!CODCF=#101,RAGSOC</prescript>
|
||||
</field>
|
||||
</section>
|
||||
<section repeat="1" type="Head" level="2" height="2">
|
||||
<section type="Head" level="2" height="2">
|
||||
<groupby>ORDCONT+CONTO</groupby>
|
||||
<font italic="1" face="Courier New" size="8" />
|
||||
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.400
|
||||
|
@ -1300,7 +1300,9 @@ void TAnal_mov::saldo_set_reset(const TRectype& row, bool reset)
|
||||
const TDate datacomp = get_date(MOVANA_DATACOMP);
|
||||
const TDate datafcomp = get_date(MOVANA_DATAFCOMP);
|
||||
|
||||
giorni_annies.add(esc[esc_iniziale].fine() - datacomp + 1); //primo esercizio
|
||||
TDate inizio_esc_iniziale, fine_esc_iniziale;
|
||||
esc.code2range(esc_iniziale, inizio_esc_iniziale, fine_esc_iniziale);
|
||||
giorni_annies.add(fine_esc_iniziale - datacomp + 1); //primo esercizio
|
||||
|
||||
TDate inizio_esc_finale, fine_esc_finale;
|
||||
for (int a = 1; a < annies.items() - 1; a++)
|
||||
|
Loading…
x
Reference in New Issue
Block a user