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
|
#ifdef DBG
|
||||||
//cazzone
|
//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;
|
int cazzone = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -625,147 +626,146 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
|
|||||||
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
//---- DOC D'ORIGINE DELL' ANALMOV ----//
|
||||||
//tipo movimento CONSUNTIVO (o TEMPORANEO); per i movimenti di budget (P o V) vedi l'else
|
//tipo movimento CONSUNTIVO (o TEMPORANEO); per i movimenti di budget (P o V) vedi l'else
|
||||||
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
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
|
const TString4 dacodnum = movana.get(MOVANA_DCODNUM);
|
||||||
TDocumento* newdoc = (TDocumento*)doc;
|
newdoc = new TDocumento('D', movana.get_int(MOVANA_DANNO), dacodnum, movana.get_long(MOVANA_DNDOC));
|
||||||
bool should_delete = false;
|
should_delete = true; //settato true per cancellare il doc al termine del metodo(sennò addio memoria!)
|
||||||
if (newdoc == NULL && movana.get_long(MOVANA_DNDOC) > 0)
|
}
|
||||||
|
|
||||||
|
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);
|
const TRiga_documento& riga = (*newdoc)[i];
|
||||||
newdoc = new TDocumento('D', movana.get_int(MOVANA_DANNO), dacodnum, movana.get_long(MOVANA_DNDOC));
|
//commessa e fase della riga documento
|
||||||
should_delete = true; //settato true per cancellare il doc al termine del metodo(sennò addio memoria!)
|
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;
|
//Altra richiesta Adolfica: nel caso di ripartizioni, per non perdere la connessione tra..
|
||||||
//i movimenti possono essere normali o generati da documento...
|
//..commessa/fase/cdc originale della riga analitica non ripartita e cms/fase/cdc della riga doc,..
|
||||||
if (dadoc) //movimento generato da documento
|
//..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..
|
||||||
codnum_desc = movana.get(MOVANA_DCODNUM); //serve anche in fondo al metodo
|
//..e riga doc e doc_babbo, perdendo la giusta configurazione del SELETTORE
|
||||||
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!
|
TString codcms_rmovana = rmovana.get(RMOVANA_CODCMSORI);
|
||||||
if (newdoc != NULL)
|
if (!codcms_rmovana.full())
|
||||||
{
|
codcms_rmovana = rmovana.get(RMOVANA_CODCMS);
|
||||||
tmpcurr.put("NUMDOCRIF", newdoc->get(DOC_NUMDOCRIF)); //docrif del documento originante il movana
|
TString codfase_rmovana = rmovana.get(RMOVANA_CODFASEORI);
|
||||||
tmpcurr.put("DATADOCRIF", newdoc->get(DOC_DATADOCRIF)); //datadocrif del documento originante il movana
|
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
|
if (codcms_rigadoc == codcms_rmovana && codfase_rigadoc == codfase_rmovana && codcdc_rigadoc == codcdc_rmovana)
|
||||||
//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 TRiga_documento& riga = (*newdoc)[i];
|
const TRectype* babbo = riga.find_original_rdoc(); //cerca il doc padre della riga doc attuale
|
||||||
//commessa e fase della riga documento
|
if (babbo != NULL) //se trova il doc padre..
|
||||||
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
|
const TString4 babbo_codnum = babbo->get(RDOC_CODNUM);
|
||||||
if (babbo != NULL) //se trova il doc padre..
|
const int anno = babbo->get_int(RDOC_ANNO);
|
||||||
{
|
const long ndoc = babbo->get_long(RDOC_NDOC);
|
||||||
const TString4 babbo_codnum = babbo->get(RDOC_CODNUM);
|
rif.cut(0) << babbo_codnum << '-' << anno << '-' << ndoc;
|
||||||
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..
|
//caso particolare dei conti del CRPA. Se il conto non e' riclassificato (ma siamo in presenza..
|
||||||
//.di un piano dei conti riclassificato)...
|
//.di un piano dei conti riclassificato)...
|
||||||
if (conto_non_riclass)
|
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..
|
//Ricrea il documento origine
|
||||||
//..di analitica) era una FDR/FDE...
|
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc);
|
||||||
const TCodice_numerazione& kodice_num = TDocumento::codice_numerazione(babbo_codnum);
|
//elaborazione analitica del documento originale
|
||||||
//Se lo era...
|
TContabilizzazione_analitica cont_anal;
|
||||||
if (kodice_num.fattura_emettere_ricevere())
|
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
|
const int anal_rows = mov_babbo.rows();
|
||||||
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc);
|
for (int k = 1; k <= anal_rows; k++)
|
||||||
//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();
|
//cerca la riga con il conto che gli serve e lo assegna a codconto, attualmente vuoto..
|
||||||
for (int k = 1; k <= anal_rows; k++)
|
//..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..
|
//ovviamente deve riclassificare il conto_babbo!
|
||||||
//..in quanto non e' stato riclassificato
|
codconto = riclassifica(conto_babbo, tmpcurr);
|
||||||
const TRectype& mov_babbo_riga = mov_babbo.body()[k];
|
indbil = bill2indbil(codconto, true);
|
||||||
const TString& conto_babbo = mov_babbo_riga.get(RMOVANA_CODCONTO);
|
break;
|
||||||
if (conto_babbo != codcontocg)
|
|
||||||
{
|
|
||||||
//ovviamente deve riclassificare il conto_babbo!
|
|
||||||
codconto = riclassifica(conto_babbo, tmpcurr);
|
|
||||||
indbil = bill2indbil(codconto, true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} //if (mov_babbo.rows() > 0)
|
}
|
||||||
}
|
} //if (mov_babbo.rows() > 0)
|
||||||
else
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (riferimento.get_pos(rif) < 0) //il doc originale va aggiunto solo se non esiste gia'!
|
if (riferimento.get_pos(rif) < 0) //il doc originale va aggiunto solo se non esiste gia'!
|
||||||
{
|
{
|
||||||
riferimento.add(rif);
|
riferimento.add(rif);
|
||||||
TDocumento doc_babbo('D', anno, babbo_codnum, ndoc); //crea una copia del doc padre per prendere..
|
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..
|
tipo_babbo = doc_babbo.tipo_riclassificato(); //..il tipo documento..
|
||||||
}
|
}
|
||||||
} //if (babbo != NULL)..
|
} //if (babbo != NULL)..
|
||||||
} //if (codcms_rigadoc == codcms_rmovana..
|
} //if (codcms_rigadoc == codcms_rmovana..
|
||||||
} //for (int i..
|
} //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
|
/*[Tipo documento] //schema divino per destinare gli importi nei campi corretti
|
||||||
O=I**
|
O=I**
|
||||||
B=IM*
|
B=IM*
|
||||||
@ -773,140 +773,141 @@ BO=*M*
|
|||||||
FB=**F
|
FB=**F
|
||||||
FO=*MF
|
FO=*MF
|
||||||
F=IMF*/
|
F=IMF*/
|
||||||
//---- IMPEGNATO,MATURATO O FATTURATO? QUESTO E' IL PROBLEMA.. ----//
|
//---- IMPEGNATO,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
|
|
||||||
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!)
|
|
||||||
{
|
{
|
||||||
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 |= MATURATO;
|
||||||
selettore |= IMPEGNATO;
|
} else
|
||||||
}
|
if (tipo_babbo == TTipo_documento::_altro) //fattura senza padri F -> IMF
|
||||||
} //if(newdoc != NULL)
|
selettore |= (IMPEGNATO | MATURATO);
|
||||||
|
break;
|
||||||
|
|
||||||
//riempie i record del file temporaneo nel caso di rmovana con documento di origine
|
case TTipo_documento::_ordine:
|
||||||
char sezione = rmovana.get_char(RMOVANA_SEZIONE);
|
selettore = IMPEGNATO;
|
||||||
|
break;
|
||||||
TImporto imp(sezione, rmovana.get_real(RMOVANA_IMPORTO));
|
|
||||||
|
|
||||||
TipoIVA tipoiva = caus.iva(); //tipo iva legato alla causale (codcaus e' letto ad inizio procedura)
|
case TTipo_documento::_altro:
|
||||||
char sezione_normale = sezione; //inizializza la sezione normale a sezione per evitare vuoti
|
CHECK(false, "Ma dove cavolo stai passando Willis?");
|
||||||
|
break;
|
||||||
|
|
||||||
if (tipoiva == iva_vendite)
|
default:
|
||||||
sezione_normale = 'A';
|
break;
|
||||||
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----//
|
} //if(newdoc != NULL)
|
||||||
//Scrittura dei conti (i valori delle variabili sono stati settati nella parte iniziale del metodo)
|
else //movimenti puri di analitica (no documento di origine!)
|
||||||
//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
|
|
||||||
{
|
{
|
||||||
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
|
//scrive sul file di appoggio il record appena riempito
|
||||||
int err = _tmp->write();
|
int err = _tmp->write();
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@
|
|||||||
<prescript description="H1.102 PRESCRIPT">MESSAGE ISAMREAD,CLIFO,TIPOCF=C!CODCF=#101,RAGSOC</prescript>
|
<prescript description="H1.102 PRESCRIPT">MESSAGE ISAMREAD,CLIFO,TIPOCF=C!CODCF=#101,RAGSOC</prescript>
|
||||||
</field>
|
</field>
|
||||||
</section>
|
</section>
|
||||||
<section repeat="1" type="Head" level="2" height="2">
|
<section type="Head" level="2" height="2">
|
||||||
<groupby>ORDCONT+CONTO</groupby>
|
<groupby>ORDCONT+CONTO</groupby>
|
||||||
<font italic="1" face="Courier New" size="8" />
|
<font italic="1" face="Courier New" size="8" />
|
||||||
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.400
|
<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 datacomp = get_date(MOVANA_DATACOMP);
|
||||||
const TDate datafcomp = get_date(MOVANA_DATAFCOMP);
|
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;
|
TDate inizio_esc_finale, fine_esc_finale;
|
||||||
for (int a = 1; a < annies.items() - 1; a++)
|
for (int a = 1; a < annies.items() - 1; a++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user