public function model_before_check(Model_Purchase $purchase, Jam_Event_Data $data) { if ($purchase->shipping_required) { if ($purchase->shipping_same_as_billing and !$purchase->billing_address) { $purchase->errors()->add('billing_address', 'present'); } elseif (!$purchase->shipping_same_as_billing and !$purchase->shipping_address) { $purchase->errors()->add('shipping_address', 'present'); } else { $purchase->shipping_address()->fields_required = TRUE; } if ($purchase->items_count(array('can_ship' => FALSE))) { $purchase->errors()->add('brand_purchases', 'cannot_ship'); } } }
public function validate_purchase(Model_Purchase $purchase) { $purchase_price = $purchase->total_price('product'); if ($purchase_price->is(Jam_Price::LESS_THAN, $this->requirement)) { $purchase->errors()->add('promo_code_text', 'requirement', array(':more_than' => $this->requirement->humanize())); } }
/** * If there is a new value in promo_code_text, try to load promo_code object. * If the new value is NULL, remove it * @param Model_Purchase $purchase */ public function model_after_check(Model_Purchase $purchase) { if ($purchase->changed('promo_code_text') and !$purchase->errors('promo_code_text')) { if ($purchase->promo_code_text) { $purchase->promo_code = Jam::find('promo_code', $purchase->promo_code_text); } else { $purchase->promo_code = NULL; } } }