00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef PAYMENT_SERVICES
00010 #define PAYMENT_SERVICES
00011
00012 #include "paymentEnumerations.h"
00013
00014 class Payment_Type_Parameter
00015 {
00016 public:
00017 identifier Id;
00018 long long Service_Type;
00019 long Value_Location;
00020 long Param_Type;
00021 long Interface_Type;
00022 string Name;
00023 string Machine_Name;
00024 string Value;
00025 string Instructions;
00026
00027 Payment_Type_Parameter()
00028 :Id(0LL),Service_Type(0LL),Value_Location(0LL),Param_Type(0LL)
00029 {;}
00030 ~Payment_Type_Parameter(){;}
00031 Payment_Type_Parameter & operator = ( const Payment_Type_Parameter & in )
00032 {
00033 Id=Id;
00034 Service_Type=in.Service_Type;
00035 Value_Location=in.Value_Location;
00036 Param_Type=in.Param_Type;
00037 Interface_Type=in.Interface_Type;
00038 Name=in.Name;
00039 Machine_Name=in.Machine_Name;
00040 Value=in.Value;
00041 Instructions=in.Instructions;
00042 }
00043 };
00044
00045
00046 typedef multimap < long, Payment_Type_Parameter > Payment_Type_Parameters;
00047
00048 class Customer_Payment_Parameter_Datum
00049 {
00050 public:
00051
00052 identifier Id;
00053 long long Customer_Pmt_Service_Id;
00054 long long Pmt_Type_Param_Id;
00055 string Name;
00056 string Machine_Name;
00057 string Value;
00058 Customer_Payment_Parameter_Datum():Id(0LL),Customer_Pmt_Service_Id(0LL),Pmt_Type_Param_Id(0LL)
00059 {
00060 }
00061 virtual ~Customer_Payment_Parameter_Datum(){;}
00062 Customer_Payment_Parameter_Datum & operator = ( const Customer_Payment_Parameter_Datum & in )
00063 {
00064 Id=in.Id;
00065 Customer_Pmt_Service_Id=in.Customer_Pmt_Service_Id;
00066 Pmt_Type_Param_Id=in.Pmt_Type_Param_Id;
00067 Name=in.Name;
00068 Machine_Name=in.Machine_Name;
00069 Value=in.Value;
00070 return *this;
00071 }
00072 };
00073
00074 typedef vector< Customer_Payment_Parameter_Datum > Customer_Payment_Parameters;
00075
00076 class Customer_Payment_Parameter : public Customer_Payment_Parameter_Datum, public read_write_base
00077 {
00078 public:
00079
00080
00081 Customer_Payment_Parameter():Customer_Payment_Parameter_Datum()
00082 {
00083 data_name("Customer_Payment_Parameter");
00084 addDXMap( new llongXfer("Id", &Id) );
00085 addDXMap( new llongXfer("Customer_Pmt_Service_Id", &Customer_Pmt_Service_Id) );
00086 addDXMap( new llongXfer("Pmt_Type_Param_Id", &Pmt_Type_Param_Id) );
00087 addDXMap( new stringXfer("Machine_Name", &Machine_Name) );
00088 addDXMap( new stringXfer("Value", &Value) );
00089 }
00090 ~Customer_Payment_Parameter(){;}
00091 };
00092
00093
00094 class Payment_Service: public read_write_base
00095 {
00096 public:
00097 identifier Id;
00098 long long Type;
00099 string Name;
00100 string Label;
00101 string Instructions;
00102
00103 Payment_Type_Parameters sys_params;
00104 Payment_Type_Parameters usr_params;
00105 Payment_Type_Parameters dyn_params;
00106
00107
00108 Payment_Service():read_write_base(),Id(0LL),Type(0L)
00109 {
00110 data_name("Payment_Service");
00111 addDXMap( new llongXfer("Id", &Id) );
00112 addDXMap( new llongXfer("Type", &Type) );
00113 addDXMap( new stringXfer("Name", &Name) );
00114 addDXMap( new stringXfer("Label", &Label) );
00115 addDXMap( new stringXfer("Instructions", &Instructions) );
00116 }
00117
00118 bool getPaymentServiceParameters(void)
00119 {
00120 bool bReturn = false;
00121 ocString type;
00122 type.append(Type);
00123 string sql;
00124
00125 sql = "select Id, "
00126 " Service_Type, "
00127 " Value_Location, "
00128 " Param_Type, "
00129 " Interface_Type, "
00130 " Name, "
00131 " Machine_Name, "
00132 " Value, "
00133 " Instructions from Payment_Type_Parameter where "
00134 " Service_Type = ";
00135 sql += type;
00136
00137
00138 if( rs.open(sql) )
00139 {
00140 bReturn = true;
00141 do
00142 {
00143 addParameter();
00144 } while(rs.next());
00145 }
00146 return bReturn;
00147 }
00148
00149 void addParameter(void)
00150 {
00151 Payment_Type_Parameter temp;
00152 setParameter(temp);
00153 if(temp.Value_Location==pml_parm)
00154 sys_params.insert(make_pair(temp.Param_Type,temp));
00155 else if(temp.Value_Location==pml_user_parm)
00156 usr_params.insert(make_pair(temp.Param_Type,temp));
00157 else
00158 dyn_params.insert(make_pair(temp.Param_Type,temp));
00159 }
00160
00161 void setParameter( Payment_Type_Parameter & output )
00162 {
00163 output.Id=atoll(rs.getField(0).format().c_str());
00164 output.Service_Type=atol(rs.getField(1).format().c_str());
00165 output.Value_Location=atol(rs.getField(2).format().c_str());
00166 output.Param_Type=atol(rs.getField(3).format().c_str());
00167 output.Interface_Type=atol(rs.getField(4).format().c_str());
00168 output.Name=rs.getField(5).format().c_str();
00169 output.Machine_Name=rs.getField(6).format().c_str();
00170 output.Value=rs.getField(7).format().c_str();
00171 output.Instructions=rs.getField(8).format().c_str();
00172 }
00173
00174 };
00175
00176
00177 class Customer_Payment_Service: public read_write_base
00178 {
00179 public:
00180 identifier Id;
00181 long long Customer_Id;
00182 long long Payment_Service_Id;
00183
00184
00185
00186 Customer_Payment_Parameters params;
00187
00188
00189 Customer_Payment_Service()
00190 :Id(0LL),Customer_Id(0LL)
00191 ,Payment_Service_Id(0LL)
00192 {
00193 data_name("Customer_Payment_Service");
00194 addDXMap( new llongXfer("Id", &Id) );
00195 addDXMap( new llongXfer("Customer_Id", &Customer_Id) );
00196 addDXMap( new llongXfer("Payment_Service_Id", &Payment_Service_Id) );
00197
00198 }
00199 virtual bool ivalidate( void )
00200 {
00201
00202 if( !Customer_Id )
00203 {
00204 m_result = "No Customer ID";
00205
00206 return false;
00207 }
00208 if( !Customer_Id || !Payment_Service_Id )
00209 {
00210 m_result = "No Payment Service Id";
00211
00212 return false;
00213 }
00214
00215 ocString list = "select Id from Customer_Payment_Service where Customer_Id = ";
00216 list.append(Customer_Id);
00217
00218 if( rs.open(list) )
00219 {
00220 ocString ids;
00221 ids += rs.getField(0).format();
00222 while( rs.next() )
00223 {
00224 ids += ",";
00225 ids += rs.getField(0).format();
00226 }
00227 rs.close();
00228 ocString del = "delete from Customer_Payment_Parameter where Customer_Pmt_Service_Id in ( ";
00229 del += ids;
00230 del += ")";
00231 cmd.execute(del);
00232 del = "delete from Customer_Payment_Service where Customer_Id = ";
00233 del.append(Customer_Id);
00234 cmd.execute(del);
00235 }
00236 return true;
00237 }
00238
00239 virtual bool uvalidate( void )
00240 {
00241
00242 if( !Customer_Id )
00243 {
00244 m_result += " No Customer_Id ";
00245 return false;
00246 }
00247 if( !Payment_Service_Id )
00248 {
00249 m_result += " No Payment_Service_Id ";
00250 return false;
00251 }
00252
00253 ocString list = "select Id from Customer_Payment_Service where Customer_Id = ";
00254 list.append(Customer_Id);
00255 if( rs.open(list) )
00256 {
00257 ocString ids;
00258 ids += rs.getField(0).format();
00259 Id = atoll(ids.c_str());
00260 while( rs.next() )
00261 {
00262 ids += ",";
00263 ids += rs.getField(0).format();
00264 }
00265 rs.close();
00266 ocString del = "delete from Customer_Payment_Parameter where Customer_Pmt_Service_Id in ( ";
00267 del += ids;
00268 del += ")";
00269 cmd.execute(del);
00270 }
00271 return true;
00272 }
00273
00274 bool getParameters(void)
00275 {
00276 bool bReturn = false;
00277 ocString sql
00278 = "select Id,Customer_Pmt_Service_Id,Pmt_Type_Param_Id,Machine_Name,Value "
00279 "from Customer_Payment_Parameter where Customer_Pmt_Service_Id = ";
00280 sql.append(Id);
00281 if( rs.open(sql) )
00282 {
00283 bReturn = true;
00284 do
00285 {
00286 addParameter();
00287 } while(rs.next());
00288 }
00289 else
00290 {
00291 m_result += "Get Parameter Failed - sql: ";
00292 m_result +=sql;
00293 }
00294
00295 return bReturn;
00296 }
00297
00298 void addParameter(void)
00299 {
00300 Customer_Payment_Parameter_Datum datum;
00301 setParameter(datum);
00302 params.push_back(datum);
00303 }
00304
00305 void setParameter( Customer_Payment_Parameter_Datum & datum )
00306 {
00307 datum.Id=atoll(rs.getField(0).format().c_str());
00308 datum.Customer_Pmt_Service_Id=atoll(rs.getField(1).format().c_str());
00309 datum.Pmt_Type_Param_Id=atoll(rs.getField(2).format().c_str());
00310 datum.Machine_Name=rs.getField(3).format().c_str();
00311 datum.Value=rs.getField(4).format().c_str();
00312 }
00313 };
00314
00315 #endif
00316