예제 #1
0
 public static function Factory(SInvoice $header, $line_data, &$errors)
 {
     if (empty($line_data['invoice_id'])) {
         $line_data['invoice_id'] = $header->id;
     }
     if (empty($line_data['line_number'])) {
         $line_data['line_number'] = $header->getNextLineNumber();
     }
     if ($line_data['sales_qty'] > 0 && $line_data['sales_price'] > 0) {
         // do nothing
     } else {
         $errors[] = 'Zero quantity or net value';
         return false;
     }
     $line_data['invoice_id'] = $header->id;
     if (!isset($line_data['move_stock'])) {
         $line_data['move_stock'] = 'f';
     }
     if ($line_data['productline_id'] == -1) {
         $line_data['productline_id'] = '';
         $line_data['stitem_id'] = '';
     } elseif ($line_data['productline_id'] > 0) {
         $productline = DataObjectFactory::Factory('SOProductline');
         $productline->load($line_data['productline_id']);
         if ($productline && $productline->isLoaded()) {
             $productlineheader = $productline->product_detail;
             $line_data['stitem_id'] = $productlineheader->stitem_id;
             $line_data['item_description'] = $productlineheader->stitem;
         } else {
             $line_data['stitem_id'] = '';
         }
         if (!empty($line_data['stitem_id'])) {
             $stitem = DataObjectFactory::Factory('STitem');
             $stitem->load($line_data['stitem_id']);
             if ($stitem) {
                 $line_data['item_description'] = $stitem->getIdentifierValue();
                 $line_data['stuom_id'] = $stitem->uom_id;
             }
         }
     }
     if (empty($line_data['description'])) {
         $line_data['description'] = $line_data['item_description'];
     }
     $line_data['tax_status_id'] = $header->tax_status_id;
     $line_data['currency_id'] = $header->currency_id;
     $line_data['rate'] = $header->rate;
     $line_data['twin_currency_id'] = $header->twin_currency_id;
     $line_data['twin_rate'] = $header->twin_rate;
     $line_data['settlement_discount'] = $header->payment_term->calcSettlementDiscount($line_data['net_value']);
     $line_data['glaccount_centre_id'] = GLAccountCentre::getAccountCentreId($line_data['glaccount_id'], $line_data['glcentre_id'], $errors);
     return parent::makeLine($line_data, 'SInvoiceLine', $errors);
 }