Aggiustato comportamento selezione ditte della liquidazione

git-svn-id: svn://10.65.10.50/trunk@361 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-10-13 08:04:02 +00:00
parent 5b4f9e0e88
commit f29414712e
6 changed files with 136 additions and 112 deletions

View File

@ -383,7 +383,7 @@ bool CG0500_application::tipodoc_hndl (TMask_field& f, KEY k)
}
// Ma davvero esiste il registro ?
TString16 codreg=f.mask().get(F_COD_REG);
TString16 codreg(f.mask().get(F_COD_REG));
if (codreg.not_empty())
{
TRegistro registro(codreg, anno_iva());
@ -404,7 +404,8 @@ bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k)
if (k == K_SPACE)
{
app()->MostraCampi(f);
if (f.focusdirty()) app()->fill_sheet(f.mask());
if (f.focusdirty())
app()->fill_sheet(f.mask());
}
return TRUE;
}
@ -513,7 +514,8 @@ bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k)
i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
const TipoIVA ri = grog.iva();
if (i == iva_generica) i = ri;
if (i != ri) {
if (i != ri)
{
return f.warning_box("Tipo documento incompatibile con tipo registro");
i = iva_errata;
}
@ -856,7 +858,8 @@ void CG0500_application::array2sheet()
} else
if (!r->empty_items())
{
if (dfi.not_empty()) {
if (dfi.not_empty())
{
update = TRUE;
riga.add(dfi,0);
}

View File

@ -7,6 +7,9 @@
#include "cg4300.h"
#include "cg4300a.h"
inline CG4300_App& app()
{ return (CG4300_App&)main_app(); }
void CG4300_App::user_create()
{
TProgind pnd(3,"Preparazione archivi\nPrego attendere",
@ -201,27 +204,66 @@ bool CG4300_App::set_print(int n)
return FALSE;
}
long CG4300_App::select_firm_range(long from, long to, wht freq)
{
if (to == 0) to = 99999L;
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string& d = (TToken_string&)_nomiditte[i];
const char vers = d.get_char(2);
if ((freq == mnt && vers == 'T') || (freq == quarter && vers == 'M'))
continue;
const long cod = d.get_long(0);
if (cod >= from && cod <= to)
_selected.set(i);
}
return _selected.ones();
}
bool CG4300_App::to_ditta_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty() || key == K_ENTER)
{
TMask& m = f.mask();
const long from = m.get_long(CG43_FLD_DFR);
const long to = m.get_long(CG43_FLD_DTO);
const wht freq = (wht)m.get_int(CG43_RDB_VERS);
if (from > 0 || to > 0)
{
const long sel = app().select_firm_range(from, to, freq);
m.set(CG43_FLD_SELECTED, sel);
m.reset(CG43_FLD_DFR);
m.reset(CG43_FLD_DTO);
}
}
return TRUE;
}
bool CG4300_App::set_liquidazione()
{
TMask m("cg4300a.msk");
m.set_handler(CG43_FLD_DTO, to_ditta_handler);
m.field(CG43_FLD_SELECTED).set("0");
_selected.reset();
TBit_array selected = _selected;
KEY k;
// stampa abilitata per default
m.set(CG43_CHK_STAMPA,"X");
do {
do
{
k = m.run();
if (k == K_ESC) break;
_what = (wht)atoi(m.get(CG43_RDB_VERS));
_month = atoi(m.get(CG43_LST_MESE));
_what = (wht)m.get_int(CG43_RDB_VERS);
_month = m.get_int(CG43_LST_MESE);
if (_what == all)
{
@ -230,7 +272,7 @@ bool CG4300_App::set_liquidazione()
_what = mnt;
}
else if (_what == quarter)
_month = atoi(m.get(CG43_LST_TRIM));
_month = m.get_int(CG43_LST_TRIM);
_year = m.get(CG43_FLD_ANNO);
_date = m.get(CG43_FLD_DATA);
@ -240,109 +282,81 @@ bool CG4300_App::set_liquidazione()
if (_isprint) printer().setdate(_date);
TString from = m.get(CG43_FLD_DFR);
TString to = m.get(CG43_FLD_DTO);
m.field(CG43_FLD_DFR).set("");
m.field(CG43_FLD_DTO).set("");
// ------------------------------------------------
m.first_focus(k);
long j, cnt, chk; int i;
int i;
if (!from.empty() || !to.empty())
{
chk = 0l;
if (from.empty()) from = "0";
if (to.empty()) to = "999999";
for (i = 0; i < _nomiditte.items(); i++)
{
TToken_string& d = (TToken_string&) _nomiditte[i];
TString16 cod = d.get(0);
TString16 vers = d.get(2);
if ((_what == mnt && vers == "T") ||
(_what == quarter && vers == "M"))
continue;
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
_selected.set(chk++);
}
}
switch(k)
{
case DLG_SELECT:
// build sheet
_ditte->destroy(); chk = 0l;
_ditte->destroy();
for (i = 0; i < _nomiditte.items(); i++)
{
if (_selected[i]) continue;
TToken_string& d = (TToken_string&) _nomiditte[i];
TString16 cod = d.get(0);
TString16 vers = d.get(2);
if ((_what == mnt && vers == "T") ||
(_what == quarter && vers == "M"))
continue;
_ditte->add(d);
// check
if (!from.empty() || !to.empty())
{
if (from.empty()) from = "0";
if (to.empty()) to = "999999";
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
{
_ditte->check(chk);
_selected.set(chk++);
}
}
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
const char vers = d->get_char(2);
if ((_what == mnt && vers == 'T') || (_what == quarter && vers == 'M'))
continue;
d->insert(" |", 0);
const long pos = _ditte->add(d);
if (_selected[i]) _ditte->check(pos);
}
// seleziona e aggiungi alle gia' selezionate
if (_ditte->run() == K_ENTER)
{
cnt = 0;
for (j = 0l; j < _n_ditte; j++)
// seleziona e aggiungi alle gia' selezionate
if (_ditte->run() == K_ENTER)
{
if (_selected[j]) continue;
if (_ditte->checked(cnt++))
selected.set(j);
for (long j = 0l; j < _ditte->items(); j++)
{
const long cod = _ditte->row(j).get_long(1);
for (int d = 0; d < _nomiditte.items(); d++)
{
const long firm = ((TToken_string&)_nomiditte[d]).get_long(0);
if (firm == cod)
{
_selected.set(d, _ditte->checked(j));
break;
}
}
#ifdef DBG
if (d >= _nomiditte.items())
yesnofatal_box("Non ritrovo piu' la ditta %ld", cod);
#endif
}
}
_selected |= selected;
selected.reset();
m.set(CG43_FLD_SELECTED, _selected.ones());
break;
case CG43_BUT_ANN:
_selected.reset();
m.reset(CG43_FLD_SELECTED);
break;
/*
case CG43_BUT_CHK:
{
_ditte->destroy();
for (i = 0; i < _nomiditte.items(); i++)
{
TToken_string& d = (TToken_string&)_nomiditte[i];
_ditte->add(d);
if (_selected[i]) _ditte->check(i);
}
_ditte->disable_check();
_ditte->run();
_ditte->enable_check();
}
break;
*/
}
m.field(CG43_FLD_SELECTED).set(format("%ld",(long)_selected.ones()));
break;
case CG43_BUT_ANN:
_selected.reset();
m.field(CG43_FLD_SELECTED).set("0");
break;
case CG43_BUT_CHK:
{
_ditte->destroy();
for (i = 0; i < _nomiditte.items(); i++)
{
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
_ditte->add(d);
if (_selected[i]) _ditte->check(i);
}
_ditte->disable_check();
_ditte->run();
_ditte->enable_check();
}
break;
}
}
while (k != K_ENTER && k != K_ESC);
}
while (k != K_ENTER && k != K_ESC);
return k == K_ENTER;
return k == K_ENTER;
}
int cg4300(int argc, char* argv[])

