Patch level : 2.2

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Migliorata ricerca conto per spese, prestazioni, attrezzature e risorse
Tolto velib05 da vedoc, per cui va aggiunto in ve1 e ve7


git-svn-id: svn://10.65.10.50/trunk@13765 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2006-02-07 12:17:10 +00:00
parent 30408610e1
commit 29f763621a
10 changed files with 119 additions and 130 deletions

View File

@ -11,31 +11,11 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef __INCSTR_H
#include <incstr.h>
#endif
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __URLDEFID_H
#include <urldefid.h>
#endif
#ifndef __SCANNER_H
#include <scanner.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#include <applicat.h>
#include <colmask.h>
#include <config.h>
#include <scanner.h>
#include <progind.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <utility.h>
@ -46,6 +26,8 @@
#include "veini.h"
#include "ve0100.h"
// Significato delle colonne nella tabella _tab0300b
#define B_NOME 0
#define B_MSKTYPE 1

View File

@ -9,7 +9,7 @@
#include <progind.h>
#include <sheet.h>
#include "velib.h"
#include "velib05.h"
#include "sconti.h"
#include "ve1100.h"

View File

@ -9,7 +9,7 @@
#include <statbar.h>
#include "ve1100.h"
#include "velib.h"
#include "velib05.h"
#include <cfven.h>
#include <comuni.h>
@ -868,4 +868,4 @@ int ve1300(int argc, char* argv[])
TReport_doc_app a;
a.run(argc, argv, TR("Stampa documenti"));
return (0);
}
}

View File

@ -3,7 +3,7 @@
#include <printer.h>
#include <progind.h>
#include <sort.h>
#include "velib.h"
#include "velib05.h"
#include "ve7.h"
#include "ve7200.h"

View File

@ -26,17 +26,13 @@ class TViswin;
#endif
#ifndef __PRLIB_H
#include "../pr/prlib.h"
class TProvvigioni_agente;
#endif
#ifndef __MGLIB_H
#include "../mg/mglib.h"
#endif
#ifndef __COLMASK_H
#include <colmask.h>
#endif
#ifndef __DOC_H
#include <doc.h>
#endif
@ -45,8 +41,6 @@ class TViswin;
#include <rdoc.h>
#endif
#include "../cg/cg2101.h"
#define RIGA_MERCE 'M'
#define RIGA_SPESEDOC 'S'
#define RIGA_PRESTAZIONI 'P'
@ -670,7 +664,7 @@ public:
void flush_rows();
TProvvigioni_agente& calc_provvigioni(const bool generata = true);
int write_provvigioni() { return calc_provvigioni().write();}
int write_provvigioni();
char tipo_numerazione() const { return get_char("PROVV"); }
int anno() const { return get_int("ANNO"); }
@ -855,75 +849,4 @@ public:
virtual ~TDocumento_mask();
};
struct dec_parm {
int qta_lit;
int qta_val;
// add other groups here
};
//////////////////////////////////////////////////////////////////////////////////////////////
// classe TDocumentoEsteso: oggetto che ha come finalita' il calcolo dei riepiloghi IVA
//////////////////////////////////////////////////////////////////////////////////////////////
class TDocumentoEsteso : public TDocumento
{
// Parametri del documento
dec_parm _parm; // Parametri per gli arrotondamenti
// membri per il calcolo del riepilogo IVA
int _sum_filter; // Filtro corrente della riga TRiepilogo_iva in corso di stampa (-1 se non ha ancora calcolato la tabella)
bool _sum_selected; // true se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima
TString_array _order_array; // Array di TToken_string contenenti i codici IVA soddisfacenti ad ogni tipo di filtro
TAssoc_array _summary_table; // Array associativo contenete imonibili ed imposte pronte per la stampa;
TArray _summary_array; // Array dove vengono memorizzate le imposte/imponibili per riga
TRiepilogo_iva _sum_current; // Riga corrente del riepilogo
// membri per il calcolo del riepilogo scadenze
TString_array _scadenze_array; // Array che contiene le scadenze ("<data>|<importo>")
int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato)
protected:
virtual int readat(TBaseisamfile& file, TRecnotype nrec, word lockop);
public:
// Funzioni per il riepilogo IVA
const bool summary_compiled() { return _sum_filter > -1; }
void compile_summary(); // Aggiorna la tabella riepilogativa
void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto
void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' true forza il ricalcolo della tabella
void summary_set_next(); // seleziona il prossimo elemento del filtro
const TRiepilogo_iva& sum_current() const { return _sum_current; } // ritorna la riga corrente del filtro corrente
const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente
int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina
const TAssoc_array& summary() const { return _summary_table; }
const TArray& summary_array() const { return _summary_array;}
// Funzioni per il ricalcolo delle scadenze
void scadenze_reset(); // riposiziona sulla prima scadenza
void scadenze_recalc(); // resetta e ricalcola le scadenze
void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze
const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente
int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze
TString_array& scadenze() { return _scadenze_array; }
// restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore:
// 1 = regime normale
// 2 = da ventilare (non usato)
// 4 = esenti
// 8 = non imponibili
// 16 = non soggetti
// pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4.
// per avere esenti + non soggetti il selettore sara' 20 e cosi' via.
real tot_imponibili(byte selector);
// Funzioni per settare i parametri
void set_decimals(dec_parm & parm) { _parm = parm ; }
// void set_condv(TCli_for * cli); // Cambia le condizioni di vendita
TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ;
TDocumentoEsteso (const TRectype & rec) ;
TDocumentoEsteso () ;
virtual ~TDocumentoEsteso();
};
#endif

