public static function get_from_id($id) { $id = (int) $id; $date = Gadget::$date_do->format(DATE_FORMAT_MYSQL); if ($row = dbi()->q_1("SELECT Subscriptions.*, Customers.*\n FROM Customers\n LEFT JOIN Subscriptions\n ON (Customers.CustomerID = Subscriptions.CustomerID AND DeliveryDate = '{$date}')\n WHERE Customers.CustomerID = '{$id}'")) { $DeliveryAddress = new Address(array('Address1' => $row->DeliveryAddress1, 'Address2' => $row->DeliveryAddress2, 'City' => $row->DeliveryCity, 'State' => $row->DeliveryState, 'Zip' => $row->DeliveryZip, 'Comments' => $row->DeliveryComments)); $BillingAddress = new Address(array('Address1' => $row->BillingAddress1, 'Address2' => $row->BillingAddress2, 'City' => $row->BillingCity, 'State' => $row->BillingState, 'Zip' => $row->BillingZip)); return new Customer(array('CustomerID' => $row->CustomerID, 'Email' => $row->Email, 'Password' => $row->Password, 'FirstName' => $row->FirstName, 'LastName' => $row->LastName, 'ContactPhone' => $row->ContactPhone, 'Allergies' => $row->Allergies, 'BillingFirstName' => $row->BillingFirstName, 'BillingLastName' => $row->BillingLastName, 'BillingPhone' => $row->BillingPhone, 'BillingCardType' => $row->BillingCardType, 'BillingCardNumber' => $row->BillingCardNumber, 'First_Order_Date' => $row->First_Order_Date, 'Last_Order_Date' => $row->Last_Order_Date, 'Total_Orders' => $row->Total_Orders, 'Delivery_Window' => $row->Delivery_Window, 'CIMCustID' => $row->CIMCustID, 'CIMPymtProfID' => $row->CIMPymtProfID, 'DeliveryAddress' => $DeliveryAddress, 'BillingAddress' => $BillingAddress, 'WeeklyMeals' => $row->WeeklyMeals, 'WeeklyReg' => $row->WeeklyReg, 'WeeklyVeg' => $row->WeeklyVeg, 'Want' => $row->Want, 'DontWant' => $row->DontWant, 'Comments' => $row->Comments, 'PromoCodeID' => $row->PromoCodeID, 'PromoCode' => PromoCode::get_from_id($row->PromoCodeID))); } else { return NULL; } }
public function &__get($name) { switch ($name) { case 'PromoCode': if ($this->PromoCodeID) { return $this->PromoCode = PromoCode::get_from_id($this->PromoCodeID); } break; case 'Customer': if ($this->CustomerID) { return $this->Customer = Customer::get_from_id($this->CustomerID); } break; } if (isset($this->Amounts->$name)) { return $this->Amounts->$name; } return NULL; }
foreach ($validation->errors as $error) { Gadget::add_message($error); } } else { $PromoCodeID = NULL; if ($_POST['PromoCodeName']) { $PromoCodeName = $dbi->escape($_POST['PromoCodeName']); $PromoCodeID = $dbi->q_1("SELECT PromoCodeID FROM PromoCodes WHERE PromoCodeName = '$PromoCodeName' AND ValidFrom <= CURDATE() AND (ValidTo IS NULL OR ValidTo >= CURDATE())")->PromoCodeID; $PromoCode = PromoCode::get_from_id($PromoCodeID); } if ($PromoCode && $PromoCode->can_be_used($_SESSION['CustomerID'], 'GiftCertificates')) { $PromoCodeID = $PromoCode->PromoCodeID; $totalCost = $PromoCode->apply_discount(new Amount($data['GiftAmount'])); $beforePromoCost = new Amount($data['GiftAmount']); } else { $PromoCodeID = NULL; $totalCost = new Amount($data['GiftAmount']); $beforePromoCost = new Amount($data['GiftAmount']); } $transaction = new Transaction(); //$transaction->debug = true; $transaction->amounts['total'] = $totalCost;
$transaction->line_items[] = $li; } if ($meal['VegCount']) { $li = new AuthorizeNetLineItem(); $li->itemId = $meal['Meal']->ItemID; $li->name = strlen($mealName) > 18 ? substr($mealName, 0, 18) . ' - Vegetarian' : $mealName . ' - Vegetarian'; $li->quantity = $meal['VegCount']; $li->unitPrice = $meal['Meal']->Vegetarian_Price; $li->taxable = true; $transaction->line_items[] = $li; } } $transaction->info->description = "Madison & Rayne Order For Week {$week}" . ($order->PromoCode ? ' - ' . $order->PromoCode->description : ''); $transaction->amounts = array('total' => $order->Amounts->Total, 'tax' => $order->Amounts->Tax); // if gift codes bring the total to 0 $promoCode = PromoCode::get_from_id($order->PromoCodeID); if ($order->Amounts->Total == 0) { $krustomer->First_Order_Date = $krustomer->First_Order_Date ? $krustomer->First_Order_Date : $date; $krustomer->Last_Order_Date = date('Y-m-d'); $krustomer->Total_Orders++; $krustomer->update(); $orderSuccess = true; // If they used a promocode that was an ammount, subtract total from promocode amount if ($promoCode->multiple_use == 0) { if ($promoCode->Amount > 0 && $promoCode->PromoCodeType == "Amount Discount") { $newPromoCodeAmount = $promoCode->Amount - $order->Amounts->Total; if ($newPromoCodeAmount < 0) { $newPromoCodeAmount = 0; } $dbi->update('PromoCodes', array('Amount' => $newPromoCodeAmount), array('PromoCodeID' => $order->PromoCodeID)); }