Patch level : 2.2 mah

Files correlati     : ve0
Ricompilazione Demo : [ ]
Commento            :

Migliorata generazione campi analitici sulle righe documento:
vengono ignorate le righe descrizione, sconto ed omaggio.


git-svn-id: svn://10.65.10.50/trunk@13068 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2005-05-09 11:07:31 +00:00
parent c913f3ed12
commit 190e16c53f
5 changed files with 51 additions and 71 deletions

View File

@ -80,9 +80,9 @@ public:
void ricalcola_giacenze(); void ricalcola_giacenze();
TCodart_livelli * get_livelli_art() const { return livelli_art; } TCodart_livelli * get_livelli_art() const { return livelli_art; }
TString &generated_code() {return _generated_code;} TString& generated_code() { return _generated_code; }
TString16 &um_principale() {return _um_principale;} TString& um_principale() { return _um_principale; }
TMagazzini & magazzini() {return *_magazzini;} TMagazzini& magazzini() { return *_magazzini; }
TEsercizi_contabili &esercizi_contabili() {return *_esercizi_contabili;} TEsercizi_contabili &esercizi_contabili() {return *_esercizi_contabili;}
TMask_anamag(TRelation * rel); TMask_anamag(TRelation * rel);

View File

@ -451,15 +451,15 @@ public:
virtual ~TConsuntivazione_produzione() { } virtual ~TConsuntivazione_produzione() { }
}; };
class TContabilizzazione_analitica : public TElaborazione // velib04e class TContabilizzazione_analitica : public TContabilizzazione // velib04b
{ {
public: public:
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab, bool interattivo = FALSE); const TDate& data_elab, bool interattivo = FALSE);
bool elabora(const TDocumento& doc_in, const TImporto& totdoc); bool elabora(const TDocumento& doc_in, const TImporto& totdoc);
TContabilizzazione_analitica(const char* cod) : TElaborazione(cod) { } TContabilizzazione_analitica(const char* cod) : TContabilizzazione(cod) { }
TContabilizzazione_analitica(const TRectype& rec) : TElaborazione(rec) { } TContabilizzazione_analitica(const TRectype& rec) : TContabilizzazione(rec) { }
virtual ~TContabilizzazione_analitica() { } virtual ~TContabilizzazione_analitica() { }
}; };

View File