View File

@ -1375,6 +1375,9 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
return *_provv_agente;
}
int TDocumento::write_provvigioni()
{ return calc_provvigioni().write(); }
bool TDocumento::in_valuta() const
{
const TString& val = valuta();

View File

@ -5,6 +5,10 @@
#include "velib.h"
#endif
#ifndef __CG2101_H
#include "../cg/cg2101.h"
#endif
#ifndef __CALIB01_H
#include "../ca/calib01.h"
#endif

View File

@ -84,28 +84,29 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
}
const int items = _search_seq.items();
TToken_string clifo_key;
TString16 clifo_key;
clifo_key.format("%c|%ld", r.doc().get_char(DOC_TIPOCF), r.doc().get_long(DOC_CODCF));
const TRectype& cli_file = cache().get(LF_CLIFO, clifo_key);
const bool skip_clifo = cli_file.empty();
const bool is_cli = cli_file.get_char(CLI_TIPOCF) != 'F';
const bool is_cli = clifo_key[0] != 'F';
bool skip_art_related = false;
bool skip_clifo = cli_file.empty();
const TCodiceIVA codiva(r.get(RDOC_CODIVA));
const char t = r.tipo().tipo();
switch (t)
{
case 'O': // righe omaggio come articoli spiaccicato identico (avranno imponibile 0)
case 'M': // righe di merce
case RIGA_OMAGGI: // righe omaggio come articoli spiaccicato identico (avranno imponibile 0)
case RIGA_MERCE: // righe di merce
{
// posiziona l'anagrafica sull'articolo specificato sulla ..iga
const TRectype& anamag = cache().get(LF_ANAMAG, r.get(RDOC_CODARTMAG));
if (anamag.empty()) // se non trova l'articolo saltera' anche gmc,smc,rfa.
skip_art_related = true;
TString16 tok;
TString4 tok;
// Scorre la stringa di ricerca
for (int i=0; i < items;i++)
{
@ -119,15 +120,13 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
conto.set(gr,co,so);
if (conto.ok())
break; // se lo trova esce (tutti != 0)
}
else
} else
if (tok == "CA")
{
const TCausale& caus = rdoc2caus(r);
if (caus.IVA2bill(codiva,conto))
break; // se lo trova esce
}
else
} else
if (tok == "AR")
{
if (skip_art_related)
@ -150,8 +149,7 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
}
if (conto.ok())
break;
}
else
} else
if (tok == "GM" || tok == "SM" || tok == "RF")
{
if (skip_art_related)
@ -170,8 +168,7 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
}
if (conto.ok())
break;
}
else
} else
if (tok == "CV" || tok == "CC")
{
const bool is_cve = tok == "CV";
@ -201,11 +198,12 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
}
break; // case 'M'
}
case 'P': // righe prestazione
case 'S': // righe spese
case RIGA_SPESEDOC:
case RIGA_PRESTAZIONI:
case RIGA_ATTREZZATURE:
case RIGA_RISORSE:
{
const TString80 codspesa = r.get(RDOC_CODART);
const TRectype& tab = cache().get(t == 'P' ? "PRS" : "SPP", codspesa);
const TSpesa_prest tab(r.get(RDOC_CODART), t);
if (!tab.empty())
{
int gr = tab.get_int(is_cli ? "I0" : "I3");
@ -221,9 +219,10 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
}
}
if (t == 'P' && !conto.find()) // Cerca il conto nella stringa di ricerca (solo per prestazioni)
// Cerca il conto nella stringa di ricerca (solo per prestazioni)
if (t == RIGA_PRESTAZIONI && !conto.find())
{
TString16 tok;
TString4 tok;
// Scorre la stringa di ricerca ma solo per causale o CLI/FO
for (int i=0; i<items;i++)
{
@ -256,10 +255,9 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
const int rows = r.doc().physical_rows();
int row = -1;
for (int i = 1; row <0 && i <= rows; i++)
for (int i = 1; row < 0 && i <= rows; i++)
{
const char tipo = r.doc()[i].tipo().tipo();
if (tipo != RIGA_DESCRIZIONI && tipo != RIGA_SCONTI && tipo != RIGA_OMAGGI)
row = i;
}
@ -270,10 +268,10 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
__searching = false;
}
}
break; // case 'P','S'
break;
}
case 'C': // righe sconti
case 'D': // righe descrizioni (saltare)
case RIGA_SCONTI:
case RIGA_DESCRIZIONI:
default :
break;
} // end of switch

