Patch level :12.00 1350

Files correlati     : ve0.exe

Commento:
Modifica movimenti contabile e analitici con Shift-F9
This commit is contained in:
Alessandro Bonazzi 2024-09-15 18:06:05 +02:00
parent 01647c540f
commit eb688d517c

View File

@ -28,6 +28,7 @@
#include "../ca/cfcms.h" #include "../ca/cfcms.h"
#include "../ca/commesse.h" #include "../ca/commesse.h"
#include "condv.h" #include "condv.h"
#include "../ca/movana.h"
#include "rcondv.h" #include "rcondv.h"
#include "sconti.h" #include "sconti.h"
@ -969,45 +970,80 @@ bool TDocumento_mask::on_key(KEY key)
warning_box("L'utente %s non puo' modificare questo documento", warning_box("L'utente %s non puo' modificare questo documento",
(const char*)user()); (const char*)user());
return TRUE; return TRUE;
} else }
if (key == K_F7) else
{ if (key == K_SHIFT + K_F9)
const TSheet_field & sf = sfield(F_SHEET); {
const int sel = sf.selected(); TMask m("Aggiornamento movimenti", 1, 80, 9);
if (sel >= 0 && sel < sf.items()) TEdit_field& movcont = m.add_number(101, 0, "Movimento contabile", 1, 1, 6, "B");
{ TEdit_field& movana = m.add_number(102, 0, "Movimento analitico", 1, 3, 6, "B");
TDocumento & d = doc(); TString item;
TRiga_documento & riga = d[sf.selected() + 1];
TOriginal_row_mask sm;
const TRectype * or_row = riga.find_original_rdoc();
if (or_row != NULL) m.add_button(DLG_OK, 0, "Conferma", -12, -3, 10, 2);
m.add_button(DLG_CANCEL, 0, "Annulla", -22, -3, 10, 2);
item << "US " << LF_MOV << '\n';
item << "IN " << MOV_NUMREG << " 101\n";
item << "DI \"" << TR("N.Reg") << "@6\" " << MOV_NUMREG << '\n';
item << "DI \"" << TR("Descrizione") << "@50\" " << MOV_DESCR << '\n';
item << "OU 101 " << MOV_NUMREG << '\n';
item << "CH NO\nEN\n";
m.add_item(movcont, item);
item.cut(0);
item << "US " << LF_MOVANA << '\n';
item << "IN " << MOVANA_NUMREG << " 102\n";
item << "DI \"" << TR("N.Reg") << "@6\"" << MOVANA_NUMREG << '\n';
item << "DI \"" << TR("Descrizione") << "@50\"" << MOVANA_DESCR << '\n';
item << "OU 102 " << MOVANA_NUMREG << '\n';
item << "CH NO\nEN\n";
m.add_item(movana, item);
m.set(101, doc().get_long(DOC_NUMREG));
m.set(102, doc().get_long(DOC_NUMREGCA));
if (m.run() == K_ENTER)
{ {
sm.set(F_DACODNUM, or_row->get(RDOC_CODNUM)); doc().put(DOC_NUMREG, m.get_long(101));
sm.set(F_DAANNO, or_row->get(RDOC_ANNO)); doc().put(DOC_NUMREGCA, m.get_long(102));
sm.set(F_DAPROVV, or_row->get(RDOC_PROVV));
sm.set(F_DANDOC, or_row->get(RDOC_NDOC));
sm.set(F_DANRIGA, or_row->get(RDOC_NRIGA));
sm.disable(-1);
} }
return true;
if (sm.run() == K_ENTER && sm.field(F_DACODNUM).enabled()) }
else
if (key == K_F7)
{ {
TToken_string key(sm.get(F_DACODNUM)); const TSheet_field & sf = sfield(F_SHEET);
key.add(sm.get(F_DAANNO)); const int sel = sf.selected();
key.add(sm.get(F_DAPROVV)); if (sel >= 0 && sel < sf.items())
key.add(sm.get(F_DANDOC)); {
key.add(sm.get(F_DANRIGA)); TDocumento & d = doc();
TRiga_documento & riga = d[sf.selected() + 1];
TOriginal_row_mask sm;
const TRectype * or_row = riga.find_original_rdoc();
const TRectype & or_row_mod = cache().get(LF_RIGHEDOC, key); if (or_row != NULL)
if (or_row_mod.empty()) {
riga.reset_original_rdoc_key(); sm.set(F_DACODNUM, or_row->get(RDOC_CODNUM));
else sm.set(F_DAANNO, or_row->get(RDOC_ANNO));
riga.set_original_rdoc_key(or_row_mod); sm.set(F_DAPROVV, or_row->get(RDOC_PROVV));
sm.set(F_DANDOC, or_row->get(RDOC_NDOC));
sm.set(F_DANRIGA, or_row->get(RDOC_NRIGA));
sm.disable(-1);
}
if (sm.run() == K_ENTER && sm.field(F_DACODNUM).enabled())
{
TToken_string key(sm.get(F_DACODNUM));
key.add(sm.get(F_DAANNO));
key.add(sm.get(F_DAPROVV));
key.add(sm.get(F_DANDOC));
key.add(sm.get(F_DANRIGA));
const TRectype & or_row_mod = cache().get(LF_RIGHEDOC, key);
if (or_row_mod.empty())
riga.reset_original_rdoc_key();
else
riga.set_original_rdoc_key(or_row_mod);
}
}
return true;
} }
}
return true;
}
return TVariable_mask::on_key(key); return TVariable_mask::on_key(key);
} }