Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Spostata in libreria funzione di calcoloformula sconti git-svn-id: svn://10.65.10.50/branches/R_10_00@22488 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5960748309
commit
af6ee45ab8
@ -27,9 +27,10 @@ bool TCond_vendita::set_sconto( const char * exp, bool signal )
|
|||||||
|
|
||||||
real TCond_vendita::normalize_valuta(const real & val, const char * val_rif)
|
real TCond_vendita::normalize_valuta(const real & val, const char * val_rif)
|
||||||
{
|
{
|
||||||
if (val == ZERO)
|
if (val.is_zero())
|
||||||
return ZERO;
|
return ZERO;
|
||||||
// const TString16 firm_val(TCurrency::get_firm_val());
|
|
||||||
|
/*
|
||||||
TString16 valuta_rif(val_rif);
|
TString16 valuta_rif(val_rif);
|
||||||
if (is_firm_value(valuta_rif))
|
if (is_firm_value(valuta_rif))
|
||||||
valuta_rif.cut(0);
|
valuta_rif.cut(0);
|
||||||
@ -47,6 +48,18 @@ real TCond_vendita::normalize_valuta(const real & val, const char * val_rif)
|
|||||||
|
|
||||||
normalized.change_value(valuta, cambio_dest, controeuro_dest);
|
normalized.change_value(valuta, cambio_dest, controeuro_dest);
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
const TString& valuta = _testa->get(F_CODVAL);
|
||||||
|
if (same_values(val_rif, valuta))
|
||||||
|
return val;
|
||||||
|
|
||||||
|
const real cambio = _condv.get_real(CONDV_CAMBIO);
|
||||||
|
TPrice normalized(val, val_rif, cambio, _exchange_contro);
|
||||||
|
|
||||||
|
const real cambio_dest = _testa->get_real(F_CAMBIO);
|
||||||
|
normalized.change_value(valuta, cambio_dest, _exchange_contro);
|
||||||
|
|
||||||
return normalized.get_num();
|
return normalized.get_num();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
|
#include <tabutil.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
|
||||||
|
16
ve/velib.h
16
ve/velib.h
@ -24,11 +24,12 @@ class TViswin;
|
|||||||
#ifndef __VERIG_H
|
#ifndef __VERIG_H
|
||||||
#include "../ve/verig.h"
|
#include "../ve/verig.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __CGLIB01_H
|
#ifndef __CGPAGAME_H
|
||||||
#include "../cg/cglib01.h"
|
#include "../cg/cglib01.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef __CGPAGAME_H
|
#ifndef __CGPAGAME_H
|
||||||
#include "../cg/cgpagame.h"
|
#include "../cg/cgpagame.h"
|
||||||
#endif
|
#endif
|
||||||
@ -53,10 +54,6 @@ class TSelect_color_mask;
|
|||||||
#include <rdoc.h>
|
#include <rdoc.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __CG2101_H
|
|
||||||
#include "../cg/cg2101.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define RIGA_MERCE 'M'
|
#define RIGA_MERCE 'M'
|
||||||
#define RIGA_SPESEDOC 'S'
|
#define RIGA_SPESEDOC 'S'
|
||||||
#define RIGA_PRESTAZIONI 'P'
|
#define RIGA_PRESTAZIONI 'P'
|
||||||
@ -77,11 +74,6 @@ class TArticolo_giacenza;
|
|||||||
class TCache_articoli;
|
class TCache_articoli;
|
||||||
class TSmart_card;
|
class TSmart_card;
|
||||||
|
|
||||||
|
|
||||||
bool is_real_discount(const TString& exp);
|
|
||||||
bool scontoexpr2perc(const char* exp, bool signal , TString& goodexp, real & val_perc );
|
|
||||||
real prezzo_scontato(const real& prezzo, const TString& sconto);
|
|
||||||
|
|
||||||
bool ora_hndl(TMask_field& field, KEY key);
|
bool ora_hndl(TMask_field& field, KEY key);
|
||||||
bool totdoc_hndl(TMask_field& field, KEY key);
|
bool totdoc_hndl(TMask_field& field, KEY key);
|
||||||
bool codcli_hndl(TMask_field& field, KEY key);
|
bool codcli_hndl(TMask_field& field, KEY key);
|
||||||
|
113
ve/velib01.cpp
113
ve/velib01.cpp
@ -243,116 +243,3 @@ real TSpesa_prest::prezzo() const
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_real_discount(const TString& exp)
|
|
||||||
{
|
|
||||||
if (exp.blank())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
TString80 good;
|
|
||||||
real perc;
|
|
||||||
|
|
||||||
return scontoexpr2perc(exp, false , good, perc) && perc != UNO;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool scontoexpr2perc(const char * exp, bool signal , TString & goodexp, real & val_perc )
|
|
||||||
{
|
|
||||||
bool valid = true;
|
|
||||||
|
|
||||||
goodexp.cut(0);
|
|
||||||
// Elimina gli spazi molesti
|
|
||||||
// work.strip_spaces( );
|
|
||||||
val_perc = 1.0;
|
|
||||||
if (exp && *exp)
|
|
||||||
{
|
|
||||||
TString80 num;
|
|
||||||
bool dec = false; // Flag che indica se si attende l'inizio di un numero
|
|
||||||
bool startnum = true; // Flag che indica se siamo all'inizio di un numero
|
|
||||||
int errorchar = ' ';
|
|
||||||
|
|
||||||
// Flag che indica se sono nella parte decimale di un numero
|
|
||||||
for (const char * s = exp; *s && errorchar == ' '; s++)
|
|
||||||
{
|
|
||||||
const char c = *s;
|
|
||||||
switch(c)
|
|
||||||
{
|
|
||||||
case '+':
|
|
||||||
case '-':
|
|
||||||
// Se ero in in numero ...
|
|
||||||
if( !startnum )
|
|
||||||
{
|
|
||||||
// Aggiunge il numero alla sequenza
|
|
||||||
real newval( num );
|
|
||||||
val_perc *= ( CENTO - newval ) / CENTO;
|
|
||||||
goodexp << num;
|
|
||||||
}
|
|
||||||
// Inizia il nuovo numero
|
|
||||||
num = (c == '-') ? "-" : "+";
|
|
||||||
startnum = true;
|
|
||||||
dec = false;
|
|
||||||
break;
|
|
||||||
case '0':
|
|
||||||
case '1':
|
|
||||||
case '2':
|
|
||||||
case '3':
|
|
||||||
case '4':
|
|
||||||
case '5':
|
|
||||||
case '6':
|
|
||||||
case '7':
|
|
||||||
case '8':
|
|
||||||
case '9':
|
|
||||||
num << c;
|
|
||||||
startnum = false;
|
|
||||||
break;
|
|
||||||
case '.':
|
|
||||||
case ',':
|
|
||||||
if(!dec)
|
|
||||||
{
|
|
||||||
if( startnum )
|
|
||||||
num << '0'; // Se occorreva un numero ci metto lo 0
|
|
||||||
num << '.'; // Interpreto la virgola come punto
|
|
||||||
dec = true;
|
|
||||||
startnum = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
errorchar = c; // Se siamo gi` nella parte decimale segnala un errore
|
|
||||||
break;
|
|
||||||
case ' ':
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
errorchar = c;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Controlla la validita`
|
|
||||||
valid = errorchar == ' ';
|
|
||||||
|
|
||||||
if (valid)
|
|
||||||
{
|
|
||||||
// Aggiunge l'ultimo numero preso
|
|
||||||
real lastval( num );
|
|
||||||
val_perc *= ( CENTO - lastval ) / CENTO;
|
|
||||||
goodexp << num; // Assegna la nuova espressione formattata bene
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (signal) // Se richiesto segnala l'errore
|
|
||||||
warning_box( "Espressione di sconto non valida. Errore sul carattere %c.", errorchar);
|
|
||||||
val_perc = UNO; // Azzera la sequenza di percentuali
|
|
||||||
goodexp = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return valid;
|
|
||||||
}
|
|
||||||
|
|
||||||
real prezzo_scontato(const real& prezzo, const TString& sconto)
|
|
||||||
{
|
|
||||||
if (sconto.full())
|
|
||||||
{
|
|
||||||
TString80 exp;
|
|
||||||
real val_sconto;
|
|
||||||
if (scontoexpr2perc(sconto, false , exp, val_sconto) && val_sconto != UNO)
|
|
||||||
return prezzo * val_sconto;
|
|
||||||
}
|
|
||||||
return prezzo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -82,11 +82,11 @@ void TTipo_riga_documento::read_formule()
|
|||||||
_extended_desc_search = ini_get_bool(CONFIG_DITTA, "Main", "CUSTOM_SEARCH_" TOSTRING(LF_ANAMAG), false, 2);
|
_extended_desc_search = ini_get_bool(CONFIG_DITTA, "Main", "CUSTOM_SEARCH_" TOSTRING(LF_ANAMAG), false, 2);
|
||||||
const TString& calcoli = profile.get("CALCOLI");
|
const TString& calcoli = profile.get("CALCOLI");
|
||||||
if (calcoli == "*")
|
if (calcoli == "*")
|
||||||
{
|
{
|
||||||
TTable frr("%FRR");
|
TISAM_recordset frr("USE %FRR");
|
||||||
for (int err = frr.first(); err == NOERR; err = frr.next())
|
for (bool ok = frr.move_first(); ok; ok = frr.move_next())
|
||||||
{
|
{
|
||||||
const TString& formula = frr.get("CODTAB");
|
const TString& formula = frr.get("CODTAB").as_string();
|
||||||
if (_formule.find(formula) < 0)
|
if (_formule.find(formula) < 0)
|
||||||
_formule.add(formula);
|
_formule.add(formula);
|
||||||
}
|
}
|
||||||
@ -1144,7 +1144,7 @@ void TRiga_documento::autosave(TSheet_field& f)
|
|||||||
if (doc().tipo().calcolo_lordo())
|
if (doc().tipo().calcolo_lordo())
|
||||||
{
|
{
|
||||||
put(RDOC_PREZZOL, prezzo);
|
put(RDOC_PREZZOL, prezzo);
|
||||||
iva(codiva).scorpora(prezzo, doc().decimals(TRUE));
|
iva(codiva).scorpora(prezzo, doc().decimals(true));
|
||||||
}
|
}
|
||||||
put( RDOC_PREZZO, prezzo);
|
put( RDOC_PREZZO, prezzo);
|
||||||
put( RDOC_UMQTA, row.get( f.cid2index(FR_UMQTA )) );
|
put( RDOC_UMQTA, row.get( f.cid2index(FR_UMQTA )) );
|
||||||
|
@ -9,6 +9,11 @@
|
|||||||
#include "../ca/calib01.h"
|
#include "../ca/calib01.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CG2101_H
|
||||||
|
#include "../cg/cg2101.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
class TLista_documenti : public TObject // velib04
|
class TLista_documenti : public TObject // velib04
|
||||||
{
|
{
|
||||||
TArray _documenti;
|
TArray _documenti;
|
||||||
|
@ -2709,7 +2709,7 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
|
|||||||
{
|
{
|
||||||
real ti = imposte;
|
real ti = imposte;
|
||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
cambio.lit2val(ti);
|
cambio.eur2val(ti);
|
||||||
totimposte.set_num(ti);
|
totimposte.set_num(ti);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user