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:
parent
5b4f9e0e88
commit
f29414712e
@ -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);
|
||||
}
|
||||
|
194
cg/cg4300.cpp
194
cg/cg4300.cpp
@ -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[])
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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");
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user