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:
parent
30408610e1
commit
29f763621a
@ -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
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <progind.h>
|
||||
#include <sheet.h>
|
||||
|
||||
#include "velib.h"
|
||||
#include "velib05.h"
|
||||
#include "sconti.h"
|
||||
#include "ve1100.h"
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
|
81
ve/velib.h
81
ve/velib.h
@ -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
|
@ -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();
|
||||
|
@ -5,6 +5,10 @@
|
||||
#include "velib.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2101_H
|
||||
#include "../cg/cg2101.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CALIB01_H
|
||||
#include "../ca/calib01.h"
|
||||
#endif
|
||||
|
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "velib.h"
|
||||
#include "velib05.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
//TDocumentoEsteso
|
||||
|
79
ve/velib05.h
Executable file
79
ve/velib05.h
Executable 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
|
Loading…
x
Reference in New Issue
Block a user