@ -15,18 +15,8 @@
#include "../in/inlib01.h" #include "../in/inlib01.h"
#include "../mg/anamag.h" #include "../mg/anamag.h"
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
#include <clifo.h>
#include <cfven.h>
#include <comuni.h> #include <comuni.h>
#include <nditte.h>
#include <occas.h>
#include <unloc.h> #include <unloc.h>
#include <doc.h>
#include <rdoc.h>
void TMovimentoPN_VE::destroy_iva_row(int i) void TMovimentoPN_VE::destroy_iva_row(int i)
{ {
@ -118,9 +108,7 @@ void TMovimentoPN_VE::set_cg_imp(int n, const TImporto& imp)
TImporto TMovimentoPN_VE::get_cg_imp(int n) TImporto TMovimentoPN_VE::get_cg_imp(int n)
{ {
const TRectype& rec = cg(n); const TRectype& rec = cg(n);
const char sez = rec.get_char(RMV_SEZIONE); const TImporto importo(rec.get_char(RMV_SEZIONE), rec.get_real(RMV_IMPORTO));
const real valore(rec.get_real(RMV_IMPORTO));
TImporto importo(sez,valore);
return importo; return importo;
} }
@ -141,7 +129,7 @@ int TMovimentoPN_VE::set_cg_rec(int n, const TImporto& imp, const TBill& conto,
if (insert) if (insert)
{ {
TRectype& head = lfile().curr(); TRectype& head = curr();
const int annoes = head.get_int(MOV_ANNOES); const int annoes = head.get_int(MOV_ANNOES);
const long numreg = head.get_long(MOV_NUMREG); const long numreg = head.get_long(MOV_NUMREG);
TDate datareg(head.get_date(MOV_DATAREG)); TDate datareg(head.get_date(MOV_DATAREG));
@ -151,25 +139,15 @@ int TMovimentoPN_VE::set_cg_rec(int n, const TImporto& imp, const TBill& conto,
} }
rec.put(RMV_SEZIONE,imp.sezione()); rec.put(RMV_SEZIONE,imp.sezione());
rec.put(RMV_IMPORTO,imp.valore()); rec.put(RMV_IMPORTO,imp.valore());
rec.put(RMV_TIPOC,conto.tipo()); conto.put(rec);
rec.put(RMV_GRUPPO,conto.gruppo());
rec.put(RMV_CONTO,conto.conto());
rec.put(RMV_SOTTOCONTO,conto.sottoconto());
rec.put(RMV_DESCR, desc); rec.put(RMV_DESCR, desc);
if (tipo != ' ') if (tipo != ' ')
{ {
if (tipo == 'T') // Calcolo contropartita if (tipo == 'T') // Calcolo contropartita
{ {
TRectype& irec = iva(0); const TBill zio(iva(0));
const char t = irec.get_char(RMI_TIPOC); zio.put(rec, true);
const int gr = irec.get_int(RMI_GRUPPO);
const int co = irec.get_int(RMI_CONTO);
const long so = irec.get_long(RMI_SOTTOCONTO);
rec.put(RMV_TIPOCC,t);
rec.put(RMV_GRUPPOC,gr);
rec.put(RMV_CONTOC,co);
rec.put(RMV_SOTTOCONTOC,so);
} }
else else
{ {
@ -184,15 +162,8 @@ int TMovimentoPN_VE::set_cg_rec(int n, const TImporto& imp, const TBill& conto,
pos = type2pos('T'); pos = type2pos('T');
if (pos >= 0) if (pos >= 0)
{ {
TRectype& crec = cg(pos); const TBill zio(cg(pos));
const char t = crec.get_char(RMV_TIPOC); zio.put(rec, true);
const int gr = crec.get_int(RMV_GRUPPO);
const int co = crec.get_int(RMV_CONTO);
const long so = crec.get_long(RMV_SOTTOCONTO);
rec.put(RMV_TIPOCC,t);
rec.put(RMV_GRUPPOC,gr);
rec.put(RMV_CONTOC,co);
rec.put(RMV_SOTTOCONTOC,so);
} }
} }
} }
@ -254,16 +225,12 @@ void TMovimentoPN_VE::create_row(int i, const TString & descr_cr)
} }
} }
const int gr = cur.get_int(RMI_GRUPPO); const TBill oldconto(cur);
const int co = cur.get_int(RMI_CONTO);
const long so = cur.get_long(RMI_SOTTOCONTO);
const TBill oldconto(gr,co,so);
if (oldconto.ok()) if (oldconto.ok())
{ {
if (bill2pos(oldconto, 'I') < 0) if (bill2pos(oldconto, 'I') < 0)
{ {
const TString d(_caus->desc_agg(2)); const TString80 d(_caus->desc_agg(2));
set_cg_rec(-1, real2imp(ZERO, 'I'), oldconto, d.empty() ? descr_cr: d, 'I'); set_cg_rec(-1, real2imp(ZERO, 'I'), oldconto, d.empty() ? descr_cr: d, 'I');
} }
} }
@ -325,7 +292,7 @@ void TMovimentoPN_VE::enter_row(int i, const TString & descr_cr)
if (!imposta.is_zero()) // Se c'e' imposta ... if (!imposta.is_zero()) // Se c'e' imposta ...
{ // ... crea nuova riga per l'IVA { // ... crea nuova riga per l'IVA
const TImporto val(real2imp(imposta, 'I')); const TImporto val(real2imp(imposta, 'I'));
const TString d(_caus->desc_agg(ri)); const TString80 d(_caus->desc_agg(ri));
newposiva = set_cg_rec(-1, val, contoiva, d, tipod); newposiva = set_cg_rec(-1, val, contoiva, d, tipod);
} }
} }
@ -354,8 +321,7 @@ void TMovimentoPN_VE::add_row_re(int i)
if (ivapos < 0) if (ivapos < 0)
ivapos= set_cg_rec(-1, real2imp(ZERO, 'I'), c, "", 'I'); ivapos= set_cg_rec(-1, real2imp(ZERO, 'I'), c, "", 'I');
const TImporto val(real2imp(oldiva, 'I')); const TImporto val(real2imp(oldiva, 'I'));
add_cg_rec(ivapos, val); add_cg_rec(ivapos, val);
} }
else else
@ -369,12 +335,10 @@ void TMovimentoPN_VE::add_row_re(int i)
if (c.ok()) if (c.ok())
{ {
int poscg = bill2pos(c, ' '); int poscg = bill2pos(c, ' ');
if (poscg < 0) if (poscg < 0)
poscg = set_cg_rec(-1, real2imp(ZERO, 'I'), c, _caus->desc_agg(2), ' '); poscg = set_cg_rec(-1, real2imp(ZERO, 'I'), c, _caus->desc_agg(2), ' ');
TImporto val(real2imp(oldimp, 'I')); const TImporto val(real2imp(oldimp, 'I'));
add_cg_rec(poscg, val); add_cg_rec(poscg, val);
} }
} }
@ -404,10 +368,10 @@ bool TMovimentoPN_VE::add_row_cp_re(int i)
void TMovimentoPN_VE::map_conto_re(TBill& c) void TMovimentoPN_VE::map_conto_re(TBill& c)
{ {
TString key; TString16 key;
key.format("%3d%3d%6ld",c.gruppo(), c.conto(), c.sottoconto()); key.format("%3d%3d%6ld",c.gruppo(), c.conto(), c.sottoconto());
TRectype & rs = (TRectype &) cache().get("MRE", key);
TRectype rs = cache().get("MRE", key);
if (rs.empty()) if (rs.empty())
{ {
key.cut(6); key.cut(6);
@ -3916,6 +3880,7 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc
_caus = NULL; _caus = NULL;
} }
delete _movimento; delete _movimento;
_movimento = NULL;
// Let's free some valuable space // Let's free some valuable space
if (!interattivo) if (!interattivo)

View File

@ -1,9 +1,21 @@
#include "velib04.h" #include "velib04.h"
#include <doc.h>
bool TContabilizzazione_analitica::elabora(const TDocumento& doc_in, const TImporto& totdoc) bool TContabilizzazione_analitica::elabora(const TDocumento& doc, const TImporto& totdoc)
{ {
return false; // Scandisco le righe, saltando descrizioni e sconti
for (int i = 1; i <= doc.physical_rows(); i++)
{
const TRiga_documento& riga = doc[i];
if (riga.is_descrizione() || riga.is_sconto() || riga.is_omaggio())
continue;
const TRectype& anamag = cache().get(LF_ANAMAG, riga.get(RDOC_CODARTMAG));
TBill bill;
if (search_costo_ricavo(bill, riga) != no_error)
break;
}
return good();
} }
bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out, bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
@ -13,7 +25,7 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu
for (int i = 0; doc_in.items(); i++) for (int i = 0; doc_in.items(); i++)
{ {
if (!elabora(doc_in[i], zero)) if (!elabora(doc_in[i], zero))
return false; break;
} }
return true; return good();
} }

