public function deliver($get, $post) { $produce_order_id = $get['produce_order_id']; $deliver_info = SampleProduceOrderDeliverInfo::find('produce_order_id=?', $produce_order_id)->one() ?: new SampleProduceOrderDeliverInfo(); if (!$deliver_info->id) { $tmp = SampleProduceOrder::findOneByPk($produce_order_id); /** * @var CustomerContact $ct * @var Customer $customer */ $ct = $tmp->contact; $customer = $tmp->customer; $deliver_info->customer_name = $customer->company_full_name; $deliver_info->contact = $ct->chinese_name; $deliver_info->phone = $ct->mobile; $deliver_info->address = $customer->address; } if ($post) { $deliver_info->setValue('produce_order_id', $produce_order_id); $deliver_info->setValues($post); $deliver_info->save(); SampleProduceOrder::updateByPk($produce_order_id, array('state' => SampleProduceOrder::STATE_DELIVERED)); return $this->getCommonResult(true); } $logistics_company_list = LogisticsCompany::find('state=?', LogisticsCompany::STATE_ENABLED)->all(); return array('logistics_company_list' => $logistics_company_list, 'deliver_info' => $deliver_info, 'produce_order_id' => $produce_order_id); }
public function __construct($data = array()) { parent::__construct($data); $this->setPropertiesDefine(array('logistics_company' => array('options' => function () { $tmp = LogisticsCompany::find('state=?', LogisticsCompany::STATE_ENABLED)->all(true); return array_combine(array_column($tmp, 'id'), array_column($tmp, 'name')); }, 'display' => function (self $item) { $tmp = LogisticsCompany::findOneByPk($item->logistics_company); if (!$tmp) { return ''; } return $tmp->state == LogisticsCompany::STATE_ENABLED ? $tmp->name : '<del>' . $tmp->name . '</del>'; }), 'fee_currency_id' => array('options' => function () { $tmp = Currency::find()->all(true); return array_combine(array_column($tmp, 'id'), array_column($tmp, 'unit_name')); }, 'display' => function (self $item) { if ($item) { $tmp = Currency::find()->all(true); $tmp = array_group($tmp, 'id', true); return $tmp[$item->fee_currency_id]['unit_name']; } return ''; }), 'deliver_date' => array('default' => date('Y-m-d')))); }