diff --git a/ps/pe0001100.cpp b/ps/pe0001100.cpp index 9a74a0e8e..5a6ba2763 100755 --- a/ps/pe0001100.cpp +++ b/ps/pe0001100.cpp @@ -18,7 +18,83 @@ #include #include +class TErogazioni_wincard : public TAS400_recordset +{ + const TVariant& get_field(const TAS400_column_info& fi) const; +public: + TErogazioni_wincard(const char* query = ""); + virtual ~TErogazioni_wincard() { } +}; + + +TErogazioni_wincard::TErogazioni_wincard(const char* query) + : TAS400_recordset(TString("AS400(269,0,0)\n") << query) +{ + create_field("Impianto", 0, 8); + create_field("Cliente", 8, 3); + create_field("Filler01", 11, 14); + create_field("Schede", 25, 5, _intfld); + create_field("Data", 30, 8, _datefld); + create_field("Ora", 38, 8); + create_field("Pompa", 46, 2); + create_field("Prodotto", 48, 15); + create_field("Volume", 63, 15, _realfld); + create_field("Importo", 78, 15, _realfld); + create_field("Prezzo", 93, 15, _realfld); + create_field("Note", 108, 20); + create_field("Ins.Manuale", 128, 1); + create_field("Num. Buono", 129, 10, _realfld); + create_field("DataStampa", 139, 8, _datefld); + create_field("OraStampa", 147, 8); + create_field("Fller02", 155, 1); + create_field("Contatore", 156, 10, _realfld); + create_field("Num. Fattura", 166, 10, _realfld); + create_field("Sconto", 176, 15, _realfld); + create_field("Mess Inc.", 191, 4); + create_field("ID", 195, 10, _realfld); + create_field("Ora Registrazione", 205, 8); + create_field("Venduto", 213, 1); + create_field("Temperatura", 214, 15, _realfld); + create_field("Densità", 229, 15, _realfld); + create_field("Fatt54b", 244, 15, _realfld); + create_field("Data", 259, 8, _datefld); +} + +const TVariant& TErogazioni_wincard::get_field(const TAS400_column_info& ci) const +{ + if (ci._type == _datefld) + { + TVariant & var = get_tmp_var(); + const TRecnotype n = current_row(); + if (n >= 0 && n < items()) + { + const TString& str = row(n).mid(ci._pos, ci._width); + long ansi = 20000000L + atoi(str.right(2)) * 10000 + atoi(str.mid(3,2)) * 100 + atoi(str.left(2)); + + if (ansi > 20510000L) + ansi -= 1000000L; + var = TDate(ansi); + } + + return var; + } + else + if (ci._type == _realfld) + { + TVariant & var = get_tmp_var(); + const TRecnotype n = current_row(); + if (n >= 0 && n < items()) + { + const TString& str = row(n).mid(ci._pos, ci._width); + + var = real(real::ita2eng(str)); + } + + return var; + } + return TAS400_recordset::get_field(ci); +} ///////////////////////////////////////////////////////////