Supporto per IVAXCASSA in fatturazione

Aggiunta dotazione iniziale oltre che odierna e temporanea in Genrazione Documenti di trasporto

git-svn-id: svn://10.65.10.50/branches/R_10_00@22765 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-12-04 16:46:19 +00:00
parent d896fd055b
commit 6dc48175f8
2 changed files with 49 additions and 37 deletions

View File

@ -1,7 +1,5 @@
#include <progind.h>
#include <config.h>
#include <dongle.h> #include <dongle.h>
#include <modaut.h> #include <progind.h>
#include <reputils.h> #include <reputils.h>
#include <utility.h> #include <utility.h>
@ -10,17 +8,15 @@
#include "../pr/agenti.h" #include "../pr/agenti.h"
#include "../pr/percprov.h" #include "../pr/percprov.h"
#include "clifo.h"
#include "../cg/cfban.h" #include "../cg/cfban.h"
#include "../cg/cglib03.h"
#include "clifo.h"
#include "comuni.h" #include "comuni.h"
#include "cfven.h" #include "cfven.h"
#include "lvcondv.h" #include "lvcondv.h"
#include "lvrcondv.h" #include "lvrcondv.h"
#include "doc.h"
#include "rdoc.h"
#include "../db/dblib.h"
#include "../mg/mglib.h"
#include "../ve/ve6200.h" #include "../ve/ve6200.h"
#include "../ve/ve6200a.h" #include "../ve/ve6200a.h"
@ -183,7 +179,6 @@ bool TFatturazione_lavanderie::doc_raggruppabili(const TDocumento& doc_in, const
if (doc_in.ha_riga_esenzione() != doc_out.ha_riga_esenzione()) if (doc_in.ha_riga_esenzione() != doc_out.ha_riga_esenzione())
return false; return false;
bool ok = true; bool ok = true;
TString campo;
//scorro tutti i campi contenuti nella TToken_string //scorro tutti i campi contenuti nella TToken_string
//se sto controllando i campi CODABI e CODCAB, allora il controllo //se sto controllando i campi CODABI e CODCAB, allora il controllo
@ -197,7 +192,7 @@ bool TFatturazione_lavanderie::doc_raggruppabili(const TDocumento& doc_in, const
} }
else else
{ {
campo = doc_in.get(c); const TString& campo = doc_in.get(c);
ok &= campo == doc_out.get(c); ok &= campo == doc_out.get(c);
} }
} }
@ -245,24 +240,21 @@ void TFatturazione_lavanderie::pre_process_input(TLista_documenti& doc_in)
TDocumento& doc = doc_in[id]; TDocumento& doc = doc_in[id];
const int rows = doc.physical_rows(); const int rows = doc.physical_rows();
TString str_real;
for (int i = 1; i <= rows; i++) for (int i = 1; i <= rows; i++)
{ {
TRiga_documento & row = doc[i]; TRiga_documento& row = doc[i];
TString str_real = row.get(RDOC_QTAREALE); str_real = row.get(RDOC_QTAREALE);
if (str_real.full()) if (str_real.full())
{ {
real qta_real(decode(str_real)); const real qta_real(decode(str_real));
row.put(RDOC_QTA, qta_real); row.put(RDOC_QTA, qta_real);
row.zero(RDOC_QTAREALE); row.zero(RDOC_QTAREALE);
} }
str_real = row.get(RDOC_QTARITREALE); str_real = row.get(RDOC_QTARITREALE);
if (str_real.full()) if (str_real.full())
{ {
real qta_real(decode(str_real)); const real qta_real(decode(str_real));
row.put(RDOC_QTAGG1, qta_real); row.put(RDOC_QTAGG1, qta_real);
row.zero(RDOC_QTARITREALE); row.zero(RDOC_QTARITREALE);
} }
@ -515,10 +507,11 @@ int TFatturazione_lavanderie::write_fatt_ragg(const bool solotot)
//e/o eliminare quelle inutili e/o aggiungere quelle per il ciclaggio su 2 linee //e/o eliminare quelle inutili e/o aggiungere quelle per il ciclaggio su 2 linee
void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_documenti& doc_in) void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_documenti& doc_in)
{ {
bool use_indsp = ini_get_bool(CONFIG_DITTA, "mg", "MOV_INDSPED"); const bool use_indsp = ini_get_bool(CONFIG_DITTA, "mg", "MOV_INDSPED");
//scorro tutti i documenti di output generati precedentemente const bool riftest = ini_get_bool(CONFIG_DITTA, "lv", "RifTest");
for (int id = 0; id < doc_out.items(); id++) //scorro tutti i documenti di output generati precedentemente
for (int id = 0; id < doc_out.items(); id++)
{ {
//instanzio il documento e recupero le variabili di interesse per recuperare //instanzio il documento e recupero le variabili di interesse per recuperare
//il contratto del cliente in questione //il contratto del cliente in questione
@ -532,22 +525,33 @@ void TFatturazione_lavanderie::post_process(TLista_documenti& doc_out, TLista_do
bool fixdotin = false; bool fixdotin = false;
bool elcons = contr.get_bool(LVCONDV_ELCONS); bool elcons = contr.get_bool(LVCONDV_ELCONS);
bool rifbol = contr.get_bool(LVCONDV_RIFBOL); bool rifbol = contr.get_bool(LVCONDV_RIFBOL);
bool riftest = ini_get_bool(CONFIG_DITTA, "lv", "RifTest");
bool liqdiff = doc.clifor().get_int(CLI_ALLEG) == 7 && doc.clifor().vendite().get_bool(CFV_FATTSOSP); const int alleg = doc.clifor().get_int(CLI_ALLEG);
const bool liqdiff = alleg == 7 && doc.clifor().vendite().get_bool(CFV_FATTSOSP);
real consvconv; real consvconv;
real impvconv; real impvconv;
TAssoc_array nolo_computed; TAssoc_array nolo_computed;
doc.zero(DOC_LIQDIFF);
doc.zero(DOC_IVAXCASSA);
if (liqdiff) if (liqdiff)
{
doc.put(DOC_LIQDIFF, "X"); doc.put(DOC_LIQDIFF, "X");
}
else else
doc.zero(DOC_LIQDIFF); {
if ((alleg < 5 || alleg == 7) && doc.clifor().get(CLI_PAIV).full() &&
gestione_IVAxCassa(doc.get_date(DOC_DATADOC)))
{
doc.put(DOC_IVAXCASSA, "X");
}
}
if (doc.physical_rows() > 0 && doc[1].is_descrizione()) if (doc.physical_rows() > 0 && doc[1].is_descrizione())
{ {
if (elcons) if (elcons)
{ {
TRiga_documento& rout = doc[1]; TRiga_documento& rout = doc[1];
rout.put(RDOC_DESCR, "COME DA ELENCO CONSEGNE"); rout.put(RDOC_DESCR, TR("COME DA ELENCO CONSEGNE"));
rout.put(RDOC_DESCLUNGA, false); rout.put(RDOC_DESCLUNGA, false);
rout.put(RDOC_DESCEST, ""); rout.put(RDOC_DESCEST, "");
} }
@ -1454,7 +1458,7 @@ void TFatturazione_lavanderie::campi_raggruppamento_righe(TToken_string& campi_r
if (riga_uguale(2)) if (riga_uguale(2))
{ {
const int tipoprezzo = ini_get_int(CONFIG_DITTA, "lv", "TipoPr"); const int tipoprezzo = ini_get_int(CONFIG_DITTA, "lv", "TipoPr");
if(tipoprezzo == 0) if (tipoprezzo == 0)
campi_riga.add(RDOC_SCONTO); campi_riga.add(RDOC_SCONTO);
else else
campi_riga.add(RDOC_PREZZO"|"RDOC_SCONTO); campi_riga.add(RDOC_PREZZO"|"RDOC_SCONTO);

View File

@ -543,9 +543,6 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
} }
//gestione campi dotazione odierna e dotazione temporanea //gestione campi dotazione odierna e dotazione temporanea
if(codart.left(1) == "N")
int cazzone = 1;
TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', codcf, indsped); TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', codcf, indsped);
//fisso l'anno esercizio //fisso l'anno esercizio
TEsercizi_contabili& esc = esercizi(); TEsercizi_contabili& esc = esercizi();
@ -553,19 +550,25 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
//estraggo il record corrispondente su LF_CLIFOGIAC //estraggo il record corrispondente su LF_CLIFOGIAC
const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc); const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc);
real dotod = reclav.get_real(CLIFOGIAC_DOTOD); real dotod, dotmp, dotin;
real dotmp = reclav.get_real(CLIFOGIAC_DOTTM); if (reclav.empty())
if(reclav.empty())
{ {
TArticolo_lavanderie& artrec1 = cached_article_laundry(codart, 'C', codcf, 0); TArticolo_lavanderie& artrec1 = cached_article_laundry(codart, 'C', codcf, 0);
const TRecmag_lavanderie& reclav1 = artrec1.find_rec(last_esc); const TRecmag_lavanderie& reclav1 = artrec1.find_rec(last_esc);
dotod = reclav1.get_real(CLIFOGIAC_DOTOD); dotod = reclav1.get_real(CLIFOGIAC_DOTOD);
dotmp = reclav1.get_real(CLIFOGIAC_DOTTM); dotmp = reclav1.get_real(CLIFOGIAC_DOTTM);
dotin = reclav1.get_real(CLIFOGIAC_DOTIN);
}
else
{
dotod = reclav.get_real(CLIFOGIAC_DOTOD);
dotmp = reclav.get_real(CLIFOGIAC_DOTTM);
dotin = reclav.get_real(CLIFOGIAC_DOTIN);
} }
rdoc.put("DOTOD", dotod); rdoc.put("DOTOD", dotod);
rdoc.put("DOTMP", dotmp); rdoc.put("DOTMP", dotmp);
rdoc.put("DOTIN", dotin);
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino //elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
const TString& sconto = rcont.get(LVRCONDV_SCONTPERC).as_string(); const TString& sconto = rcont.get(LVRCONDV_SCONTPERC).as_string();
@ -586,7 +589,6 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
for (int i = 1; i <= righe; i++) for (int i = 1; i <= righe; i++)
{ {
TRiga_documento& r = doc[i]; TRiga_documento& r = doc[i];
doc[i].autoload(sheet); doc[i].autoload(sheet);
sheet.check_row(i - 1, 0x3); sheet.check_row(i - 1, 0x3);
} }
@ -645,7 +647,7 @@ bool TGestione_bolle_msk::lv_ritirato_handler(TMask_field& f, KEY k)
real dotod = magcli.get_long(CLIFOGIAC_DOTOD); //segnalazione Tassan mail 05/04/2011 ore 17:08 real dotod = magcli.get_long(CLIFOGIAC_DOTOD); //segnalazione Tassan mail 05/04/2011 ore 17:08
if (ritirato > dotod && f.dirty() && dotin > 0 && dotod > 0) //accordi da Tassan in data 06/04/2011 if (ritirato > dotod && f.dirty() && dotin > 0 && dotod > 0) //accordi da Tassan in data 06/04/2011
warning_box(TR("ATTENZIONE: stai ritirando un quantitativo maggiore della dotazione!")); warning_box(TR("ATTENZIONE: si sta ritirando un quantitativo maggiore della dotazione!"));
TDocumento& doc = dmask.doc(); TDocumento& doc = dmask.doc();
@ -768,10 +770,13 @@ bool TGestione_bolle_msk::lv_codart_handler(TMask_field& f, KEY k)
const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc); const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc);
const real dotod = reclav.get_real(CLIFOGIAC_DOTOD); const real dotod = reclav.get_real(CLIFOGIAC_DOTOD);
const real dotmp = reclav.get_real(CLIFOGIAC_DOTTM); // const real dotmp = reclav.get_real(CLIFOGIAC_DOTTM);
const real dotin = reclav.get_real(CLIFOGIAC_DOTIN);
rdoc.put("DOTOD", dotod); rdoc.put("DOTOD", dotod);
msk.set(FR_JOLLY1, dotod); msk.set(FR_JOLLY1, dotod);
rdoc.put("DOTIN", dotin);
} }
if (rdoc.get(RDOC_CODAGG1).empty()) if (rdoc.get(RDOC_CODAGG1).empty())
@ -1470,6 +1475,8 @@ int TGestione_bolle_app::read(TMask& m)
TDocumento& d = mask.doc(); TDocumento& d = mask.doc();
_giac.reset(d); _giac.reset(d);
// A che cavolo serve?
FOR_EACH_DOC_ROW_BACK(d, r, row) FOR_EACH_DOC_ROW_BACK(d, r, row)
{ {
TRiga_documento& rdoc = (TRiga_documento&)*row; TRiga_documento& rdoc = (TRiga_documento&)*row;
@ -1477,6 +1484,7 @@ int TGestione_bolle_app::read(TMask& m)
//real dotod = _giac.giac_att(rdoc, true); //real dotod = _giac.giac_att(rdoc, true);
//real dotmp = _giac.giac_att(rdoc, false); //real dotmp = _giac.giac_att(rdoc, false);
} }
mask.doc2mask(); mask.doc2mask();
mask.reset_autoselect(); mask.reset_autoselect();
} }