View File

@ -249,6 +249,10 @@ class CG4300_App : public TPrintapp
TRecfield* _del_mese;
TRecfield* _del_tipo;
protected:
long select_firm_range(long from, long to, wht freq);
static bool to_ditta_handler(TMask_field& f, KEY key);
public:
virtual void user_create();

View File

@ -21,10 +21,11 @@ END
NUMBER CG43_FLD_DFR 6
BEGIN
PROMPT 24 2 "Da codice "
FLAGS "UR"
HELP "Immettere codice ditta di partenza per la selezione"
USE LF_NDITTE KEY 1
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale " RAGSOC
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Vers" FREQVIVA
OUTPUT CG43_FLD_DFR CODDITTA
END
@ -32,10 +33,11 @@ END
NUMBER CG43_FLD_DTO 6
BEGIN
PROMPT 24 3 "A codice "
FLAGS "UR"
HELP "Immettere codice ditta di fine selezione"
COPY USE CG43_FLD_DFR
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale " RAGSOC
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Vers" FREQVIVA
OUTPUT CG43_FLD_DTO CODDITTA
END
@ -46,24 +48,25 @@ BEGIN
FLAGS "D"
END
BUTTON DLG_SELECT 8
BUTTON DLG_SELECT 10 2
BEGIN
PROMPT 50 2 "Selezione"
PROMPT 48 2 "~Selezione"
MESSAGE EXIT, DLG_SELECT
END
BUTTON CG43_BUT_ANN 8
BUTTON CG43_BUT_ANN 10
BEGIN
PROMPT 50 3 "Annulla"
PROMPT 48 4 "A~zzera"
MESSAGE EXIT,CG43_BUT_ANN
END
/*
BUTTON CG43_BUT_CHK 8
BEGIN
PROMPT 50 4 "Verifica"
MESSAGE EXIT,CG43_BUT_CHK
END
*/
NUMBER CG43_FLD_ANNO 4
BEGIN

View File

@ -75,8 +75,8 @@ bool CG4300_App::update_firm(int month, bool recalc)
{
do
{
TString codatt = _nditte->curr(LF_ATTIV).get("CODATT");
TString desatt = _nditte->curr(LF_ATTIV).get("DESCR");
TString16 codatt = _nditte->curr(LF_ATTIV).get("CODATT");
TString80 desatt = _nditte->curr(LF_ATTIV).get("DESCR");
// attivita' mista: ce ne sono in realta' due
_mixed = _nditte->curr().get_bool("FLIVA11Q");

View File

@ -316,19 +316,19 @@ bool CG4300_App::look_del(int month, int type, bool create)
bool CG4300_App::look_lia(bool create, int year)
{
if (year == 0) year = atoi(_year);
TString y(4); y << year;
TString16 y; y << year;
_lia->zero();
_lia->put("CODTAB", y);
_lia->read();
bool ok = _lia->good();
const bool ok = _lia->good();
if (!ok && create)
{
_lia->zero();
_lia->put("CODTAB", y);
_lia->put("S7", _nditte->curr().get("FREQVIVA"));
_lia->write();
}
{
_lia->zero();
_lia->put("CODTAB", y);
_lia->put("S7", _nditte->curr().get("FREQVIVA"));
_lia->write();
}
return ok;
}
@ -351,7 +351,7 @@ real CG4300_App::credito_prec(int month)
if (_lia->status() == NOERR)
{
c = _lia->get_real("R0");
if (!c.iszero()) return c;
if (!c.is_zero()) return c;
}
int yr = atoi(_year) - 1;
_lim->zero();