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:
alex 2009-06-11 01:02:50 +00:00
parent 0f3e400b2a
commit 259d007550

View File

@ -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")
{ {