Patch level :2.2 152
Files correlati :cacnv.exe, ca3.exe Ricompilazione Demo : [ ] Commento : nella conversione aggiunti i campi del documento origine. Stampa rendiconto: stampa cose abbastanza sensate. git-svn-id: svn://10.65.10.50/trunk@13277 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8932c11b05
commit
a8d17a8bda
157
ca/ca3700.cpp
157
ca/ca3700.cpp
@ -4,6 +4,8 @@
|
||||
#include <reprint.h>
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
#include "../cg/cg2103.h"
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../ve/velib04.h"
|
||||
|
||||
#include "pconana.h"
|
||||
@ -222,6 +224,9 @@ TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
|
||||
///////////////////////////////////////////////////////////////
|
||||
// RECORDSET
|
||||
///////////////////////////////////////////////////////////////
|
||||
#define IMPEGNATO 1
|
||||
#define MATURATO 2
|
||||
#define FATTURATO 4
|
||||
|
||||
class TPrint_rendiconto_ca_recordset : public TISAM_recordset
|
||||
{
|
||||
@ -230,7 +235,6 @@ class TPrint_rendiconto_ca_recordset : public TISAM_recordset
|
||||
protected:
|
||||
int _anno;
|
||||
int _tipoconti;
|
||||
int _tipimov;
|
||||
TDate _dadata, _adata;
|
||||
long _danumreg, _anumreg;
|
||||
TString _daconto, _aconto, _codcosto, _codcms, _codfas;
|
||||
@ -246,7 +250,7 @@ protected:
|
||||
void crea_righe_rmovana();
|
||||
void crea_righe_rdoc(const TPrint_rendiconto_ca_mask& msk);
|
||||
void crea_trr(const TFilename& trr) const;
|
||||
void salva_rmovana(const TRectype& rmovana, const TRectype& movana);
|
||||
void salva_rmovana(const TRectype& rmovana, const TRectype& movana, const TDocumento* doc);
|
||||
real somma_budget(const TString& codconto, const char* tipomovana);
|
||||
|
||||
|
||||
@ -274,9 +278,10 @@ bool TPrint_rendiconto_ca_recordset::valid_record(const TRelation& rel) const
|
||||
{
|
||||
case 'P': tipomov_int = 2; break;
|
||||
case 'V': tipomov_int = 4; break;
|
||||
case 'T': tipomov_int = 1;break;
|
||||
default: tipomov_int = 1; break;
|
||||
}
|
||||
if ((_tipimov & tipomov_int) == 0)
|
||||
if ((tipomov_int) == 0)
|
||||
return false;
|
||||
|
||||
//..poi le righe (devono comparire solo le righe con cdc/cms/fsc che appaiono nello sheet)
|
||||
@ -404,35 +409,130 @@ const TVariant& TPrint_rendiconto_ca_recordset::get(const char* column_name) con
|
||||
return TISAM_recordset::get(column_name);
|
||||
}
|
||||
|
||||
void TPrint_rendiconto_ca_recordset::salva_rmovana(const TRectype& rmovana, const TRectype& movana)
|
||||
void TPrint_rendiconto_ca_recordset::salva_rmovana(const TRectype& rmovana, const TRectype& movana, const TDocumento* doc)
|
||||
{
|
||||
//serve un documento da cui ricavare i parametri di stampa
|
||||
const bool dadoc = doc != NULL;
|
||||
TDocumento* newdoc = (TDocumento*)doc;
|
||||
if (newdoc == NULL && movana.get(MOVANA_DNDOC).not_empty())
|
||||
{
|
||||
const TString16 dacodnum = movana.get(MOVANA_DCODNUM);
|
||||
newdoc = new TDocumento('D', movana.get_int(MOVANA_DANNO), dacodnum, movana.get_long(MOVANA_DNDOC));
|
||||
}
|
||||
|
||||
//tipo movimento CONSUNTIVO
|
||||
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
|
||||
if (tipomov <= ' ')
|
||||
if (tipomov <= ' ' || tipomov == 'T')
|
||||
{
|
||||
//scegli i campi da mettere
|
||||
_tmp->curr().put("CONTO", rmovana.get(RMOVANA_CODCONTO)); //conto
|
||||
_tmp->curr().put("ANNO", movana.get(MOVANA_ANNOES)); //anno
|
||||
_tmp->curr().put("CODNUM", movana.get(MOVANA_DCODNUM)); //codnum del documento che origina il movana
|
||||
_tmp->curr().put("DATA", movana.get(MOVANA_DATAREG)); //data del movana
|
||||
_tmp->curr().put("NUMRD", movana.get(MOVANA_NUMREG));
|
||||
_tmp->curr().put("NUMDOCRIF", movana.get(MOVANA_DNDOC));
|
||||
_tmp->curr().put("DATADOCRIF", movana.get(MOVANA_DATADOC));
|
||||
_tmp->curr().put("DESC", movana.get(MOVANA_DESCR)); //??veramente non si sa??
|
||||
|
||||
if (dadoc) //movimento generato da documento
|
||||
{
|
||||
_tmp->curr().put("CODNUM", movana.get(MOVANA_DCODNUM)); //codnum del documento che origina il movana
|
||||
_tmp->curr().put("ANNO", movana.get(MOVANA_DANNO)); //anno del doc di origine
|
||||
_tmp->curr().put("NUMRD", movana.get(MOVANA_DNDOC)); //numreg del movana
|
||||
_tmp->curr().put("DATA", movana.get(MOVANA_DATADOC)); //data del documento che genera movana
|
||||
}
|
||||
else //movimento normale
|
||||
{
|
||||
_tmp->curr().put("CODNUM", movana.get(MOVANA_NUMDOC));
|
||||
_tmp->curr().put("ANNO", movana.get(MOVANA_ANNOES)); //anno del movimento
|
||||
_tmp->curr().put("NUMRD", movana.get(MOVANA_NUMREG)); //numreg del movana
|
||||
_tmp->curr().put("DATA", movana.get(MOVANA_DATACOMP)); //data del movana
|
||||
}
|
||||
|
||||
int selettore = 0;
|
||||
if (newdoc != NULL)
|
||||
{
|
||||
_tmp->curr().put("NUMDOCRIF", newdoc->get(DOC_NUMDOCRIF)); //docrif del documento originante il movana
|
||||
_tmp->curr().put("DATADOCRIF", newdoc->get(DOC_DATADOCRIF)); //datadocrif del documento originante il movana
|
||||
|
||||
const int tipo_documento = newdoc->tipo().tipo();
|
||||
int tipo_babbo = 0;
|
||||
|
||||
TString80 riferimento;
|
||||
const int rows = newdoc->physical_rows();
|
||||
for (int i = 1; riferimento.empty() && i <= rows; i++)
|
||||
{
|
||||
const TRiga_documento& riga = (*newdoc)[i];
|
||||
const TRectype* babbo = riga.find_original_rdoc();
|
||||
if (babbo != NULL)
|
||||
{
|
||||
const TString8 codnum = babbo->get(RDOC_CODNUM);
|
||||
const int anno = babbo->get_int(RDOC_ANNO);
|
||||
const long ndoc = babbo->get_long(RDOC_NDOC);
|
||||
riferimento << codnum << '-' << anno << '-' << ndoc;
|
||||
TDocumento doc_babbo('D', anno, codnum, ndoc);
|
||||
tipo_babbo = doc_babbo.tipo().tipo();
|
||||
}
|
||||
}
|
||||
|
||||
switch (tipo_documento)
|
||||
{
|
||||
case TTipo_documento::_bolla:
|
||||
selettore = MATURATO;
|
||||
if (tipo_babbo != TTipo_documento::_ordine)
|
||||
selettore |= IMPEGNATO;
|
||||
break;
|
||||
case TTipo_documento::_fattura:
|
||||
selettore = FATTURATO;
|
||||
if (tipo_babbo == TTipo_documento::_ordine)
|
||||
selettore |= MATURATO;
|
||||
else
|
||||
selettore |= (IMPEGNATO | MATURATO);
|
||||
break;
|
||||
case TTipo_documento::_ordine:
|
||||
selettore = IMPEGNATO;
|
||||
break;
|
||||
case TTipo_documento::_altro:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_tmp->curr().put("DOCORIG", riferimento);
|
||||
}
|
||||
|
||||
_tmp->curr().put("DESC", movana.get(MOVANA_DESCR)); //descrizione movana
|
||||
_tmp->curr().put("NRIGA", rmovana.get(RMOVANA_NUMRIG));
|
||||
_tmp->curr().put("DESCRIGA", movana.get(RMOVANA_DESCR));
|
||||
_tmp->curr().put("DANDOC", movana.get(MOVANA_DNDOC));
|
||||
_tmp->curr().put("DESCRIGA", movana.get(RMOVANA_DESCR)); //descrizione rmovana
|
||||
|
||||
//qui ci vuole l'algoritmo di calcolo di fatturato/maturato/impegnato in base al TIPODOC
|
||||
//o al CODNUM (***quale campo non si sa di preciso***)
|
||||
const TString4 tipodoc = movana.get(MOVANA_TIPODOC);
|
||||
/*[Tipo documento]
|
||||
O=I**
|
||||
B=IM*
|
||||
BO=*M*
|
||||
FB=**F
|
||||
FO=*MF
|
||||
F=IMF*/
|
||||
//****modificare il metodo per accelerare
|
||||
const char sezione = rmovana.get_char(RMOVANA_SEZIONE);
|
||||
|
||||
TImporto imp(sezione, rmovana.get_real(RMOVANA_IMPORTO));
|
||||
|
||||
/* _tmp->curr().put("FATTURATO", movana.get(MOVANA_));
|
||||
_tmp->curr().put("MATURATO", movana.get(MOVANA_));
|
||||
_tmp->curr().put("IMPEGNATO", movana.get(MOVANA_));*/
|
||||
TCausale caus(movana.get(MOVANA_CODCAUS));
|
||||
TipoIVA tipoiva = caus.iva();
|
||||
char sezione_normale;
|
||||
|
||||
if (tipoiva == iva_vendite)
|
||||
sezione_normale = 'A';
|
||||
else
|
||||
if (tipoiva == iva_acquisti)
|
||||
sezione_normale = 'D';
|
||||
else
|
||||
sezione_normale = 'D'; //questo in preparazione di casi futuri
|
||||
|
||||
imp.normalize(sezione_normale);
|
||||
|
||||
if (selettore & FATTURATO)
|
||||
_tmp->curr().put("FATTURATO", imp.valore());
|
||||
if (selettore & MATURATO)
|
||||
_tmp->curr().put("MATURATO", imp.valore());
|
||||
if (selettore & IMPEGNATO)
|
||||
_tmp->curr().put("IMPEGNATO", imp.valore());
|
||||
|
||||
_tmp->write(); // aggiunge i record al file temporaneo
|
||||
}
|
||||
if (!dadoc && newdoc != NULL)
|
||||
delete newdoc;
|
||||
}
|
||||
|
||||
|
||||
@ -484,21 +584,20 @@ void TPrint_rendiconto_ca_recordset::crea_righe_rmovana()
|
||||
const long rmovana_items = cur_rmovana.items();
|
||||
cur_rmovana.freeze();
|
||||
|
||||
//scorre le righe movimenti di analitica che soddisfano il filtro
|
||||
//il join a movana serve nel caso necessitino dati di testata per la riga in questione
|
||||
if (rmovana_items > 0)
|
||||
{
|
||||
const TRectype& rmovana = cur_rmovana.curr();
|
||||
const TRectype& movana = rel_rmovana.curr(LF_MOVANA);
|
||||
for (cur_rmovana = 0; cur_rmovana.pos() < rmovana_items; ++cur_rmovana)
|
||||
salva_rmovana(rmovana, movana);
|
||||
salva_rmovana(rmovana, movana, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TPrint_rendiconto_ca_recordset::crea_righe_rdoc(const TPrint_rendiconto_ca_mask& msk)
|
||||
{
|
||||
|
||||
//scanning del file dei documenti alla ricerca di quelli che hanno la data ed il CODNUM
|
||||
//validi nei filtri impostati dall'utente
|
||||
TRelation rel_doc(LF_DOC);
|
||||
// rel_doc.add(LF_RIGHEDOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==PROVV|NDOC==NDOC"); //aggiunge le testate
|
||||
|
||||
@ -555,6 +654,8 @@ void TPrint_rendiconto_ca_recordset::crea_righe_rdoc(const TPrint_rendiconto_ca_
|
||||
const long doc_items = cur_doc.items();
|
||||
cur_doc.freeze();
|
||||
|
||||
//scanning del file dei documenti alla ricerca di quelli che hanno la data ed il CODNUM
|
||||
//validi nei filtri impostati dall'utente
|
||||
for (cur_doc = 0; cur_doc.pos() < doc_items; ++cur_doc)
|
||||
{
|
||||
TDocumento doc(cur_doc.curr());
|
||||
@ -562,7 +663,7 @@ void TPrint_rendiconto_ca_recordset::crea_righe_rdoc(const TPrint_rendiconto_ca_
|
||||
cont_anal.elabora(doc, 0, NULL, false, mov);
|
||||
for (int j = 1; j <= mov.rows(); j++)
|
||||
{
|
||||
salva_rmovana(mov.body()[j], mov);
|
||||
salva_rmovana(mov.body()[j], mov, &doc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -577,8 +678,8 @@ void TPrint_rendiconto_ca_recordset::crea_trr(const TFilename& trr) const
|
||||
of << 1000 << endl;
|
||||
of << 14 << endl;
|
||||
of << "CONTO|1|20|0|Conto analitico" << endl;
|
||||
of << "ANNO|9|4|0|Anno" << endl;
|
||||
of << "CODNUM|1|4|0|Numerazione documento" << endl;
|
||||
of << "ANNO|9|4|0|Anno" << endl;
|
||||
of << "DATA|5|8|0|Data movimento o documento" << endl;
|
||||
of << "NUMRD|3|7|0|Numero registrazione o documento" << endl;
|
||||
of << "NUMDOCRIF|1|7|0|Numero documento riferimento" << endl;
|
||||
@ -586,7 +687,7 @@ void TPrint_rendiconto_ca_recordset::crea_trr(const TFilename& trr) const
|
||||
of << "DESC|1|50|0|Descrizione movimento o documento" << endl;
|
||||
of << "NRIGA|2|3|0|Riga movimento o documento" << endl;
|
||||
of << "DESCRIGA|1|50|0|Descrizione riga movimento o documento" << endl;
|
||||
of << "DANDOC|3|7|0|Riferimento ordine/bolla" << endl;
|
||||
of << "DOCORIG|1|20|0|Riferimento ordine/bolla" << endl;
|
||||
of << "FATTURATO|4|18|5|Fatturato" << endl;
|
||||
of << "MATURATO|4|18|5|Maturato" << endl;
|
||||
of << "IMPEGNATO|4|18|5|Impegnato" << endl;
|
||||
@ -770,7 +871,7 @@ calcolatore (const int tipo, const int classe, const int dare)
|
||||
}
|
||||
|
||||
|
||||
//Calcolatore per tipi (OA,OV) -> impegnato, (BA,BV) -> impegnato, (FA,FN) -> impegnato,
|
||||
//Calcolatore per tipi (OA,OV) -> impegnato, (BA,BV) -> maturato, (FA,FN) -> fatturato,
|
||||
calcolatore (const int tipo)
|
||||
{
|
||||
switch (tipo):
|
||||
|
@ -381,7 +381,14 @@ void TConversione_cm2ca::create_new_movana(long numreg_cg, bool definitiva, TAss
|
||||
analmov.put(MOVANA_TIPODOC, mov_head.get(MOV_TIPODOC));
|
||||
analmov.put(MOVANA_DESCR, mov_head.get(MOV_DESCR));
|
||||
analmov.put(MOVANA_CODCAUS, mov_head.get(MOV_CODCAUS));
|
||||
analmov.put(MOVANA_TIPOMOV, "T"); //deve mettere sempre "Temporaneo"
|
||||
if (definitiva)
|
||||
analmov.put(MOVANA_TIPOMOV, " ");
|
||||
else
|
||||
analmov.put(MOVANA_TIPOMOV, "T"); //deve mettere "Temporaneo" (conversione NON definitiva)
|
||||
analmov.put(MOVANA_DPROVV, mov_head.get(MOV_DPROVV));
|
||||
analmov.put(MOVANA_DANNO, mov_head.get(MOV_DANNO));
|
||||
analmov.put(MOVANA_DCODNUM, mov_head.get(MOV_DCODNUM));
|
||||
analmov.put(MOVANA_DNDOC, mov_head.get(MOV_DNDOC));
|
||||
//MOVANA_TOTDOC e' il totale di tutte le sue righe;ancora non si conosce;sara' compilato..
|
||||
//..successivamente utilizzando importone
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user