X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=lib%2Forder.php;h=f1911c587521c57883c76591fcf792e23ec328eb;hb=a2e796d4502f96c1ec0e85dd22c7eccf7d1d9ac3;hp=12a34aace9268ff0124e36f3bf33acef6332fe14;hpb=637bc9bc7d65b625a322385b5700bfc169f877c0;p=readifood.git diff --git a/lib/order.php b/lib/order.php index 12a34aa..f1911c5 100644 --- a/lib/order.php +++ b/lib/order.php @@ -230,12 +230,15 @@ } function show_order_form($order = null, $area_id = null) { - global $states; + global $states, $parcel_sizes, $parcel_contents; if ($order) { $q = new OrderStateQuery; $order_state = $q->filterByOrderId($order->getId())->orderByUpdated('desc')->limit(1)->findOne(); - if ($order_state) $state = $order_state->getState(); + if ($order_state) { + $state = $order_state->getState(); + $driver_id = $order_state->getDriverId(); + } } else $order = new Order; @@ -271,9 +274,15 @@ echo " Beneficiary\n"; echo " \n"; echo "\n"; @@ -290,10 +299,27 @@ echo "\n"; echo "\n"; - /* Quantity. */ + /* Parcel type. */ + echo "\n"; + echo " Parcel size\n"; + echo " \n"; + echo "\n"; + + /* Parcel contents. */ echo "\n"; - echo " Quantity (kg)\n"; - echo " "; input("quantity", sprintf("%0.2f", $order->getQuantity() / 1000)); echo "\n"; + echo " Parcel contents\n"; + echo " "; + for ($i = count($parcel_sizes); $i < count($parcel_contents); $i++) { + echo " getParcel() & (1 << $i)) echo " checked"; + echo ">$parcel_contents[$i]\n"; + } + echo "\n"; echo "\n"; /* Driver. */ @@ -346,6 +372,37 @@ echo "\n"; } + function show_contact_order_form($contact) { + if (! check_admin(1)) return; + + $area = get_contact_area($contact); + if (! $area) { + echo "

No valid area for contact!

\n"; + return; + } + + $order = new Order; + $order->setBeneficiaryId($contact->getId()); + + echo "
\n"; + echo "

Placing order for " . $contact->getStrongLink() . "."; + $parcel = $contact->getParcel(); + if ($parcel) { + echo " Suggested parcel type is " . get_contact_parcel_string($contact) . ""; + $order->setParcel($parcel); + } + echo "

\n"; + + echo "\n"; + show_order_form($order, $area_id); + + echo "\n"; + echo " \n"; + echo "\n"; + echo "
"; submit("add_order", "Order"); echo "
\n"; + echo "
\n"; + } + function show_add_new_order_form() { if (! check_admin(1)) return; @@ -368,7 +425,7 @@ } function update_order(&$order, $new = false) { - global $user_id; + global $user_id, $parcel_sizes, $parcel_contents; #$date = ymd_to_iso8601("date"); $date = $_POST['date']; @@ -380,6 +437,10 @@ if (! $driver_id) $driver_id = null; $state = $_POST['state']; if (! $state) $state = $GLOBALS['STATE_PLACED']; + $parcel = $_POST['parcel_size']; + for ($i = count($parcel_sizes); $i < count($parcel_contents); $i++) { + if ($_POST['parcel_' . $i] == "on") $parcel |= (1 << $i); + } if ($date) { list($y, $m, $d) = explode('-', $date); @@ -428,7 +489,7 @@ $order->setRequesterId($requester_id); $order->setBeneficiaryId($beneficiary_id); $order->setHubId($hub_id); - $order->setQuantity($quantity * 1000); + $order->setParcel($parcel); /* XXX: begin/commit */ try { @@ -501,6 +562,7 @@ $driver_id = $order_state->getDriverId(); if ($driver_id) $driver = get_contact_by_id($driver_id); + else $driver = null; /* XXX */ $state = $order_state->getState(); @@ -600,6 +662,15 @@ break; } } + else if ($parameters[0] == "place") { + if ($parameters[1] == "for") { + if ($parameters[2] == "beneficiary") { + if ($parameters[4]) $contact = get_contact_by_id($parameters[4]); + if (! $contact) $contact = get_contact_by_name(urldecode($parameters[3])); + if ($contact) show_contact_order_form($contact); + } + } + } } list($ignored, $id, $args) = parse_parameters($parameters); //echo "

$name($id) " . print_r($args, true) . "

\n";