View File

@ -1,4 +1,4 @@
#include "velib.h"
#include "velib05.h"
/////////////////////////////////////////////////////////////
//TDocumentoEsteso

79
ve/velib05.h Executable file
View File

@ -0,0 +1,79 @@
#ifndef __VELIB05_H
#define __VELIB05_H
#ifndef __VELIB_H
#include "velib.h"
#endif
struct dec_parm {
int qta_lit;
int qta_val;
// add other groups here
};
//////////////////////////////////////////////////////////////////////////////////////////////
// classe TDocumentoEsteso: oggetto che ha come finalita' il calcolo dei riepiloghi IVA
//////////////////////////////////////////////////////////////////////////////////////////////
class TDocumentoEsteso : public TDocumento
{
// Parametri del documento
dec_parm _parm; // Parametri per gli arrotondamenti
// membri per il calcolo del riepilogo IVA
int _sum_filter; // Filtro corrente della riga TRiepilogo_iva in corso di stampa (-1 se non ha ancora calcolato la tabella)
bool _sum_selected; // true se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima
TString_array _order_array; // Array di TToken_string contenenti i codici IVA soddisfacenti ad ogni tipo di filtro
TAssoc_array _summary_table; // Array associativo contenete imonibili ed imposte pronte per la stampa;
TArray _summary_array; // Array dove vengono memorizzate le imposte/imponibili per riga
TRiepilogo_iva _sum_current; // Riga corrente del riepilogo
// membri per il calcolo del riepilogo scadenze
TString_array _scadenze_array; // Array che contiene le scadenze ("<data>|<importo>")
int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato)
protected:
virtual int readat(TBaseisamfile& file, TRecnotype nrec, word lockop);
public:
// Funzioni per il riepilogo IVA
const bool summary_compiled() { return _sum_filter > -1; }
void compile_summary(); // Aggiorna la tabella riepilogativa
void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto
void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' true forza il ricalcolo della tabella
void summary_set_next(); // seleziona il prossimo elemento del filtro
const TRiepilogo_iva& sum_current() const { return _sum_current; } // ritorna la riga corrente del filtro corrente
const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente
int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina
const TAssoc_array& summary() const { return _summary_table; }
const TArray& summary_array() const { return _summary_array;}
// Funzioni per il ricalcolo delle scadenze
void scadenze_reset(); // riposiziona sulla prima scadenza
void scadenze_recalc(); // resetta e ricalcola le scadenze
void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze
const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente
int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze
TString_array& scadenze() { return _scadenze_array; }
// restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore:
// 1 = regime normale
// 2 = da ventilare (non usato)
// 4 = esenti
// 8 = non imponibili
// 16 = non soggetti
// pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4.
// per avere esenti + non soggetti il selettore sara' 20 e cosi' via.
real tot_imponibili(byte selector);
// Funzioni per settare i parametri
void set_decimals(dec_parm & parm) { _parm = parm ; }
// void set_condv(TCli_for * cli); // Cambia le condizioni di vendita
TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ;
TDocumentoEsteso (const TRectype & rec) ;
TDocumentoEsteso () ;
virtual ~TDocumentoEsteso();
};
#endif