Patch level : 2.0 604

Files correlati     : cg0.exe cg0500a.msk cg2.exe cg2100s.msk
Ricompilazione Demo : [ ]
Commento            :

CM20044
Causale senza tipo documento e con tipo movimento fattura.
Mi propone la pagina delle scandenze completamente vuota pur avendo
indicato il codice pagamento in testata. La seguente pagina riconosce
il pagamento solo se clicco sul botone di reset.

CM20045
Causale senza tipo documento e con tipo movimento nota di credito.
Mi lascia registrare in prima nota senza portarmi nella gestione partite
per chiudere le eventuali fatture.Come faccio ?
ATTENZIONE: eliminata possibilita' di creare note di credito senza tipo documento

CM20046
Causale senza tipo documento e con tipo movimento fattura o nota di credito.
In prima nota non viene mai controllato il totale della testata presente nel campo
"Voci per saldaconto" con quanto viene indicato poi nelle righe.

CM20047
Causale senza tipo documento e con tipo movimento fattura/nota di credito.
Se inserisco una registrazione con  tipo movimento nota credito e passo
successivamente ad una registrazione con causale con tipo movimento fattura,
pur mettendo il codice di pagamento, la procedura non propone la pagina
delle scadenze.Questo non accade se esco dalla prima nota dopo la
registrazione della nota credito e rientro per registrare la fattura.

CM20048
Inserisco un pagamento a fronte di un movimento nato da causale senza tipo
documento e tipo movimento fattura. Se in testa indico il numero e la data
del documento va tutto bene fino a che non seleziono la rata che intendo
pagare, ma quando do conferma nella finestra del pagamento, la procedura mi
riporta nella maschera della prima nota senza passare da quella delle partite.
Solo cliccando di nuovo su conferma, la procedura mi apre la maschera delle partite.
Se non indico i riferimenti del documento sulla testata della registrazione, va tutto bene.


git-svn-id: svn://10.65.10.50/trunk@11508 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-10-17 08:28:05 +00:00
parent 62f7840f0d
commit 9bfbd8a4ad
9 changed files with 55 additions and 53 deletions

View File