View File

@ -58,8 +58,8 @@ TDocumento_mask::TDocumento_mask(const char* td)
listbox.replace_items(keys, descrs); listbox.replace_items(keys, descrs);
// Controlla se deve generare la pagina di analitica // Controlla se deve generare la pagina di analitica
if (dongle().active(CAAUT)) if (dongle().active(CAAUT) || dongle().active(CMAUT))
insert_anal_page(); insert_anal_page();
configura_sheet(*_sheet); configura_sheet(*_sheet);
@ -1049,9 +1049,12 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
m->set_handler(DLG_USER, link_handler); m->set_handler(DLG_USER, link_handler);
} }
const bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT); bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT); // Qualsiasi cosa analitica va bene
if (ca_active && m->win(2) != NULL_WIN) ca_active &= !(riga.is_descrizione() || riga.is_omaggio() || riga.is_sconto()); // Ignora 'ste righe
if (ca_active)
{ {
const int page = m->win2page(m->fld(m->fields()-1).parent()); // Calcolo bastardo dell'ultima pagina
TConfig_anal ini; TConfig_anal ini;
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
const bool use_fsc = fasinfo.levels() > 0; const bool use_fsc = fasinfo.levels() > 0;
@ -1066,20 +1069,20 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
if (level == "CDC") // Crea centro di costo if (level == "CDC") // Crea centro di costo
{ {
if (use_fsc && fasinfo.parent() == LF_CDC) if (use_fsc && fasinfo.parent() == LF_CDC)
insert_anal_fields(*m, 2, LF_FASI, y, dlg, dlgd, false); insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
else else
insert_anal_fields(*m, 2, LF_CDC, y, dlg, dlgd, false); insert_anal_fields(*m, page, LF_CDC, y, dlg, dlgd, false);
} else } else
if (level == "CMS") // Crea commessa if (level == "CMS") // Crea commessa
{ {
if (use_fsc && fasinfo.parent() == LF_COMMESSE) if (use_fsc && fasinfo.parent() == LF_COMMESSE)
insert_anal_fields(*m, 2, LF_FASI, y, dlg, dlgd, false); insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
else else
insert_anal_fields(*m, 2, LF_COMMESSE, y, dlg, dlgd, false); insert_anal_fields(*m, page, LF_COMMESSE, y, dlg, dlgd, false);
} }
} }
if (use_fsc && fasinfo.parent() <= 0) if (use_fsc && fasinfo.parent() <= 0)
insert_anal_fields(*m, 2, LF_FASI, y, dlg, dlgd, false); insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
} }
} }