Patch level : 2.0 242
Files correlati : ef0.exe Ricompilazione Demo : [ ] Commento : PG200007 Presupposti: fattura accompagnatoria passiva da ordine fornitore: creato tipo documento fattura accompagnatoria con causale di magazzino di carico merce da ordine,utilizzo dello stesso numeratore delle fatture da d.d.t.ed elaborazione differita di tipo "consegna ordini" che parte dall'ordine fornitore ed arriva alla fattura (stato 1).La funzione di "elabora" dai documenti interattivi (ordine ) pur riscontrando che le elaborazioni sono due non modifica la destinazione mentre per il documento interattivo (fattura) non è presente nessun tipo di elaborazione git-svn-id: svn://10.65.10.50/trunk@11356 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8ee4750f53
commit
ff6d6fbbcb
@ -153,7 +153,7 @@ BEGIN
|
|||||||
DRIVENBY F_CODVAL
|
DRIVENBY F_CODVAL
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_IMPBUTTON 9 2
|
BUTTON F_IMPBUTTON 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 50 7 "~Selezione"
|
PROMPT 50 7 "~Selezione"
|
||||||
PICTURE BMP_SELECT
|
PICTURE BMP_SELECT
|
||||||
|
643
ef/ef0a00.cpp
643
ef/ef0a00.cpp
@ -1,11 +1,10 @@
|
|||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <currency.h>
|
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
#include <execp.h>
|
#include <execp.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <recarray.h>
|
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
#include <clifo.h>
|
#include <clifo.h>
|
||||||
#include <cfven.h>
|
#include <cfven.h>
|
||||||
@ -16,65 +15,112 @@
|
|||||||
#include "ef0.h"
|
#include "ef0.h"
|
||||||
#include "ef0A00a.h"
|
#include "ef0A00a.h"
|
||||||
|
|
||||||
#include <clifo.h>
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Main Mask
|
// Main Mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TPE_mask : public TAutomask
|
class TPE_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
TRelation* _rel;
|
||||||
|
bool _spork;
|
||||||
|
bool _is_new;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
|
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool calc_residual(const TRiga_scadenze& scad,
|
bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag,
|
||||||
real& impres, real& imppag,
|
char& accsal, int& rdist, int& reff, bool& partially_unassigned, int& tipopag) const;
|
||||||
char& accsal, int& rdist, int& reff) const;
|
bool fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force = FALSE);
|
||||||
bool fill_rate();
|
bool fill_rate();
|
||||||
|
int insert_row(const TToken_string& row);
|
||||||
|
bool fill_distinta(bool clear_all = FALSE);
|
||||||
|
void sort_sheet();
|
||||||
void update_total();
|
void update_total();
|
||||||
|
|
||||||
TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf,
|
TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf,
|
||||||
int& rigadist, int& rigaeff) const;
|
int& rigadist, int& rigaeff) const;
|
||||||
|
long get_free_num() const;
|
||||||
void save_rate();
|
void save_rate();
|
||||||
void print();
|
void print();
|
||||||
|
|
||||||
TPE_mask() : TAutomask("ef0A00a") { }
|
TPE_mask();
|
||||||
virtual ~TPE_mask() { }
|
virtual ~TPE_mask();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Calcola il residuo di una rata tenendo conto anche degli eventuali
|
// Calcola il residuo di una rata tenendo conto anche degli eventuali
|
||||||
// effetti non ancora contabilizzati
|
// effetti non ancora contabilizzati
|
||||||
bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
|
bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
|
||||||
real& impres, real& imppag,
|
real& impres, real& imppag,
|
||||||
char& accsal, int& rdist, int& reff) const
|
char& accsal, int& rdist, int& reff,
|
||||||
|
bool& partially_unassigned, int& tipopag) const
|
||||||
{
|
{
|
||||||
TRelation rel(LF_REFFETTI);
|
tipopag = scad.get_int(SCAD_TIPOPAG);
|
||||||
rel.add(LF_EFFETTI, "NPROGTR==NPROGTR");
|
const bool valuta = scad.in_valuta();
|
||||||
|
const char tipocf = scad.get_char(SCAD_TIPOCF);
|
||||||
|
|
||||||
TRectype& filter = rel.curr();
|
TImporto importo = scad.residuo(TRUE);
|
||||||
|
importo.normalize(tipocf == 'C' ? 'D' : 'A');
|
||||||
|
|
||||||
|
impres = importo.valore();
|
||||||
|
imppag = ZERO;
|
||||||
|
accsal = 'A';
|
||||||
|
rdist = reff = 0;
|
||||||
|
partially_unassigned = FALSE;
|
||||||
|
|
||||||
|
// Contolla se ci sono pagamenti non assegnati da gestire
|
||||||
|
const TRiga_partite& fattura = scad.riga();
|
||||||
|
TPartita& partita = fattura.partita();
|
||||||
|
const TRecord_array& unassigned = partita.unassigned();
|
||||||
|
if (unassigned.rows() > 0)
|
||||||
|
{
|
||||||
|
real tot_unassigned; // Totale pagamenti non assegnati
|
||||||
|
for (int u = unassigned.last_row(); u > 0; u = unassigned.pred_row(u))
|
||||||
|
{
|
||||||
|
const real imp = unassigned[u].get(valuta ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO);
|
||||||
|
tot_unassigned += imp;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scala non assegnati dalle rate precedenti ancora aperte
|
||||||
|
const int nrata = scad.get_int(SCAD_NRATA);
|
||||||
|
for (int r = 1; r < nrata; r++)
|
||||||
|
{
|
||||||
|
if (!fattura.rata(r).chiusa())
|
||||||
|
{
|
||||||
|
TImporto res = fattura.rata(r).residuo(TRUE);
|
||||||
|
tot_unassigned -= res.valore();
|
||||||
|
if (tot_unassigned <= ZERO)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Scala non assegnati dalla rata corrente
|
||||||
|
if (tot_unassigned > ZERO)
|
||||||
|
{
|
||||||
|
if (tot_unassigned >= impres)
|
||||||
|
impres = ZERO;
|
||||||
|
else
|
||||||
|
impres -= tot_unassigned;
|
||||||
|
partially_unassigned = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Se c'e' ancora un residuo calcola totale pagato con effetti
|
||||||
|
if (!impres.is_zero())
|
||||||
|
{
|
||||||
|
TRectype& filter = _rel->curr();
|
||||||
const char* field[] = { SCAD_ANNO, SCAD_NUMPART, SCAD_NRIGA, SCAD_NRATA, NULL };
|
const char* field[] = { SCAD_ANNO, SCAD_NUMPART, SCAD_NRIGA, SCAD_NRATA, NULL };
|
||||||
for (int i = 0; field[i]; i++)
|
for (int i = 0; field[i]; i++)
|
||||||
filter.put(field[i], scad.get(field[i]));
|
filter.put(field[i], scad.get(field[i]));
|
||||||
TCursor cur(&rel, "", 2, &filter, &filter);
|
TCursor cur(_rel, "", 2, &filter, &filter); // Elenco effetti su questa rata
|
||||||
|
|
||||||
const char tipocf = scad.get_char(SCAD_TIPOCF);
|
|
||||||
const long codcf = scad.get_long(SCAD_SOTTOCONTO);
|
const long codcf = scad.get_long(SCAD_SOTTOCONTO);
|
||||||
TString expr;
|
TString80 expr;
|
||||||
expr << '(' << LF_EFFETTI << "->EFFCONT!=\"X\")&&";
|
expr << '(' << LF_EFFETTI << "->EFFCONT!=\"X\")&&";
|
||||||
expr << '(' << LF_EFFETTI << "->TIPOCF==\"" << tipocf << "\")&&";
|
expr << '(' << LF_EFFETTI << "->TIPOCF==\"" << tipocf << "\")&&";
|
||||||
expr << '(' << LF_EFFETTI << "->CODCF==\"" << codcf << "\")";
|
expr << '(' << LF_EFFETTI << "->CODCF==\"" << codcf << "\")";
|
||||||
cur.setfilter(expr, TRUE);
|
cur.setfilter(expr, TRUE);
|
||||||
|
|
||||||
const long items = cur.items();
|
const long items = cur.items();
|
||||||
const bool valuta = scad.in_valuta();
|
|
||||||
|
|
||||||
impres = scad.residuo(TRUE).valore();
|
|
||||||
imppag = ZERO;
|
|
||||||
accsal = 'A';
|
|
||||||
rdist = reff = 0;
|
|
||||||
|
|
||||||
if (items > 0L)
|
if (items > 0L)
|
||||||
{
|
{
|
||||||
cur.freeze();
|
cur.freeze();
|
||||||
@ -89,6 +135,7 @@ bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
|
|||||||
reff = riga.get_int(REFF_NRIGATR);
|
reff = riga.get_int(REFF_NRIGATR);
|
||||||
accsal = riga.get_char(REFF_ACCSAL);
|
accsal = riga.get_char(REFF_ACCSAL);
|
||||||
imppag += riga.get_real(valuta ? REFF_IMPORTOVAL : REFF_IMPORTO);
|
imppag += riga.get_real(valuta ? REFF_IMPORTOVAL : REFF_IMPORTO);
|
||||||
|
tipopag = effe.get_int(EFF_TIPOPAG);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -101,18 +148,152 @@ bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return !impres.is_zero();
|
return !impres.is_zero();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPE_mask::update_total()
|
void TPE_mask::update_total()
|
||||||
{
|
{
|
||||||
real tot, val;
|
real tot;
|
||||||
TSheet_field& s = sfield(F_SHEET);
|
TSheet_field& s = sfield(F_SHEET);
|
||||||
const int postot = s.cid2index(F_IMPORTO);
|
const int postot = s.cid2index(F_IMPORTO);
|
||||||
FOR_EACH_SHEET_ROW_BACK(s, r, row)
|
FOR_EACH_SHEET_ROW_BACK(s, r, row)
|
||||||
tot += real(row->get(postot));
|
tot += real(row->get(postot));
|
||||||
set(F_TOTAL, tot);
|
set(F_TOTAL, tot);
|
||||||
|
if (tot==ZERO)
|
||||||
|
disable(DLG_SAVEREC);
|
||||||
|
else
|
||||||
|
enable(DLG_SAVEREC);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TPE_mask::fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force)
|
||||||
|
{
|
||||||
|
const int tipopageff = get_int(F_TIPOPAGEFF);
|
||||||
|
int tipopag;
|
||||||
|
real impres, imppag;
|
||||||
|
char accsal; int rigadist, rigaeff;
|
||||||
|
row.cut(0);
|
||||||
|
bool ok = calc_residual(rs, impres, imppag, accsal, rigadist, rigaeff, partially_unassigned, tipopag) || force;
|
||||||
|
ok = (ok && (tipopag == tipopageff || tipopageff == 0));
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
row.add(imppag.string());
|
||||||
|
row.add(accsal);
|
||||||
|
row.add(impres.string());
|
||||||
|
row.add(rs.get_long(SCAD_SOTTOCONTO));
|
||||||
|
TString16 cod; cod << rs.get_char(SCAD_TIPOCF) << '|' << rs.get_long(SCAD_SOTTOCONTO);
|
||||||
|
row.add(cache().get(LF_CLIFO, cod, CLI_RAGSOC));
|
||||||
|
row.add(rs.get(SCAD_ANNO));
|
||||||
|
row.add(rs.get(SCAD_NUMPART));
|
||||||
|
row.add(rs.get(SCAD_NRIGA));
|
||||||
|
row.add(rs.get(SCAD_NRATA));
|
||||||
|
row.add(rs.get(SCAD_DATASCAD));
|
||||||
|
row.add(rigadist);
|
||||||
|
row.add(rigaeff);
|
||||||
|
switch (tipopag)
|
||||||
|
{
|
||||||
|
case 1:row.add("Rimessa Diretta"); break;
|
||||||
|
case 2:row.add("Tratta"); break;
|
||||||
|
case 3:row.add("Ricevuta Bancaria"); break;
|
||||||
|
case 4:row.add("Cessione"); break;
|
||||||
|
case 5:row.add("Pagherò"); break;
|
||||||
|
case 6:row.add("Lettera di credito"); break;
|
||||||
|
case 7:row.add("Tratta accettata"); break;
|
||||||
|
case 8:row.add("Rapporti interbancari diretti"); break;
|
||||||
|
case 9:row.add("Bonifico"); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
HIDDEN long row_compare(TToken_string& r1, TToken_string& r2, const int sort_mode)
|
||||||
|
{
|
||||||
|
long cmp = 0;
|
||||||
|
if (sort_mode == 1)
|
||||||
|
{
|
||||||
|
const TDate d1 = r1.get(F_DATA-FIRST_FIELD);
|
||||||
|
const TDate d2 = r2.get(F_DATA-FIRST_FIELD);
|
||||||
|
cmp = d1 - d2;
|
||||||
|
if (cmp != 0)
|
||||||
|
return cmp; // else normal comparing
|
||||||
|
}
|
||||||
|
else if (sort_mode == 2)
|
||||||
|
{
|
||||||
|
const real i1 = r1.get(F_RESIDUO-FIRST_FIELD);
|
||||||
|
const real i2 = r2.get(F_RESIDUO-FIRST_FIELD);
|
||||||
|
const real diff = i1 - i2;
|
||||||
|
cmp = diff.sign();
|
||||||
|
if (cmp != 0)
|
||||||
|
return cmp; // else normal comparing
|
||||||
|
}
|
||||||
|
for (int i = 3; cmp == 0 && i <= 8; i++)
|
||||||
|
{
|
||||||
|
if (i == 4) continue;
|
||||||
|
if (i == 6)
|
||||||
|
{
|
||||||
|
TString16 p1; r1.get(i, p1);
|
||||||
|
TString16 p2; r2.get(i, p2);
|
||||||
|
cmp = p1.compare(p2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long n1; r1.get(i, n1);
|
||||||
|
long n2; r2.get(i, n2);
|
||||||
|
cmp = n1 - n2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TPE_mask::insert_row(const TToken_string& row)
|
||||||
|
{
|
||||||
|
const int sort_mode = get_int(F_SORT);
|
||||||
|
TString_array& sheet = sfield(F_SHEET).rows_array();
|
||||||
|
int first = 0;
|
||||||
|
int last = sheet.items()-1;
|
||||||
|
|
||||||
|
long cmp = -1;
|
||||||
|
int cur = 0;
|
||||||
|
while (first <= last)
|
||||||
|
{
|
||||||
|
cur = (first+last) / 2;
|
||||||
|
TToken_string& curr = sheet.row(cur);
|
||||||
|
cmp = row_compare((TToken_string&)row, curr, sort_mode);
|
||||||
|
if (cmp == 0)
|
||||||
|
break;
|
||||||
|
if (cmp > 0)
|
||||||
|
first = cur+1;
|
||||||
|
else
|
||||||
|
last = cur-1;
|
||||||
|
}
|
||||||
|
if (cmp)
|
||||||
|
{
|
||||||
|
if (cmp > 0)
|
||||||
|
cur++;
|
||||||
|
sheet.insert(row, cur);
|
||||||
|
}
|
||||||
|
return cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPE_mask::sort_sheet()
|
||||||
|
{
|
||||||
|
TWait_cursor hourglass;
|
||||||
|
const int sort_mode = get_int(F_SORT);
|
||||||
|
|
||||||
|
TString_array& rows = sfield(F_SHEET).rows_array();
|
||||||
|
for (int i = 0; i < rows.items()-1; i++)
|
||||||
|
{
|
||||||
|
for (int j = i+1; j < rows.items(); j++)
|
||||||
|
{
|
||||||
|
TToken_string& r1 = rows.row(i);
|
||||||
|
TToken_string& r2 = rows.row(j);
|
||||||
|
if (row_compare(r1, r2, sort_mode) > 0)
|
||||||
|
rows.swap(i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPE_mask::fill_rate()
|
bool TPE_mask::fill_rate()
|
||||||
@ -131,48 +312,44 @@ bool TPE_mask::fill_rate()
|
|||||||
filter.put(PART_CONTO, 0);
|
filter.put(PART_CONTO, 0);
|
||||||
filter.put(PART_SOTTOCONTO, get(F_CLIFO));
|
filter.put(PART_SOTTOCONTO, get(F_CLIFO));
|
||||||
|
|
||||||
TCursor partite(&rel, "", 1, &filter, &filter);
|
|
||||||
|
|
||||||
TString filtro;
|
TString filtro;
|
||||||
filtro << "(CHIUSA!=\"X\")&&(CODVAL==\"" << codval << "\")";
|
filtro << "(CHIUSA!=\"X\")&&(CODVAL==\"" << codval << "\")";
|
||||||
partite.setfilter(filtro, TRUE);
|
TCursor partite(&rel, filtro, 1, &filter, &filter);
|
||||||
|
|
||||||
long items = partite.items();
|
|
||||||
if (items == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
|
const long items = partite.items();
|
||||||
|
partite.freeze();
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
TRectype& partita = partite.curr();
|
TRectype& partita = partite.curr();
|
||||||
|
|
||||||
TProgind pi(items, TR("Caricamento partite aperte"), FALSE, TRUE);
|
TProgind pi(items, "Caricamento partite aperte", TRUE, TRUE);
|
||||||
if (items > 900) items = 900;
|
|
||||||
partite.freeze();
|
|
||||||
|
|
||||||
long last_cf = 0;
|
long last_cf = 0;
|
||||||
int last_year = 0;
|
int last_year = 0;
|
||||||
TString16 last_game;
|
TString16 last_game;
|
||||||
TString last_ragsoc;
|
|
||||||
|
TToken_string row;
|
||||||
|
|
||||||
for (partite = 0L; partite.pos() < items; ++partite)
|
for (partite = 0L; partite.pos() < items; ++partite)
|
||||||
{
|
{
|
||||||
pi.addstatus(1);
|
pi.addstatus(1);
|
||||||
|
if (pi.iscancelled())
|
||||||
|
break;
|
||||||
|
if (sheet.items() > 900) // Anche troppe righe
|
||||||
|
break;
|
||||||
|
|
||||||
const long cur_cf = partita.get_long(PART_SOTTOCONTO);
|
const long cur_cf = partita.get_long(PART_SOTTOCONTO);
|
||||||
const int cur_year = partita.get_int(PART_ANNO);
|
const int cur_year = partita.get_int(PART_ANNO);
|
||||||
const TString& cur_game = partita.get(PART_NUMPART);
|
const TString& cur_game = partita.get(PART_NUMPART);
|
||||||
if (cur_cf == last_cf && cur_year == last_year && cur_game == last_game)
|
if (cur_cf == last_cf && cur_year == last_year && cur_game == last_game)
|
||||||
continue;
|
continue;
|
||||||
|
last_cf = cur_cf;
|
||||||
last_year = cur_year;
|
last_year = cur_year;
|
||||||
last_game = cur_game;
|
last_game = cur_game;
|
||||||
if (cur_cf != last_cf)
|
|
||||||
{
|
|
||||||
last_cf = cur_cf;
|
|
||||||
TString16 cod;
|
|
||||||
cod << get(F_TIPOCF) << '|' << last_cf;
|
|
||||||
last_ragsoc = cache().get(LF_CLIFO, cod, CLI_RAGSOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
const TPartita game(partita);
|
const TPartita game(partita);
|
||||||
const int last = game.last();
|
const int last = game.last();
|
||||||
for (int riga = game.prima_fattura(); riga > 0 && riga <= last; riga++)
|
for (int riga = game.prima_fattura(); riga > 0 && riga <= last; riga = game.succ(riga))
|
||||||
{
|
{
|
||||||
const TRiga_partite& rp = game.riga(riga);
|
const TRiga_partite& rp = game.riga(riga);
|
||||||
if (rp.is_fattura())
|
if (rp.is_fattura())
|
||||||
@ -185,47 +362,108 @@ bool TPE_mask::fill_rate()
|
|||||||
const TDate data = rs.get(SCAD_DATASCAD);
|
const TDate data = rs.get(SCAD_DATASCAD);
|
||||||
if (data >= dadata && (!adata.ok() || data <= adata))
|
if (data >= dadata && (!adata.ok() || data <= adata))
|
||||||
{
|
{
|
||||||
real impres, imppag;
|
bool partially_unassigned;
|
||||||
char accsal; int rigadist, rigaeff;
|
if (fill_row(rs, row, partially_unassigned))
|
||||||
bool ok = calc_residual(rs, impres, imppag, accsal,
|
|
||||||
rigadist, rigaeff);
|
|
||||||
if (ok)
|
|
||||||
{
|
{
|
||||||
TToken_string& row = sheet.row(-1);
|
const int numrow = sheet.items();
|
||||||
row.add(imppag.string());
|
sheet.row(numrow) = row;
|
||||||
row.add(accsal);
|
if (partially_unassigned)
|
||||||
row.add(impres.string());
|
sheet.disable_cell(numrow, 1); // Non permette di mettere a saldo
|
||||||
row.add(last_cf);
|
}
|
||||||
row.add(last_ragsoc);
|
}
|
||||||
row.add(game.anno());
|
} // if rata aperta
|
||||||
row.add(game.numero());
|
} // for ogni rata
|
||||||
row.add(riga);
|
} // if e' una fattura
|
||||||
row.add(rata);
|
} // for ogni fattura
|
||||||
row.add(data);
|
} // for ogni partita
|
||||||
row.add(rigadist);
|
} // if ci sono partite
|
||||||
row.add(rigaeff);
|
return fill_distinta(FALSE);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
bool TPE_mask::fill_distinta(bool clear_all)
|
||||||
|
{
|
||||||
|
TWait_cursor hourglass;
|
||||||
|
TSheet_field& sheet = sfield(F_SHEET);
|
||||||
|
if (clear_all)
|
||||||
|
sheet.destroy();
|
||||||
|
const char tdist = get(F_TIPODIST)[0];
|
||||||
|
const long ndist = get_long(F_DIST);
|
||||||
|
TDistinta dist(tdist, ndist);
|
||||||
|
const bool dist_cont = dist.contabilizzata();
|
||||||
|
if (dist.items() > 0)
|
||||||
|
{
|
||||||
|
TToken_string row;
|
||||||
|
for (int e = 0; e < dist.items(); e++)
|
||||||
|
{
|
||||||
|
const TEffetto& eff = dist[e];
|
||||||
|
const TBill clifo(0, 0, eff.get_long(EFF_CODCF), eff.get_char(EFF_TIPOCF));
|
||||||
|
if (e==0)
|
||||||
|
set(F_TIPOPAG, eff.get_int(EFF_TIPOPAG));
|
||||||
|
for (int r = 1; r <= eff.rows_r(); r++)
|
||||||
|
{
|
||||||
|
const TRectype& reff = eff.row_r(r);
|
||||||
|
const int anno = reff.get_int(REFF_ANNO);
|
||||||
|
const TString16 part = reff.get(REFF_NUMPART);
|
||||||
|
const int nriga = reff.get_int(REFF_NRIGA);
|
||||||
|
const int nrata = reff.get_int(REFF_NRATA);
|
||||||
|
TPartita game(clifo, anno, part);
|
||||||
|
if (game.esiste(nriga, nrata))
|
||||||
|
{
|
||||||
|
TRiga_scadenze& rs = game.rata(nriga, nrata);
|
||||||
|
bool partially_unassigned;
|
||||||
|
if (fill_row(rs, row, partially_unassigned, dist_cont))
|
||||||
|
{
|
||||||
|
const int numrow = insert_row(row);
|
||||||
|
if (partially_unassigned)
|
||||||
|
sheet.disable_cell(numrow, 1); // Non e' possibile mettere saldo
|
||||||
|
if (dist_cont)
|
||||||
|
sheet.disable_cell(numrow, -1); // Non e' possibile modificare nulla
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg << "La riga " << (e+1) << " della distinta " << ndist
|
||||||
|
<< " si riferisce ad una rata o partita non valida:\n"
|
||||||
|
<< clifo.tipo() << ' ' << clifo.codclifo() << ' ' << anno << ' '
|
||||||
|
<< part << " Riga " << nriga << " Rata " << nrata << "\n"
|
||||||
|
<< "Si desidera eliminare l'effetto?";
|
||||||
|
if (yesno_box(msg))
|
||||||
|
{
|
||||||
|
TLocalisamfile righe(LF_REFFETTI);
|
||||||
|
righe.curr() = reff;
|
||||||
|
if (righe.remove() != NOERR)
|
||||||
|
error_box("Errore di cancellazione riga effetto: %d", righe.status());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_bool(F_SORT))
|
||||||
|
sort_sheet();
|
||||||
|
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
update_total();
|
update_total();
|
||||||
|
_spork = FALSE;
|
||||||
|
|
||||||
const int righe = sheet.items();
|
const bool full = sheet.items() > 0;
|
||||||
const bool canedit = righe > 0;
|
if (full)
|
||||||
enable(-5, canedit);
|
{
|
||||||
|
disable(-3);
|
||||||
|
disable(-4);
|
||||||
|
}
|
||||||
|
enable(-5, full && !dist_cont);
|
||||||
|
show(F_UNCONTABIL, dist_cont);
|
||||||
|
|
||||||
return canedit;
|
return full;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf,
|
TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf,
|
||||||
int& rigadist, int& rigaeff ) const
|
int& rigadist, int& rigaeff ) const
|
||||||
{
|
{
|
||||||
TString16 codice; codice << tipocf << '|' << codcf;
|
TString16 codice; codice << tipocf << '|' << codcf;
|
||||||
const bool ragg = cache().get(LF_CFVEN, codice, CFV_RAGGEFF).not_empty();
|
const bool ragg = !cache().get(LF_CFVEN, codice, CFV_RAGGEFF).blank();
|
||||||
|
|
||||||
TEffetto* neweff = NULL;
|
TEffetto* neweff = NULL;
|
||||||
if (ragg)
|
if (ragg)
|
||||||
@ -249,10 +487,9 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf,
|
|||||||
rigadist = dist.items();
|
rigadist = dist.items();
|
||||||
neweff->put(EFF_TIPOCF, tipocf);
|
neweff->put(EFF_TIPOCF, tipocf);
|
||||||
neweff->put(EFF_CODCF, codcf);
|
neweff->put(EFF_CODCF, codcf);
|
||||||
neweff->put(EFF_TIPOCF, get(F_TIPOCF));
|
|
||||||
neweff->put(EFF_CODVAL, get(F_CODVAL));
|
neweff->put(EFF_CODVAL, get(F_CODVAL));
|
||||||
neweff->put(EFF_CAMBIO, get(F_CAMBIO));
|
neweff->put(EFF_CAMBIO, get(F_CAMBIO));
|
||||||
neweff->put(EFF_DATACAMBIO, get(F_DATADIST));
|
neweff->put(EFF_DATACAMBIO, get(F_DATACAMBIO));
|
||||||
}
|
}
|
||||||
rigaeff = neweff->rows_r()+1;
|
rigaeff = neweff->rows_r()+1;
|
||||||
return neweff->row_r(rigaeff, TRUE);
|
return neweff->row_r(rigaeff, TRUE);
|
||||||
@ -260,12 +497,30 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf,
|
|||||||
|
|
||||||
void TPE_mask::save_rate()
|
void TPE_mask::save_rate()
|
||||||
{
|
{
|
||||||
|
const char tipodist = get(F_TIPODIST)[0];
|
||||||
|
long numdist = get_long(F_DIST);
|
||||||
|
if (_is_new)
|
||||||
|
{
|
||||||
|
TLocalisamfile f(LF_EFFETTI); f.setkey(4);
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
f.put(EFF_TIPODIST, tipodist);
|
||||||
|
f.put(EFF_NDIST, numdist);
|
||||||
|
f.put(EFF_NRIGADIST, 1);
|
||||||
|
if (f.read() != NOERR)
|
||||||
|
break;
|
||||||
|
const long nd = get_free_num();
|
||||||
|
warning_box("La distinta %ld è già presente: verrà rinumerata in %ld", numdist, nd);
|
||||||
|
numdist = nd;
|
||||||
|
}
|
||||||
|
_is_new = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
TDistinta distinta(tipodist, numdist, _lock);
|
||||||
|
|
||||||
const TString& codval = get(F_CODVAL);
|
const TString& codval = get(F_CODVAL);
|
||||||
const real cambio = get(F_CAMBIO);
|
const real cambio = get(F_CAMBIO);
|
||||||
|
const bool eurocambio = get_bool(F_EURO);
|
||||||
const char tipodist = get(F_TIPODIST)[0];
|
|
||||||
const long numdist = get_long(F_DIST);
|
|
||||||
TDistinta distinta(tipodist, numdist, _lock);
|
|
||||||
|
|
||||||
bool zeroes = FALSE; // Esistono righe effetto da cancellare
|
bool zeroes = FALSE; // Esistono righe effetto da cancellare
|
||||||
|
|
||||||
@ -277,7 +532,7 @@ void TPE_mask::save_rate()
|
|||||||
if (codval.not_empty() && !imp.is_zero())
|
if (codval.not_empty() && !imp.is_zero())
|
||||||
{
|
{
|
||||||
impval = imp;
|
impval = imp;
|
||||||
TCurrency c(impval, codval, cambio);
|
TCurrency c(impval, codval, cambio, eurocambio ? _exchange_contro : _exchange_base);
|
||||||
c.change_to_firm_val();
|
c.change_to_firm_val();
|
||||||
imp = c.get_num();
|
imp = c.get_num();
|
||||||
}
|
}
|
||||||
@ -304,6 +559,13 @@ void TPE_mask::save_rate()
|
|||||||
key.add(row->get(sheet.cid2index(F_ANNO)));
|
key.add(row->get(sheet.cid2index(F_ANNO)));
|
||||||
key.add(row->get(sheet.cid2index(F_PARTITA)));
|
key.add(row->get(sheet.cid2index(F_PARTITA)));
|
||||||
key.add(row->get(sheet.cid2index(F_RIGA)));
|
key.add(row->get(sheet.cid2index(F_RIGA)));
|
||||||
|
// Trova partita
|
||||||
|
const TRectype& part = cache().get(LF_PARTITE, key);
|
||||||
|
reff.put(REFF_NFATT, part.get(PART_NUMDOC));
|
||||||
|
reff.put(REFF_DATAFATT, part.get(PART_DATADOC));
|
||||||
|
reff.put(REFF_IMPFATT, part.get(PART_IMPORTO));
|
||||||
|
|
||||||
|
// Trova rata
|
||||||
key.add(row->get(sheet.cid2index(F_RATA)));
|
key.add(row->get(sheet.cid2index(F_RATA)));
|
||||||
const TRectype& scad = cache().get(LF_SCADENZE, key);
|
const TRectype& scad = cache().get(LF_SCADENZE, key);
|
||||||
|
|
||||||
@ -341,6 +603,7 @@ void TPE_mask::save_rate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ricalcola totali righe ed elimina le righe NULLE
|
// Ricalcola totali righe ed elimina le righe NULLE
|
||||||
|
TLocalisamfile f(LF_EFFETTI); f.setkey(1);
|
||||||
for (int rd = distinta.items()-1; rd >= 0; rd--)
|
for (int rd = distinta.items()-1; rd >= 0; rd--)
|
||||||
{
|
{
|
||||||
TEffetto& eff = distinta[rd];
|
TEffetto& eff = distinta[rd];
|
||||||
@ -349,7 +612,9 @@ void TPE_mask::save_rate()
|
|||||||
{
|
{
|
||||||
const TRectype& reff = eff.row_r(i);
|
const TRectype& reff = eff.row_r(i);
|
||||||
if (reff.get_char(REFF_ACCSAL) == 'Z')
|
if (reff.get_char(REFF_ACCSAL) == 'Z')
|
||||||
|
{
|
||||||
eff.destroy_row_r(i, TRUE);
|
eff.destroy_row_r(i, TRUE);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
totimp += reff.get_real(EFF_IMPORTO);
|
totimp += reff.get_real(EFF_IMPORTO);
|
||||||
@ -357,12 +622,25 @@ void TPE_mask::save_rate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (eff.rows_r() == 0)
|
if (eff.rows_r() == 0)
|
||||||
|
{
|
||||||
|
int err = eff.read(f, eff, _lock);
|
||||||
|
if (err == NOERR)
|
||||||
|
err = eff.remove(f);
|
||||||
|
if (err == NOERR)
|
||||||
distinta.righe().destroy(rd, TRUE);
|
distinta.righe().destroy(rd, TRUE);
|
||||||
|
else
|
||||||
|
error_box("Errore %d durante la cancellazione della riga %d", err, rd+1);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
eff.put(EFF_TIPOPAG, get(F_TIPOPAG));
|
||||||
eff.put(EFF_IMPORTO, totimp);
|
eff.put(EFF_IMPORTO, totimp);
|
||||||
eff.put(EFF_IMPORTOVAL, totimpval);
|
eff.put(EFF_IMPORTOVAL, totimpval);
|
||||||
eff.put(EFF_TIPOPAG, get(F_TIPOPAG));
|
eff.put(EFF_CODVAL, codval);
|
||||||
|
eff.put(EFF_CAMBIO, cambio);
|
||||||
|
eff.put(EFF_CONTROEURO, eurocambio);
|
||||||
|
eff.put(EFF_DATACAMBIO, get(F_DATACAMBIO));
|
||||||
|
eff.put(EFF_SPESE, get(F_SPESE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,8 +669,13 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
case F_IMPORTO:
|
case F_IMPORTO:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
if (m.get_real(F_IMPORTO) >= m.get_real(F_RESIDUO))
|
TMask_field& as = m.field(F_ACCSAL);
|
||||||
m.set(F_ACCSAL, "S");
|
if (as.enabled())
|
||||||
|
{
|
||||||
|
const real imp = m.get(F_IMPORTO);
|
||||||
|
const real res = m.get(F_RESIDUO);
|
||||||
|
as.set(imp >= res ? "S" : "A");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_PAGA:
|
case F_PAGA:
|
||||||
@ -402,13 +685,16 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
if (m.get_real(F_IMPORTO).is_zero())
|
if (m.get_real(F_IMPORTO).is_zero())
|
||||||
{
|
{
|
||||||
m.set(F_IMPORTO, m.get(F_RESIDUO));
|
m.set(F_IMPORTO, m.get(F_RESIDUO));
|
||||||
m.set(F_ACCSAL, "S");
|
TMask_field& as = m.field(F_ACCSAL);
|
||||||
|
if (as.enabled())
|
||||||
|
as.set("S");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m.reset(F_IMPORTO);
|
m.reset(F_IMPORTO);
|
||||||
m.reset(F_ACCSAL);
|
m.reset(F_ACCSAL);
|
||||||
}
|
}
|
||||||
|
_spork = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_SHEET:
|
case F_SHEET:
|
||||||
@ -422,37 +708,51 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
case se_notify_modify:
|
case se_notify_modify:
|
||||||
|
_spork = TRUE;
|
||||||
update_total();
|
update_total();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long TPE_mask::get_free_num() const
|
||||||
|
{
|
||||||
|
TLocalisamfile eff(LF_EFFETTI); eff.setkey(4);
|
||||||
|
TRectype& curr = eff.curr();
|
||||||
|
const TString& tipodist = get(F_TIPODIST);
|
||||||
|
curr.put(EFF_TIPODIST, tipodist);
|
||||||
|
curr.put(EFF_NDIST, 99999L);
|
||||||
|
const int err = eff.read(_isgreat);
|
||||||
|
long n = 1L;
|
||||||
|
if (err != _isemptyfile)
|
||||||
|
{
|
||||||
|
if (err == NOERR)
|
||||||
|
eff.prev();
|
||||||
|
if (curr.get(EFF_TIPODIST) == tipodist)
|
||||||
|
n += curr.get_long(EFF_NDIST);
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case DLG_NEWREC:
|
case DLG_NEWREC:
|
||||||
{
|
{
|
||||||
TLocalisamfile eff(LF_EFFETTI); eff.setkey(4);
|
const long n = get_free_num();
|
||||||
TRectype& curr = eff.curr();
|
|
||||||
curr.put(EFF_TIPODIST, get(F_TIPODIST));
|
|
||||||
curr.put(EFF_NDIST, 99999L);
|
|
||||||
const int err = eff.read(_isgreat);
|
|
||||||
long n = 1L;
|
|
||||||
if (err != _isemptyfile)
|
|
||||||
{
|
|
||||||
if (err == NOERR)
|
|
||||||
eff.prev();
|
|
||||||
if (curr.get(EFF_TIPODIST) == get(F_TIPODIST))
|
|
||||||
n += curr.get_long(EFF_NDIST);
|
|
||||||
}
|
|
||||||
set(F_DIST, n);
|
set(F_DIST, n);
|
||||||
|
disable(F_DIST);
|
||||||
|
disable(DLG_NEWREC);
|
||||||
|
set_focus_field(F_ABI);
|
||||||
|
_is_new = TRUE;
|
||||||
|
_spork = FALSE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_DIST:
|
case F_DIST:
|
||||||
@ -468,58 +768,147 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
{
|
{
|
||||||
const TRectype& rec = cur.curr();
|
const TRectype& rec = cur.curr();
|
||||||
if (rec.get_bool(EFF_EFFCONT))
|
if (rec.get_bool(EFF_EFFCONT))
|
||||||
return error_box(FR("La distinta %s e' gia' stata contabilizzata,\n"
|
{
|
||||||
"per cui non e' possibile modificarla"), (const char*)ef.get());
|
warning_box("La distinta %s è già stata contabilizzata,\n"
|
||||||
|
"per cui non è possibile modificarla", (const char*)ef.get());
|
||||||
|
show(F_UNCONTABIL);
|
||||||
|
}
|
||||||
|
ok = fill_distinta(TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
enable(-3, !ok);
|
_is_new = !ok; // Memorizza se è una distinta nuova
|
||||||
|
enable(-3, _is_new); // Abilita tipo, cliente, valuta, ecc., solo se nuova
|
||||||
|
enable(F_TIPOPAG, _is_new);
|
||||||
|
disable(F_AGGIORNA);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_CODVAL:
|
||||||
|
if (e == fe_modify && !o.empty())
|
||||||
|
{
|
||||||
|
TTable cam("CAM");
|
||||||
|
cam.put("CODTAB", o.get());
|
||||||
|
int err = cam.read(_isgteq);
|
||||||
|
if (err != NOERR || cam.get("CODTAB").compare(o.get(), 3) != 0)
|
||||||
|
{
|
||||||
|
const TRectype& val = cache().get("%VAL", o.get());
|
||||||
|
TString16 str = val.get("S4");
|
||||||
|
if (str.blank()) str = val.get("R10");
|
||||||
|
set(F_CAMBIO, str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_AGGIORNA:
|
case F_AGGIORNA:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
if (!field(F_DIST).empty())
|
TEdit_field& numdist = efield(F_DIST);
|
||||||
|
if (!numdist.empty())
|
||||||
{
|
{
|
||||||
const bool full = fill_rate();
|
bool go = TRUE;
|
||||||
if (full)
|
if (!numdist.enabled() && sfield(F_SHEET).items() > 0)
|
||||||
{
|
{
|
||||||
disable(-3);
|
go = check_fields();
|
||||||
disable(-4);
|
if (go && _spork && yesno_box("Si desidera registrare la distinta?"))
|
||||||
|
save_rate();
|
||||||
}
|
}
|
||||||
|
if (go)
|
||||||
|
go = fill_rate();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return error_box(TR("E' necessario specificare un numero di distinta"));
|
return error_box("E' necessario specificare un numero di distinta");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_CONTABILI:
|
case F_CONTABILI:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
|
const char tipodist = get(F_TIPODIST)[0];
|
||||||
|
const long numdist = get_long(F_DIST);
|
||||||
TString16 cmd;
|
TString16 cmd;
|
||||||
cmd << "ef0 -7 " << get(F_TIPODIST) << ' ' << get(F_DIST);
|
cmd << "ef0 -7 " << tipodist << ' ' << numdist;
|
||||||
TExternal_app app(cmd);
|
TExternal_app app(cmd);
|
||||||
app.run();
|
if (app.run() == 0)
|
||||||
|
{
|
||||||
|
long numreg = 0; // Numero di registrazione contabile
|
||||||
|
TLocalisamfile eff(LF_EFFETTI);
|
||||||
|
eff.setkey(4);
|
||||||
|
eff.put(EFF_TIPODIST, tipodist);
|
||||||
|
eff.put(EFF_NDIST,numdist);
|
||||||
|
eff.put(EFF_NRIGADIST, 1); // Cerco prima riga distinta
|
||||||
|
if (eff.read() == NOERR)
|
||||||
|
numreg = eff.get_long(EFF_NUMREG);
|
||||||
|
if (numreg > 0)
|
||||||
|
message_box("La distinta %ld e' stata contabilizzata col movimento %ld",
|
||||||
|
numdist, numreg);
|
||||||
|
else
|
||||||
|
warning_box("La distinta %ld non e' stata contabilizzata", numdist);
|
||||||
|
}
|
||||||
stop_run(K_ESC);
|
stop_run(K_ESC);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case F_UNCONTABIL:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
const char tipodist = get(F_TIPODIST)[0];
|
||||||
|
const long numdist = get_long(F_DIST);
|
||||||
|
if (tipodist > ' ' && numdist > 0)
|
||||||
|
{
|
||||||
|
TRelation rel(LF_EFFETTI);
|
||||||
|
TRectype& rec = rel.curr();
|
||||||
|
rec.put(EFF_TIPODIST, tipodist);
|
||||||
|
rec.put(EFF_NDIST,numdist);
|
||||||
|
TCursor cur(&rel, "", 4, &rec, &rec);
|
||||||
|
const TRecnotype items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
|
||||||
|
TAssoc_array movs;
|
||||||
|
for (cur = 0; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
movs.add(rec.get(EFF_NUMREG));
|
||||||
|
rec.zero(EFF_EFFCONT);
|
||||||
|
rec.zero(EFF_NUMREG);
|
||||||
|
rel.rewrite();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (movs.items() > 0)
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg = "E' necessario cancellare i seguenti movimenti contabili:\n";
|
||||||
|
FOR_EACH_ASSOC_OBJECT(movs, hash, key, obj)
|
||||||
|
msg << key << ' ';
|
||||||
|
warning_box(msg);
|
||||||
|
}
|
||||||
|
stop_run(K_ESC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case DLG_DELREC:
|
case DLG_DELREC:
|
||||||
if (e == fe_button && yesno_box(FR("Confermate l'eliminazione della distinta %ld"),
|
if (e == fe_button && yesno_box("Confermare l'eliminazione della distinta %ld",
|
||||||
get_long(F_DIST)))
|
get_long(F_DIST)))
|
||||||
{
|
{
|
||||||
TSheet_field& sheet = sfield(F_SHEET);
|
TSheet_field& sheet = sfield(F_SHEET);
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, row)
|
FOR_EACH_SHEET_ROW(sheet, r, row)
|
||||||
row->add("", 0);
|
{
|
||||||
|
row->add(" ", 0);
|
||||||
|
row->add("A", 1);
|
||||||
|
}
|
||||||
save_rate();
|
save_rate();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DLG_SAVEREC:
|
case DLG_SAVEREC:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TEdit_field& cab = efield(F_CAB);
|
||||||
|
if (!cab.empty())
|
||||||
{
|
{
|
||||||
if (check_fields())
|
if (check_fields())
|
||||||
{
|
{
|
||||||
save_rate();
|
save_rate();
|
||||||
fill_rate();
|
fill_distinta(TRUE);
|
||||||
|
disable(F_TIPOPAG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return error_box("E' necessario specificare una banca di presentazione");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DLG_PRINT:
|
case DLG_PRINT:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
@ -528,6 +917,26 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case F_SORT:
|
||||||
|
if (e == fe_modify)
|
||||||
|
{
|
||||||
|
TSheet_field& s = sfield(F_SHEET);
|
||||||
|
if (s.items() > 0)
|
||||||
|
{
|
||||||
|
sort_sheet();
|
||||||
|
s.force_update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_CLIFO:
|
||||||
|
case F_DA_DATA:
|
||||||
|
case F_A_DATA:
|
||||||
|
if (e == fe_modify)
|
||||||
|
{
|
||||||
|
if (get(F_CLIFO).not_empty() || get(F_DA_DATA).not_empty() || get(F_A_DATA).not_empty())
|
||||||
|
enable(F_AGGIORNA);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case F_SHEET:
|
case F_SHEET:
|
||||||
return on_sheet_event(o, e, jolly);
|
return on_sheet_event(o, e, jolly);
|
||||||
default:
|
default:
|
||||||
@ -538,6 +947,16 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TPE_mask::TPE_mask() : TAutomask("ef0a00a")
|
||||||
|
{
|
||||||
|
_rel = new TRelation(LF_REFFETTI);
|
||||||
|
_rel->add(LF_EFFETTI, "NPROGTR==NPROGTR");
|
||||||
|
}
|
||||||
|
|
||||||
|
TPE_mask::~TPE_mask()
|
||||||
|
{ delete _rel; }
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Main Program
|
// Main Program
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -549,6 +968,7 @@ class TPagamento_effetti : public TSkeleton_application
|
|||||||
public:
|
public:
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
virtual void print();
|
virtual void print();
|
||||||
|
virtual bool firm_change_enabled() const { return FALSE; }
|
||||||
};
|
};
|
||||||
|
|
||||||
void TPagamento_effetti::main_loop()
|
void TPagamento_effetti::main_loop()
|
||||||
@ -560,12 +980,14 @@ void TPagamento_effetti::main_loop()
|
|||||||
_mask = new TPE_mask;
|
_mask = new TPE_mask;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
_mask->reset(F_DIST);
|
_mask->reset();
|
||||||
_mask->enable(-3);
|
_mask->enable(-3);
|
||||||
|
_mask->enable(F_TIPOPAG);
|
||||||
_mask->enable(-4);
|
_mask->enable(-4);
|
||||||
_mask->disable(-5);
|
_mask->disable(-5);
|
||||||
|
_mask->disable(DLG_SAVEREC);
|
||||||
|
_mask->hide(F_UNCONTABIL);
|
||||||
_mask->sfield(F_SHEET).destroy();
|
_mask->sfield(F_SHEET).destroy();
|
||||||
_mask->reset(F_TOTAL);
|
|
||||||
}
|
}
|
||||||
while (_mask->run() != K_QUIT);
|
while (_mask->run() != K_QUIT);
|
||||||
|
|
||||||
@ -581,7 +1003,8 @@ void TPagamento_effetti::print()
|
|||||||
|
|
||||||
int ef0A00(int argc, char* argv[])
|
int ef0A00(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
int n = 0;
|
||||||
TPagamento_effetti pe;
|
TPagamento_effetti pe;
|
||||||
pe.run(argc, argv, TR("Distinte Pagamento"));
|
pe.run(argc, argv, "Disposizioni incassi/pagamenti");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
20
ef/ef0a00a.h
20
ef/ef0a00a.h
@ -8,14 +8,24 @@
|
|||||||
#define F_DUMMYDIST 208
|
#define F_DUMMYDIST 208
|
||||||
#define F_DATADIST 209
|
#define F_DATADIST 209
|
||||||
#define F_CODVAL 210
|
#define F_CODVAL 210
|
||||||
#define F_CAMBIO 211
|
#define F_EURO 211
|
||||||
#define F_CLIFO 212
|
#define F_CAMBIO 212
|
||||||
#define F_TIPOPAG 213
|
#define F_DATACAMBIO 213
|
||||||
#define F_TOTAL 220
|
#define F_DESCAB 214
|
||||||
|
#define F_SORT 215
|
||||||
|
#define F_CLIFO 220
|
||||||
|
#define F_RAGSOCCF 221
|
||||||
|
#define F_TIPOPAG 222
|
||||||
|
#define F_TOTAL 230
|
||||||
|
#define F_SPESE 231
|
||||||
|
#define F_TIPOEFF 232
|
||||||
|
|
||||||
#define F_SHEET 300
|
#define F_SHEET 300
|
||||||
#define F_AGGIORNA 301
|
#define F_AGGIORNA 301
|
||||||
#define F_CONTABILI 302
|
#define F_CONTABILI 302
|
||||||
|
#define F_UNCONTABIL 303
|
||||||
|
|
||||||
|
#define F_TIPOPAGEFF 401
|
||||||
|
|
||||||
#define F_PAGA 100
|
#define F_PAGA 100
|
||||||
#define F_IMPORTO 101
|
#define F_IMPORTO 101
|
||||||
@ -30,4 +40,4 @@
|
|||||||
#define F_DATA 110
|
#define F_DATA 110
|
||||||
#define F_RIGADIST 111
|
#define F_RIGADIST 111
|
||||||
#define F_RIGAEFF 112
|
#define F_RIGAEFF 112
|
||||||
|
#define F_DESC_TIPO 113
|
||||||
|
191
ef/ef0a00a.uml
191
ef/ef0a00a.uml
@ -2,9 +2,21 @@
|
|||||||
|
|
||||||
TOOLBAR "Toolbar" 0 -3 0 3
|
TOOLBAR "Toolbar" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON F_UNCONTABIL 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 0 "~Annulla contabilizzazione"
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_CONTABILI 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 0 "~Contabilizzazione"
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
BUTTON DLG_NEWREC 10 2
|
BUTTON DLG_NEWREC 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -16 -11 "~Nuovo"
|
PROMPT -16 -1 "~Nuovo"
|
||||||
PICTURE BMP_NEWREC
|
PICTURE BMP_NEWREC
|
||||||
PICTURE BMP_NEWRECDN
|
PICTURE BMP_NEWRECDN
|
||||||
GROUP 3
|
GROUP 3
|
||||||
@ -12,15 +24,16 @@ END
|
|||||||
|
|
||||||
BUTTON DLG_SAVEREC 10 2
|
BUTTON DLG_SAVEREC 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -26 -11 ""
|
PROMPT -26 -1 "~Registra"
|
||||||
|
|
||||||
PICTURE BMP_SAVEREC
|
PICTURE BMP_SAVEREC
|
||||||
PICTURE BMP_SAVERECDN
|
PICTURE BMP_SAVERECDN
|
||||||
GROUP 5
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_DELREC 10 2
|
BUTTON DLG_DELREC 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -36 -11 ""
|
PROMPT -36 -1 "~Elimina"
|
||||||
|
|
||||||
PICTURE BMP_DELREC
|
PICTURE BMP_DELREC
|
||||||
PICTURE BMP_DELRECDN
|
PICTURE BMP_DELRECDN
|
||||||
GROUP 5
|
GROUP 5
|
||||||
@ -28,25 +41,25 @@ END
|
|||||||
|
|
||||||
BUTTON DLG_PRINT 10 2
|
BUTTON DLG_PRINT 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -46 -11 ""
|
PROMPT -46 -1 ""
|
||||||
PICTURE BMP_PRINT
|
PICTURE BMP_PRINT
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 10 2
|
BUTTON DLG_CANCEL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -56 -11 ""
|
PROMPT -56 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_QUIT 10 2
|
BUTTON DLG_QUIT 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -66 -11 ""
|
PROMPT -66 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Distite Pagamento" -1 -1 78 19
|
PAGE "Disposizioni incassi/pagamenti" -1 -1 78 19
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "@bDistinta"
|
PROMPT 1 0 "@bDistinta"
|
||||||
END
|
END
|
||||||
@ -55,8 +68,11 @@ LIST F_TIPODIST 1 15
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "Tipo "
|
PROMPT 2 1 "Tipo "
|
||||||
ITEM "I|All'incasso"
|
ITEM "I|All'incasso"
|
||||||
|
MESSAGE ENABLE,F_TIPOEFF
|
||||||
ITEM "B|Salvo buon fine"
|
ITEM "B|Salvo buon fine"
|
||||||
|
MESSAGE RESET,F_TIPOEFF|DISABLE,F_TIPOEFF
|
||||||
ITEM "S|Allo sconto"
|
ITEM "S|Allo sconto"
|
||||||
|
MESSAGE RESET,F_TIPOEFF|DISABLE,F_TIPOEFF
|
||||||
GROUP 3
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -69,7 +85,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_DIST 5
|
NUMBER F_DIST 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 1 "Numero "
|
PROMPT 28 1 "Numero "
|
||||||
USE LF_EFFETTI KEY 4 SELECT NRIGADIST==1
|
USE LF_EFFETTI KEY 4 SELECT NRIGADIST==1
|
||||||
INPUT TIPODIST F_TIPODIST
|
INPUT TIPODIST F_TIPODIST
|
||||||
INPUT NDIST F_DIST
|
INPUT NDIST F_DIST
|
||||||
@ -85,27 +101,40 @@ BEGIN
|
|||||||
OUTPUT F_DIST NDIST
|
OUTPUT F_DIST NDIST
|
||||||
OUTPUT F_DATADIST DATADIST
|
OUTPUT F_DATADIST DATADIST
|
||||||
OUTPUT F_CODVAL CODVAL
|
OUTPUT F_CODVAL CODVAL
|
||||||
|
OUTPUT F_CAMBIO CAMBIO
|
||||||
|
OUTPUT F_DATACAMBIO DATACAMBIO
|
||||||
|
OUTPUT F_EURO CONTROEURO
|
||||||
OUTPUT F_TIPOCF TIPOCF
|
OUTPUT F_TIPOCF TIPOCF
|
||||||
OUTPUT F_ABI CODABIP
|
OUTPUT F_ABI CODABIP
|
||||||
OUTPUT F_CAB CODCABP
|
OUTPUT F_CAB CODCABP
|
||||||
OUTPUT F_TIPOPAG TIPOPAG
|
OUTPUT F_TIPOPAG TIPOPAG
|
||||||
|
OUTPUT F_SPESE SPESE
|
||||||
CHECKTYPE SEARCH
|
CHECKTYPE SEARCH
|
||||||
GROUP 4
|
GROUP 4
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODVAL 3
|
STRING F_CODVAL 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 53 1 "Valuta "
|
PROMPT 50 1 "Valuta "
|
||||||
FLAGS "UZ"
|
FLAGS "UZ"
|
||||||
USE %VAL
|
USE %VAL
|
||||||
INPUT CODTAB F_CODVAL
|
INPUT CODTAB F_CODVAL
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Cambio\nStandard" S4
|
||||||
|
DISPLAY "Contro\nEuro@6" B1
|
||||||
DISPLAY "Denominazione@50" S0
|
DISPLAY "Denominazione@50" S0
|
||||||
OUTPUT F_CODVAL CODTAB
|
OUTPUT F_CODVAL CODTAB
|
||||||
|
OUTPUT F_EURO B1
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
GROUP 3
|
GROUP 3
|
||||||
MESSAGE EMPTY CLEAR,F_CAMBIO
|
MESSAGE EMPTY CLEAR,6@
|
||||||
MESSAGE ENABLE,F_CAMBIO
|
MESSAGE ENABLE,6@
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_EURO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 64 1 "Contro Euro"
|
||||||
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATADIST
|
DATE F_DATADIST
|
||||||
@ -115,9 +144,29 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CAMBIO 15 5
|
DATE F_DATACAMBIO
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 53 2 "Cambio "
|
PROMPT 23 2 "Data cambio "
|
||||||
|
FLAGS "R"
|
||||||
|
USE CAM
|
||||||
|
JOIN %VAL ALIAS 104 INTO CODTAB[1,3]==CODTAB[1,3]
|
||||||
|
INPUT CODTAB[1,3] F_CODVAL SELECT
|
||||||
|
INPUT CODTAB[4,11] F_DATACAMBIO
|
||||||
|
DISPLAY "Cod" CODTAB[1,3]
|
||||||
|
DISPLAY "Data@10" D0
|
||||||
|
DISPLAY "Cambio" S4
|
||||||
|
DISPLAY "Parita'\nEuro@6" B1
|
||||||
|
DISPLAY "Valuta@50" 104@->S0
|
||||||
|
OUTPUT F_DATACAMBIO D0
|
||||||
|
OUTPUT F_CAMBIO S4
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
GROUP 6
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CAMBIO 15 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 2 "Cambio "
|
||||||
|
GROUP 6
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_ABI 5
|
NUMBER F_ABI 5
|
||||||
@ -133,7 +182,8 @@ BEGIN
|
|||||||
DISPLAY "Denominazione@50" 100@->S0
|
DISPLAY "Denominazione@50" 100@->S0
|
||||||
OUTPUT F_ABI CODTAB[1,5]
|
OUTPUT F_ABI CODTAB[1,5]
|
||||||
OUTPUT F_CAB CODTAB[6,10]
|
OUTPUT F_CAB CODTAB[6,10]
|
||||||
CHECKTYPE REQUIRED
|
OUTPUT F_DESCAB 100@->S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CAB 5
|
NUMBER F_CAB 5
|
||||||
@ -144,9 +194,24 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_DESCAB 50 48
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 3 ""
|
||||||
|
USE %BAN KEY 2 SELECT 100@->CODTAB!=""
|
||||||
|
JOIN BNP ALIAS 100 INTO CODTAB==CODTAB
|
||||||
|
INPUT S0 F_DESCAB
|
||||||
|
DISPLAY "Denominazione@50" S0
|
||||||
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
|
OUTPUT F_ABI CODTAB[1,5]
|
||||||
|
OUTPUT F_CAB CODTAB[6,10]
|
||||||
|
OUTPUT F_DESCAB S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
LIST F_TIPOPAG 1 30
|
LIST F_TIPOPAG 1 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 35 3 "Pagamento "
|
PROMPT 2 4 "Pagamento "
|
||||||
ITEM "1|Rimessa Diretta"
|
ITEM "1|Rimessa Diretta"
|
||||||
ITEM "2|Tratta"
|
ITEM "2|Tratta"
|
||||||
ITEM "3|Ricevuta Bancaria"
|
ITEM "3|Ricevuta Bancaria"
|
||||||
@ -158,50 +223,77 @@ BEGIN
|
|||||||
ITEM "9|Bonifico"
|
ITEM "9|Bonifico"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPOCF 1 10
|
LIST F_TIPOEFF 1 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Seleziona "
|
PROMPT 50 4 "Tipo effetti "
|
||||||
|
ITEM "C|Attivi"
|
||||||
|
MESSAGE COPY,F_TIPOCF
|
||||||
|
ITEM "F|Passivi"
|
||||||
|
MESSAGE COPY,F_TIPOCF
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCF 1 9
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 ""
|
||||||
ITEM "C|Cliente"
|
ITEM "C|Cliente"
|
||||||
ITEM "F|Fornitore"
|
ITEM "F|Fornitore"
|
||||||
GROUP 3
|
FLAGS "D"
|
||||||
|
//GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CLIFO 6
|
NUMBER F_CLIFO 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 5 ""
|
PROMPT 15 6 ""
|
||||||
USE LF_CLIFO
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
INPUT CODCF F_CLIFO
|
INPUT CODCF F_CLIFO
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
OUTPUT F_CLIFO CODCF
|
OUTPUT F_CLIFO CODCF
|
||||||
|
OUTPUT F_RAGSOCCF RAGSOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOCCF 50 37
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 6 ""
|
||||||
|
USE LF_CLIFO KEY 2
|
||||||
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
|
INPUT RAGSOC F_RAGSOCCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
COPY OUTPUT F_CLIFO
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
GROUP 4
|
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DA_DATA
|
DATE F_DA_DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Dalla data "
|
PROMPT 2 7 "Dal "
|
||||||
GROUP 4
|
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_A_DATA
|
DATE F_A_DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 6 "Alla data "
|
PROMPT 20 7 "Al "
|
||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
GROUP 4
|
END
|
||||||
|
|
||||||
|
LISTBOX F_SORT 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 7 "Ordinamento "
|
||||||
|
ITEM " |Standard"
|
||||||
|
ITEM "1|Scadenza"
|
||||||
|
ITEM "2|Residuo"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_AGGIORNA 10 2
|
BUTTON F_AGGIORNA 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 66 5 ""
|
PROMPT 66 6 ""
|
||||||
PICTURE BMP_SELECT
|
PICTURE BMP_SELECT
|
||||||
GROUP 4
|
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_SHEET 0 -2
|
SPREADSHEET F_SHEET 0 -2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 7 ""
|
PROMPT 0 8 ""
|
||||||
ITEM "Importo@18"
|
ITEM "Importo@18"
|
||||||
ITEM "A/S@3"
|
ITEM "A/S@3"
|
||||||
ITEM "Residuo@18"
|
ITEM "Residuo@18"
|
||||||
@ -211,25 +303,46 @@ BEGIN
|
|||||||
ITEM "Partita"
|
ITEM "Partita"
|
||||||
ITEM "Riga"
|
ITEM "Riga"
|
||||||
ITEM "Rata"
|
ITEM "Rata"
|
||||||
ITEM "Data@10"
|
ITEM "Scadenza@10"
|
||||||
ITEM "Riga"
|
ITEM "Riga"
|
||||||
ITEM "Effetto"
|
ITEM "Effetto"
|
||||||
|
ITEM "Tipo Pagamento@20"
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY F_TOTAL 18
|
CURRENCY F_TOTAL 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 -1 "Totale "
|
PROMPT 1 -1 "Totale "
|
||||||
|
DRIVENBY F_CODVAL
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_CONTABILI 30
|
CURRENCY F_SPESE 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 41 -1 "~Contabilizzazione"
|
PROMPT 28 -1 "Spese "
|
||||||
GROUP 5
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Selezione effetti" -1 -1 78 19
|
||||||
|
|
||||||
|
LIST F_TIPOPAGEFF 1 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Solo effetti con tipo pagamento "
|
||||||
|
ITEM " | "
|
||||||
|
ITEM "1|Rimessa Diretta"
|
||||||
|
ITEM "2|Tratta"
|
||||||
|
ITEM "3|Ricevuta Bancaria"
|
||||||
|
ITEM "4|Cessione"
|
||||||
|
ITEM "5|Paghero'"
|
||||||
|
ITEM "6|Lettera di credito"
|
||||||
|
ITEM "7|Tratta accettata"
|
||||||
|
ITEM "8|Rapporti interbancari diretti"
|
||||||
|
ITEM "9|Bonifico"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Rate" -1 -1 60 9
|
PAGE "Rate" -1 -1 60 9
|
||||||
@ -267,7 +380,7 @@ END
|
|||||||
STRING F_PARTITA 7
|
STRING F_PARTITA 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 3 "Partita "
|
PROMPT 21 3 "Partita "
|
||||||
FLAGS "D"
|
FLAGS "D_"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_RIGA 4
|
NUMBER F_RIGA 4
|
||||||
@ -284,7 +397,7 @@ END
|
|||||||
|
|
||||||
DATE F_DATA
|
DATE F_DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Data "
|
PROMPT 1 4 "Scadenza"
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -308,6 +421,12 @@ BEGIN
|
|||||||
ITEM "S|Saldo"
|
ITEM "S|Saldo"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_DESC_TIPO 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "Tipo pagamento "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
BUTTON F_PAGA 10 2
|
BUTTON F_PAGA 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -13 -1 "~Paga"
|
PROMPT -13 -1 "~Paga"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user