@ -329,7 +329,7 @@ bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
// per vedere, per es., se il registro scritto nella causale esiste ancora
if (k == K_TAB)
{
const TString16 val(f.get());
const TString& val = f.get();
TMask& m = f.mask();
TEdit_field& field_reg = m.efield(F_COD_REG);
@ -356,7 +356,7 @@ bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
}
// Ma davvero esiste il registro ?
const TString16 codreg(field_reg.get());
const TString& codreg = field_reg.get();
if (codreg.not_empty())
{
TRegistro registro(codreg, app().anno_iva());

View File

@ -160,7 +160,6 @@ BEGIN
FIELD TIPOMOV
ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV
ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV
ITEM "2|Nota credito" MESSAGE COPY,F_TIPO_MOV
ITEM "3|Incasso/pagamento " MESSAGE COPY,F_TIPO_MOV
ITEM "5|Insoluto" MESSAGE COPY,F_TIPO_MOV
ITEM "6|Pagamento insoluto" MESSAGE COPY,F_TIPO_MOV

View File

@ -86,7 +86,6 @@ TMask* TPrimanota_application::load_mask(int n)
m->set_handler(F_OCCASEDIT, occas_handler);
m->set_handler(F_SOLAIVA, solaiva_handler);
m->set_handler(F_SHEETIVA, iva_handler);
m->set_handler(F_CODPAG, codpag_handler);
TSheet_field& is = m->sfield(F_SHEETIVA);
is.set_notify(iva_notify);
@ -130,6 +129,7 @@ TMask* TPrimanota_application::load_mask(int n)
m->set_handler(SK_DATACAMBIO, datacambio_handler);
m->set_handler(SK_CAMBIO, cambio_handler);
m->set_handler(SK_TOTDOCVAL, totdocval_handler);
m->set_handler(F_CODPAG, codpag_handler);
TSheet_field& cg = m->sfield(F_SHEETCG);
cg.set_notify(cg_notify);

View File

@ -1,6 +1,6 @@
#include "cg2100p.h"
TOOLBAR "" 0 20 0 2
TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2
BEGIN

View File

@ -2,7 +2,7 @@
#ifndef NO_TOOLBAR
TOOLBAR "" 0 20 0 2
TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2
BEGIN

View File

@ -275,7 +275,7 @@ void TPrimanota_application::set_cgs_imp(int n, const TImporto& imp)
// Legge l'importo della riga n e lo ritorna col segno dovuto
// Certified 100%
TImporto TPrimanota_application::get_cgs_imp(int n)
TImporto TPrimanota_application::get_cgs_imp(int n) const
{
TSheet_field& s = cgs();
@ -524,7 +524,6 @@ HIDDEN bool can_remove(TToken_string& s)
return yes;
}
void TPrimanota_application::cgs_pack()
{
TSheet_field& s = cgs();
@ -555,16 +554,14 @@ void TPrimanota_application::cgs_pack()
bool TPrimanota_application::ci_sono_importi() const
{
TString_array& rows = cgs().rows_array();
for (int i = 0; i < rows.items(); i++)
const int rows = cgs().items();
for (int i = 0; i < rows; i++)
{
TToken_string& r = rows.row(i);
const real dare(r.get(0));
if (dare != ZERO) return TRUE;
const real avere(r.get());
if (avere != ZERO) return TRUE;
const TImporto imp = get_cgs_imp(i);
if (!imp.is_zero())
return true;
}
return FALSE;
return false;
}
real TPrimanota_application::calcola_saldo() const
@ -824,7 +821,8 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
if (fatt || nota)
{
TBill contocf;
if (a.cerca_conto_cf(contocf) < 0)
const int riga_cf = a.cerca_conto_cf(contocf);
if (riga_cf < 0)
{
TString msg(80); msg = TR("Non esiste una riga contabile riferita al ");
msg << (contocf.tipo() == 'C' ? TR("cliente") : TR("fornitore")) << ' ';
@ -2783,10 +2781,10 @@ bool TPrimanota_application::totdoc_handler(TMask_field& f, KEY key)
{
bool ok = TRUE;
TMask& m = f.mask();
TPrimanota_application& a = app();
if (key == K_TAB && f.focusdirty())
{
TPrimanota_application& a = app();
a.gioca_cambi();
if (a.iva() != nessuna_iva)
@ -2820,6 +2818,19 @@ bool TPrimanota_application::totdoc_handler(TMask_field& f, KEY key)
totlit.string(TRUE));
}
}
if (a.iva() == nessuna_iva && a.is_fattura())
{
TBill bill;
const int riga_cf = a.cerca_conto_cf(bill);
if (riga_cf >= 0)
{
TImporto imp = a.get_cgs_imp(riga_cf);
if (imp.valore() != m.get_real(F_TOTALE))
ok = f.error_box(FR("Il totale documento non corrisponde alla riga %d:\ndovrebbe essere %s"),
riga_cf+1, imp.valore().string());
}
}
}
return ok;

View File

@ -306,7 +306,7 @@ public:
TSheet_field& ivas() const;
TSheet_field& pags() const;
TString_array& pag_rows() { return _pag_rows; }
TImporto get_cgs_imp(int n);
TImporto get_cgs_imp(int n) const;
TPrimanota_application();
virtual ~TPrimanota_application() { }

View File

@ -315,33 +315,35 @@ bool TPrimanota_application::tipopag_handler(TMask_field& f, KEY key)
bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
{
bool ok = TRUE;
bool ok = true;
TMask& m = f.mask();
TPrimanota_application& a = app();
const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3
if (key == K_ENTER)
{
if (set_scad && f.get().empty())
if (set_scad && f.empty())
{
f.error_box(TR("Il codice di pagamento e' obbligatorio!"));
ok = f.error_box(TR("Il codice di pagamento e' obbligatorio!"));
const char typ = a.clifo();
const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE);
TLocalisamfile clifo(LF_CLIFO);
clifo.put(CLI_TIPOCF, typ);
clifo.put(CLI_CODCF, cod);
if (clifo.read() == NOERR)
// Nella maschera iva cerco di reperirlo dal cliente
if (m.id2pos(F_CLIENTE) > 0)
{
const TString& cp = clifo.get(CLI_CODPAG);
if (cp.not_empty())
const char typ = a.clifo();
const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE);
TLocalisamfile clifo(LF_CLIFO);
clifo.put(CLI_TIPOCF, typ);
clifo.put(CLI_CODCF, cod);
if (clifo.read() == NOERR)
{
f.set(cp);
key = K_TAB;
}
const TString& cp = clifo.get(CLI_CODPAG);
if (cp.not_empty())
{
f.set(cp);
key = K_TAB;
}
}
}
ok = FALSE;
}
}

View File

@ -23,21 +23,6 @@ const int RIC_SIZE = 512;
const char* const tracciato_AS = "cgtrc.ini";
const char* const tracciato_PC = "cgtrcpc.ini";
HIDDEN TString TEMP;
//ritorna falso se la causale non e' significativa
/*
bool look_causale (const char* codcaus)
{
const TFixed_string caus(codcaus);
if (caus == "000")
return FALSE;
return !caus.blank();
}
*/
bool format_if_zero(TString& field, int len)
{
if (real::is_natural(field))
@ -990,7 +975,7 @@ const char* TTransfer_file::numero_civico(TString& indirizzo)
{
int i,j;
TEMP = "";
TString& TEMP = get_tmp_string();
i = indirizzo.find(','); // Cerca prima la virgola
if (i >= 0) // se la trova restituisce la prima parola dopo di essa
@ -1030,7 +1015,8 @@ const char* TTransfer_file::cerca_comune_cap(const TString& field, const TString
const TString80 dencom(localita);
TString16 cap(field);
TEMP.cut(0);
TString& TEMP = get_tmp_string();
if (cap[2] == '1')
{
cap.cut(3);
@ -5275,8 +5261,10 @@ int pack(bool vis, int num, TString& name)
const char* converti (TString& data_AS400,bool anno_di_quattro)
{
TString& TEMP = get_tmp_string();
if (data_AS400 == "000000" || data_AS400 == "00000000")
return TEMP = "";
return TEMP;
if (anno_di_quattro)
{
@ -5295,6 +5283,8 @@ const char* converti (TString& data_AS400,bool anno_di_quattro)
const char* riconverti (TString& data_PC,bool anno_di_quattro)
{
TString& TEMP = get_tmp_string();
if (anno_di_quattro)
{
TEMP = data_PC.mid(6,4);