00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <iostream>
00013 #include <iomanip>
00014 #include "cgiClass.h"
00015 #include "cgiTemplates.h"
00016 #include "connectstring"
00017 #include "forms.h"
00018 #include "ocTypes.h"
00019 #include "ocString.h"
00020 #include "cgiTemplates.h"
00021
00022 #include "read_write_base.hpp"
00023 #include "superlist_base.hpp"
00024 #include "forms_base.hpp"
00025 #include "Affiliate.hpp"
00026 #include "openLogin.h"
00027 #include "sublist_base.hpp"
00028 using namespace std;
00029 openLogin oLogin;
00030
00031 class Ordered_List: public sublist_base
00032 {
00033 double total;
00034 double commission;
00035 public:
00036 ocString Parent_Id;
00037
00038 Ordered_List(cgiScript&sc):sublist_base(sc),total(0),commission(0){;}
00039 ~Ordered_List(){;}
00040
00041 bool list_display( void )
00042 {
00043 bool breturn = true;
00044 total = 0;
00045 commission = 0;
00046 string sql = "select odr.Id as 'Order Id', "
00047 "odr.Order_Total as 'Order Total', "
00048 "prm.Percent_Commission as 'Commission', "
00049 "date_format(odr.Order_Date, '%m/%d/%Y') as 'Date Ordered', "
00050 "ost.Name as 'Order Status', ost.Id "
00051 "from Ordered as odr "
00052 "inner join Promotion as prm on odr.Promotion = prm.Id "
00053 "inner Join Affiliate aff on aff.Promotion = prm.Id "
00054 "inner join Order_Status ost on ost.Id = Order_Status_Id where aff.Id = ";
00055 sql += Parent_Id;
00056 hotCol=-1;
00057 editLink = listTemplate.getParagraph("hotcolumn");
00058 editLink = editLink.replace("$prog$","Ordered_Popup.cgi");
00059 string heading = "Order Id|Order Total|Commission|Date Ordered|Order Status|Pay";
00060
00061 emitHeadings(heading);
00062
00063 getData( sql );
00064 emitData();
00065 emitEnd();
00066 return breturn;
00067 }
00068 virtual void sendField( int iField, ocString & td )
00069 {
00070 money lineAmount;
00071 money lineCommission;
00072 ocString content;
00073
00074 switch( iField )
00075 {
00076 case 1:
00077 lineAmount = atof(rs.getField(iField).format().c_str());
00078 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", lineAmount.format("%n") );
00079 total += lineAmount.amount();
00080 break;
00081 case 2:
00082 lineAmount = atof(rs.getField(1).format().c_str());
00083 lineCommission.amount() = atof(rs.getField(iField).format().c_str());
00084 lineCommission.amount() *= lineAmount.amount();
00085 lineCommission.amount() /= 100.0;
00086 commission += lineCommission.amount();
00087 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", lineCommission.format("%n") );
00088 break;
00089 case 5:
00090 content = " ";
00091 if( rs.getField(5).format() != "3" )
00092 {
00093 content = "<input type='checkbox' name='odrId' value='";
00094 content += rs.getField(0).format();
00095 content += "' />";
00096 }
00097 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", content);
00098 break;
00099 default:
00100 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", rs.getField(iField).format().c_str() );
00101 break;
00102 }
00103
00104 }
00105
00106 void derived_complete_event( void )
00107 {
00108 money totalAmount = total;
00109 money totalCommission = commission;
00110 string payButton = "<input type='button' onclick='payCommission("+ Parent_Id +")' value='Pay'/>";
00111 webIO << listTemplate.getParagraph("tr");
00112 ocString totalText = "Total: ";
00113 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", totalText );
00114 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", totalAmount.format("%n") );
00115 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", totalCommission.format("%n") );
00116 for( int pos=0; pos < 2; pos ++ )
00117 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$"," ");
00118 webIO << ocString(listTemplate.getParagraph("td")).replace( "$data$", payButton );
00119 webIO << listTemplate.getParagraph("end_tr");
00120 }
00121 };
00122
00123 class Affiliate_List: public list_base
00124 {
00125 public:
00126
00127 Affiliate_List(cgiScript&sc,Session_Obj & session):list_base(sc,session){;}
00128 ~Affiliate_List(){;}
00129
00130 bool list_display( void )
00131 {
00132 bool breturn = true;
00133
00134 hotCol=-2;
00135 editLink = listTemplate.getParagraph("hotcolumn");
00136 editLink = editLink.replace("$prog$","Affiliate_UI.cgi");
00137 emitFilter( "Affiliate_UI.cgi",
00138 "<h2>Affiliates · Search by Organization Name</h2>" );
00139 string heading =
00140 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Id'>Id</a>|"
00141 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Organization_Name'>Organization</a>|"
00142 "<a class='sortcol' href='Affiliate_UI.cgi?sort=First'>First</a>|"
00143 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Last'>Last</a>|"
00144 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Phone'>Phone</a>|"
00145 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Mobile'>Mobile</a>|"
00146 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Email'>Email</a>|"
00147 "<a class='sortcol' href='Affiliate_UI.cgi?sort=City'>City</a>|"
00148 "<a class='sortcol' href='Affiliate_UI.cgi?sort=State'>State</a>|"
00149 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Zip'>Zip</a>|"
00150 "<a class='sortcol' href='Affiliate_UI.cgi?sort=Country'>Country</a>"
00151 ;
00152 emitHeadings(heading);
00153 getFilteredData(
00154 "Id, "
00155 "Organization_Name, "
00156 "First, "
00157 "Last, "
00158 "Phone, "
00159 "Mobile, "
00160 "Email, "
00161 "City, "
00162 "State, "
00163 "Zip, "
00164 "Country "
00165 ,"Affiliate",
00166 "Organization_Name like '$filter$%'" );
00167 emitData();
00168 emitNavigation("Affiliate_UI.cgi");
00169 emitEnd();
00170 return breturn;
00171 }
00172 };
00173
00174 class Affiliate_form: public Affiliate_Obj, public forms_base
00175 {
00176 public:
00177 Affiliate_form(cgiScript & script):Affiliate_Obj(),forms_base(script){setKey(*this);}
00178 virtual ~Affiliate_form(){;}
00179
00180 void form_id_transfer( void )
00181 {
00182 llongFXfer( "Id", Id );
00183 }
00184 void form_data_transfer( void )
00185 {
00186 stringFXfer( "Organization_Name", Organization_Name);
00187 stringFXfer( "First", First);
00188 stringFXfer( "Last", Last);
00189 llongFXfer( "Promotion", Promotion);
00190 stringFXfer( "Phone", Phone);
00191 stringFXfer( "Mobile", Mobile);
00192 stringFXfer( "Email", Email);
00193 stringFXfer( "Password", Password);
00194 stringFXfer( "Address_1", Address_1);
00195 stringFXfer( "Address_2", Address_2);
00196 stringFXfer( "City", City);
00197 stringFXfer( "State", State);
00198 stringFXfer( "Zip", Zip);
00199
00200
00201 }
00202
00203 bool dbf_action( string mode, changeMap & changes )
00204 {
00205 return db_action( mode, changes );
00206 }
00207
00208
00209 bool form_display( void )
00210 {
00211 bool breturn = true;
00212 ocString sql;
00213 script << makeTop("Affiliate_UI.cgi", "Affiliate")
00214 << formTemplate.getParagraph("advanced_begin");
00215 script << makeStaticBox("Id", "Id", Id ,"8");
00216 script << "<br class='clearall'>" << endl;
00217 script << formTemplate.getParagraph("advanced_end");
00218
00219 script << makeTextBox("Organization Name", "Organization_Name", Organization_Name ,"125","35");
00220 script << "<br class='clearall'>" << endl;
00221
00222 script << makeTextBox("First", "First", First ,"125","35");
00223 script << "<br class='clearall'>" << endl;
00224
00225 script << makeTextBox("Last", "Last", Last ,"125","35");
00226 script << "<br class='clearall'>" << endl;
00227 sql = "select Id, Name from Promotion where Percent_Commission > 0.0 order by Name";
00228
00229 script << makeComboBox("Promotion", "Promotion", Promotion ,sql,"Please Choose");
00230 script << "<br class='clearall'>" << endl;
00231
00232 script << makeTextBox("Phone", "Phone", Phone ,"125","35");
00233 script << "<br class='clearall'>" << endl;
00234
00235 script << makeTextBox("Mobile", "Mobile", Mobile ,"125","35");
00236 script << "<br class='clearall'>" << endl;
00237
00238 script << makeTextBox("Email", "Email", Email ,"125","35");
00239 script << "<br class='clearall'>" << endl;
00240
00241 script << makeTextBox("Password", "Password", Password ,"125","35");
00242 script << "<br class='clearall'>" << endl;
00243
00244 script << makeTextBox("Address 1", "Address_1", Address_1 ,"125","35");
00245 script << "<br class='clearall'>" << endl;
00246
00247 script << makeTextBox("Address 2", "Address_2", Address_2 ,"125","35");
00248 script << "<br class='clearall'>" << endl;
00249
00250 script << makeTextBox("City", "City", City ,"125","35");
00251 script << "<br class='clearall'>" << endl;
00252
00253 script << makeStateBox("State", "State", State );
00254 script << "<br class='clearall'>" << endl;
00255
00256 script << makeTextBox("Zip", "Zip", Zip ,"125","35");
00257 script << "<br class='clearall'>" << endl;
00258
00259 script << "<br class='clearall'>" << endl;
00260 script << makeButtons( key() );
00261
00262 if( key() )
00263 {
00264 Ordered_List OrderedList(script);
00265 OrderedList.Parent_Id.append(key());
00266 OrderedList.loadListTemplates("Templates/spawninglist.htmp");
00267 script << "<h4>Commission Orders:</h4>" << endl;
00268 OrderedList.list_display();
00269 }
00270 script << makeBottom( m_result ) << endl;
00271 return breturn;
00272 }
00273
00274 };
00275
00276
00277
00278 int main( int argcount, char ** args )
00279 {
00280 cgiScript script( "text/html", false );
00281 Affiliate_form myFrm(script);
00282 Affiliate_List mylist(script,oLogin.Session());
00283 if( oLogin.testLoginStatus() )
00284 {
00285 script.closeHeader();
00286 cgiTemplates pgTemplate;
00287 pgTemplate.load("Templates/adminPane.htmp");
00288
00289 script << ocString(pgTemplate.getParagraph("top"))
00290 .replaceAll("$heading$","Affiliate")
00291 .replace("<!--Added_Header_Content-->","<SCRIPT type=\"text/javascript\" src=\"payCommission.js\"></SCRIPT>");
00292
00293 myFrm.loadControlTemplates("Templates/divform.htmp");
00294 myFrm.form_action();
00295 myFrm.form_display();
00296
00297 mylist.loadListTemplates("Templates/navlist.htmp");
00298 mylist.list_display();
00299
00300 ocString end = pgTemplate.getParagraph("bottom");
00301 script << end;
00302 }
00303 else
00304 {
00305 script.Redirect("signIn.html");
00306 }
00307 }
00308
00309 #include "read_write_base.cpp"
00310 #include "forms_base.cpp"
00311