Patch level : 10.0 332
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento Esteso l'handler sulla data di consegna ora duplica la riga se non puo' generare le date di scadenza git-svn-id: svn://10.65.10.50/trunk@19005 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0f3e400b2a
commit
259d007550
157
ve/velib06a.cpp
157
ve/velib06a.cpp
@ -471,89 +471,122 @@ bool dcons_handler( TMask_field& f, KEY key )
|
|||||||
TMask& row_mask = f.mask();
|
TMask& row_mask = f.mask();
|
||||||
TSheet_field& s = *row_mask.get_sheet();
|
TSheet_field& s = *row_mask.get_sheet();
|
||||||
TDocumento_mask & mask = (TDocumento_mask &) s.mask();
|
TDocumento_mask & mask = (TDocumento_mask &) s.mask();
|
||||||
int r = f.mask().get_sheet()->selected() + 1;
|
const int r0 = f.mask().get_sheet()->selected() + 1;
|
||||||
|
int r = r0 + 1;
|
||||||
|
TDocumento & doc = mask.doc();
|
||||||
|
bool multiple_rows = (r <= doc.physical_rows());
|
||||||
|
|
||||||
if (r > 1)
|
if (r > 1)
|
||||||
{
|
{
|
||||||
TDocumento & doc = mask.doc();
|
if (multiple_rows)
|
||||||
const TRiga_documento& prev = doc[r - 1];
|
|
||||||
TDate first_date = prev.get_date(RDOC_DATACONS);
|
|
||||||
TDate second_date = row_mask.get_date(FR_DATACONS);
|
|
||||||
|
|
||||||
if (!second_date.ok())
|
|
||||||
second_date = mask.get_date(F_DATACONS);
|
|
||||||
if (second_date.ok())
|
|
||||||
{
|
{
|
||||||
if (!first_date.ok())
|
const TString codart = doc[r].get(RDOC_CODART);
|
||||||
first_date = mask.get_date(F_DATACONS);
|
|
||||||
if (first_date.ok())
|
multiple_rows = codart == doc[r0].get(RDOC_CODART);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (multiple_rows)
|
||||||
|
{
|
||||||
|
const TRiga_documento& prev = doc[r - 1];
|
||||||
|
TDate first_date = prev.get_date(RDOC_DATACONS);
|
||||||
|
TDate second_date = doc[r].get_date(RDOC_DATACONS);
|
||||||
|
|
||||||
|
if (!second_date.ok())
|
||||||
|
second_date = mask.get_date(F_DATACONS);
|
||||||
|
if (second_date.ok())
|
||||||
{
|
{
|
||||||
if (second_date.is_end_month() && first_date.is_end_month())
|
if (!first_date.ok())
|
||||||
|
first_date = mask.get_date(F_DATACONS);
|
||||||
|
if (first_date.ok())
|
||||||
{
|
{
|
||||||
int year = second_date.year();
|
if (second_date.is_end_month() && first_date.is_end_month())
|
||||||
int month = second_date.month();
|
|
||||||
const int months = ( year * 12 + month) - (first_date.year() * 12 + first_date.month());
|
|
||||||
if (months > 0)
|
|
||||||
{
|
{
|
||||||
for (r++ ; r <= doc.physical_rows(); r++)
|
int year = second_date.year();
|
||||||
{
|
int month = second_date.month();
|
||||||
TRiga_documento & riga = doc[r];
|
const int months = ( year * 12 + month) - (first_date.year() * 12 + first_date.month());
|
||||||
TToken_string & tr = s.row(r - 1);
|
const TString80 cod = doc[r].get(RDOC_CODART);
|
||||||
|
|
||||||
month += months;
|
|
||||||
if (month > 12)
|
|
||||||
{
|
|
||||||
year++;
|
|
||||||
month -= 12;
|
|
||||||
}
|
|
||||||
TDate d(1, month, year);
|
|
||||||
|
|
||||||
d.set_end_month();
|
|
||||||
riga.put(RDOC_DATACONS, d);
|
|
||||||
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
|
|
||||||
}
|
|
||||||
s.force_update();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (second_date.day() == first_date.day())
|
|
||||||
{
|
|
||||||
const int months = ( second_date.year() * 12 + second_date.month()) - (first_date.year() * 12 + first_date.month());
|
|
||||||
if (months > 0)
|
if (months > 0)
|
||||||
{
|
{
|
||||||
for (r++ ; r <= doc.physical_rows(); r++)
|
for (r++ ; r <= doc.physical_rows() && cod == doc[r].get(RDOC_CODART); r++)
|
||||||
{
|
{
|
||||||
TRiga_documento & riga = doc[r];
|
TRiga_documento & riga = doc[r];
|
||||||
TToken_string & tr = s.row(r - 1);
|
TToken_string & tr = s.row(r - 1);
|
||||||
|
|
||||||
second_date.addmonth(months);
|
month += months;
|
||||||
riga.put(RDOC_DATACONS, second_date);
|
if (month > 12)
|
||||||
|
{
|
||||||
|
year++;
|
||||||
|
month -= 12;
|
||||||
|
}
|
||||||
|
TDate d(1, month, year);
|
||||||
|
|
||||||
|
d.set_end_month();
|
||||||
|
riga.put(RDOC_DATACONS, d);
|
||||||
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
|
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
|
||||||
}
|
}
|
||||||
s.force_update();
|
s.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
if (second_date.day() == first_date.day())
|
||||||
const int days = second_date - first_date;
|
|
||||||
|
|
||||||
if (days > 0)
|
|
||||||
{
|
{
|
||||||
for (r++ ; r <= doc.physical_rows(); r++)
|
const int months = ( second_date.year() * 12 + second_date.month()) - (first_date.year() * 12 + first_date.month());
|
||||||
|
if (months > 0)
|
||||||
{
|
{
|
||||||
TRiga_documento & riga = doc[r];
|
const TString80 cod = doc[r].get(RDOC_CODART);
|
||||||
TToken_string & tr = s.row(r - 1);
|
for (r++ ; r <= doc.physical_rows() && cod == doc[r].get(RDOC_CODART); r++)
|
||||||
|
{
|
||||||
|
TRiga_documento & riga = doc[r];
|
||||||
|
TToken_string & tr = s.row(r - 1);
|
||||||
|
|
||||||
second_date += days;
|
second_date.addmonth(months);
|
||||||
riga.put(RDOC_DATACONS, second_date);
|
riga.put(RDOC_DATACONS, second_date);
|
||||||
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
|
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
|
||||||
|
}
|
||||||
|
s.force_update();
|
||||||
}
|
}
|
||||||
s.force_update();
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
const int days = second_date - first_date;
|
||||||
|
|
||||||
|
if (days > 0)
|
||||||
|
{
|
||||||
|
const TString80 cod = doc[r].get(RDOC_CODART);
|
||||||
|
for (r++ ; r <= doc.physical_rows() && cod == doc[r].get(RDOC_CODART); r++)
|
||||||
|
{
|
||||||
|
TRiga_documento & riga = doc[r];
|
||||||
|
TToken_string & tr = s.row(r - 1);
|
||||||
|
|
||||||
|
second_date += days;
|
||||||
|
riga.put(RDOC_DATACONS, second_date);
|
||||||
|
tr.add(riga.get(RDOC_DATACONS), s.cid2index(FR_DATACONS));
|
||||||
|
}
|
||||||
|
s.force_update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TRiga_documento & riga = doc.insert_row(r, doc[r - 1].tipo().codice());
|
||||||
|
|
||||||
|
TDocumento::copy_data(riga, doc[r - 1]);
|
||||||
|
s.insert(r - 1);
|
||||||
|
s.select(r - 1);
|
||||||
|
|
||||||
|
TToken_string & tr = s.row(r - 1);
|
||||||
|
|
||||||
|
riga.zero(RDOC_QTA);
|
||||||
|
riga.zero(RDOC_DATACONS);
|
||||||
|
riga.autoload(s);
|
||||||
|
// tr.add("", s.cid2index(FR_QTA));
|
||||||
|
// tr.add("", s.cid2index(FR_DATACONS));
|
||||||
|
s.check_row(r - 1);
|
||||||
|
s.force_update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -2294,8 +2327,8 @@ bool TDocumento_mask::numdocrif_search_handler(TMask_field& f, KEY key)
|
|||||||
(const char *)m.get(F_CODNUM), m.get_int(F_ANNO));
|
(const char *)m.get(F_CODNUM), m.get_int(F_ANNO));
|
||||||
cur.setfilter(filter);
|
cur.setfilter(filter);
|
||||||
TToken_string siblings;
|
TToken_string siblings;
|
||||||
TToken_string header(HR("Codice|Ragione Sociale@50|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta"));
|
TToken_string header(HR("Codice|Ragione Sociale@50|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Stato"));
|
||||||
TToken_string fieldlist("CODCF|20->RAGSOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL");
|
TToken_string fieldlist("CODCF|20->RAGSOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL|STATO");
|
||||||
|
|
||||||
if (__header == "883")
|
if (__header == "883")
|
||||||
{
|
{
|
||||||
@ -2343,8 +2376,8 @@ bool TDocumento_mask::ragsoc_search_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
cur.setfilter(filter, true);
|
cur.setfilter(filter, true);
|
||||||
TToken_string siblings;
|
TToken_string siblings;
|
||||||
TToken_string header(HR("Ragione Sociale@50|Codice|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Partita IVA"));
|
TToken_string header(HR("Ragione Sociale@50|Codice|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Stato|Partita IVA"));
|
||||||
TToken_string fieldlist("20->RAGSOC|CODCF|NDOC|DATADOC|G1:TOTDOC|CODVAL|20->PAIV");
|
TToken_string fieldlist("20->RAGSOC|CODCF|NDOC|DATADOC|G1:TOTDOC|CODVAL|STATO|20->PAIV");
|
||||||
|
|
||||||
if (__header == "883")
|
if (__header == "883")
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user