/** * * @param \biz\base\Event $event */ public function purchaseReceiveBody($event) { /* @var $detail \biz\models\PurchaseDtl */ $detail = $event->params[1]; $smallest_uom = Helper::getSmallestProductUom($detail->id_product); $this->updatePrice(['id_product' => $detail->id_product, 'id_uom' => $smallest_uom, 'price' => $detail->selling_price, 'app' => 'purchase', 'id_ref' => $detail->id_purchase_dtl]); }
/** * * @param Event $event */ public function purchaseReceiveEnd($event, $model) { // GL ************* $glHdr = ['date' => date('Y-m-d'), 'type_reff' => GlHeader::TYPE_PURCHASE, 'memo' => null, 'id_reff' => $model->id_purchase, 'id_branch' => $model->id_branch, 'description' => 'Pembelian barang kredit ' . $model->purchase_num]; $dtls = ['PERSEDIAAN' => $model->purchase_value * (1 - $model->item_discount * 0.01), 'HUTANG' => $model->purchase_value * (1 - $model->item_discount * 0.01)]; $glDtls = Helper::entriSheetToGlMaps('PEMBELIAN_KREDIT', $dtls); $this->createGL($glHdr, $glDtls); }
protected function updateCogs($params) { $cogs = Cogs::findOne(['id_product' => $params['id_product']]); if (!$cogs) { $smallest_uom = Helper::getSmallestProductUom($params['id_product']); $cogs = new Cogs(); $cogs->setAttributes(['id_product' => $params['id_product'], 'id_uom' => $smallest_uom, 'cogs' => 0.0]); } $current_stock = Helper::getCurrentStockAll($params['id_product']); $qty_per_uom = Helper::getQtyProductUom($params['id_product'], $params['id_uom']); $added_stock = $params['added_stock'] * $qty_per_uom; $cogs->cogs = 1.0 * ($cogs->cogs * $current_stock + $params['price'] * $params['added_stock']) / ($current_stock + $added_stock); if ($cogs->canSetProperty('logParams')) { $cogs->logParams = ['app' => $params['app'], 'id_ref' => $params['id_ref']]; } if (!$cogs->save()) { throw new UserException(implode(",\n", $cogs->firstErrors)); } return true; }
/** * * @param array $params * Required field id_warehouse, id_product, id_uom, qty * Optional field app, id_ref * @return boolean * @throws UserException */ public function updateStock($params) { $stock = ProductStock::findOne(['id_warehouse' => $params['id_warehouse'], 'id_product' => $params['id_product']]); $qty_per_uom = Helper::getQtyProductUom($params['id_product'], $params['id_uom']); if (!$stock) { $smallest_uom = Helper::getSmallestProductUom($params['id_product']); $stock = new ProductStock(); $stock->setAttributes(['id_warehouse' => $params['id_warehouse'], 'id_product' => $params['id_product'], 'id_uom' => $smallest_uom, 'qty_stock' => 0]); } $stock->qty_stock = $stock->qty_stock + $params['qty'] * $qty_per_uom; if ($stock->canSetProperty('logParams')) { $logParams = ['mv_qty' => $params['qty'] * $qty_per_uom]; foreach (['app', 'id_ref'] as $key) { if (isset($params[$key]) || array_key_exists($key, $params)) { $logParams[$key] = $params[$key]; } } $stock->logParams = $logParams; } if (!$stock->save()) { throw new UserException(implode(",\n", $stock->firstErrors)); } return true; }
/** * * @param TransferDtl $model * @param integer $index * @return string */ function renderRow($model, $index) { ob_start(); ob_implicit_flush(false); ?> <tr> <td style="width: 50px"> <a data-action="delete" title="Delete" href="#"><span class="glyphicon glyphicon-trash"></span></a> <?php echo Html::activeHiddenInput($model, "[{$index}]id_product", ['data-field' => 'id_product', 'id' => false]); ?> </td> <td class="items" style="width: 45%"> <ul class="nav nav-list"> <li><span class="cd_product"><?php echo Html::getAttributeValue($model, 'idProduct[cd_product]'); ?> </span> - <span class="nm_product"><?php echo Html::getAttributeValue($model, 'idProduct[nm_product]'); ?> </span></li> <li> Jumlah <?php echo Html::activeTextInput($model, "[{$index}]transfer_qty_send", ['data-field' => 'transfer_qty_send', 'size' => 5, 'id' => false, 'required' => true]); ?> <?php echo Html::activeDropDownList($model, "[{$index}]id_uom", Helper::getProductUomList($model->id_product), ['data-field' => 'id_uom', 'id' => false]); ?> </li> <li> </li> </ul> </td> <td class="selling" style="width: 40%"> <ul class="nav nav-list"> <li>Receive</li> <li> Jumlah <?php echo Html::activeTextInput($model, "[{$index}]transfer_qty_receive", ['data-field' => 'transfer_qty_receive', 'size' => 5, 'id' => false, 'readonly' => true]); ?> </li> <li> Selisih <?php $selisih = $model->transfer_qty_receive - $model->transfer_qty_send; echo Html::textInput('', $selisih, ['data-field' => 'transfer_selisih', 'size' => 5, 'id' => false, 'readonly' => true]); ?> </li> </ul> </td> <td class="total-price"> <ul class="nav nav-list"> <li> </li> <li> <input type="hidden" data-field="total_price"> </li> </ul> </td> </tr> <?php return trim(preg_replace('/>\\s+</', '><', ob_get_clean())); }
<?php use yii\bootstrap\Modal; use yii\helpers\Html; use biz\tools\Helper; use biz\models\Cashdrawer; $model = new Cashdrawer(['id_branch' => Yii::$app->clientIdBranch, 'cashier_no' => Yii::$app->clientCashierNo]); Modal::begin(['id' => 'dlg-drawer', 'closeButton' => null, 'clientOptions' => ['backdrop' => 'static', 'keyboard' => false]]); ?> <div class="cash-drawer-form"> <?php echo $form->field($model, 'id_branch')->dropDownList(Helper::getBranchList()); ?> <?php echo $form->field($model, 'cashier_no')->dropDownList([1 => 1, 2 => 2, 3 => 3, 4 => 4]); ?> <?php echo $form->field($model, 'init_cash'); ?> <div class="form-group"> <?php echo Html::a('Open New', '', ['class' => 'btn btn-success', 'id' => 'cashdrawer-opennew']); ?> </div> </div> <?php Modal::end(); ?> <?php Modal::begin(['id' => 'dlg-confirm-save', 'closeButton' => null, 'size' => Modal::SIZE_SMALL, 'clientOptions' => ['backdrop' => 'static']]);
public function purchaseReceiveBody($event, $model, $detail) { $smallest_uom = Helper::getSmallestProductUom($detail->id_product); $this->updatePrice(['id_product' => $detail->id_product, 'id_uom' => $smallest_uom, 'price' => $detail->selling_price, 'app' => 'purchase', 'id_ref' => $detail->id_purchase_dtl]); }
/** * @return string */ public function getNmCoaType() { return \biz\tools\Helper::getCoaType()[$this->coa_type]; }
function renderRow($model, $index) { ob_start(); ob_implicit_flush(false); ?> <tr> <td style="width: 50px"> <a data-action="delete" title="Delete" href="#"><span class="glyphicon glyphicon-trash"></span></a> <?php echo Html::activeHiddenInput($model, "[{$index}]id_product", ['data-field' => 'id_product', 'id' => false]); ?> <?php echo Html::activeHiddenInput($model, "[{$index}]id_sales_dtl", ['data-field' => 'id_sales_dtl', 'id' => false]); ?> </td> <td class="items" style="width: 45%"> <ul class="nav nav-list"> <li><span class="cd_product"><?php echo Html::getAttributeValue($model, 'idProduct[cd_product]'); ?> </span> - <span class="nm_product"><?php echo Html::getAttributeValue($model, 'idProduct[nm_product]'); ?> </span></li> <li> Jumlah <?php echo Html::activeTextInput($model, "[{$index}]sales_qty", ['data-field' => 'sales_qty', 'size' => 5, 'id' => false, 'required' => true]); ?> <?php echo Html::activeDropDownList($model, "[{$index}]id_uom", Helper::getProductUomList($model->id_product), ['data-field' => 'id_uom', 'id' => false]); ?> </li> <li> <?php echo Html::activeHiddenInput($model, "[{$index}]sales_price", ['data-field' => 'sales_price', 'id' => false]); ?> Price Rp <span class="sales_price"><?php echo Html::getAttributeValue($model, 'sales_price'); ?> </span> </li> </ul> </td> <td class="selling" style="width: 40%"> <ul class="nav nav-list"> <li>Discon</li> <li> <?php $sales_price = $model->sales_price; $discon = $model->discount; $discon_percen = $sales_price > 0 ? 100 * $discon / $sales_price : 0; $discon_percen = round($discon_percen, 2); ?> Percen <?php echo Html::textInput('', $discon_percen, ['data-field' => 'discount_percen', 'size' => 8, 'id' => false, 'required' => false]); ?> % </li> <li> Discon Rp <?php echo Html::activeTextInput($model, "[{$index}]discount", ['data-field' => 'discount', 'size' => 16, 'id' => false, 'required' => false]); ?> </li> </ul> </td> <td class="total-price"> <ul class="nav nav-list"> <li> </li> <li> <input type="hidden" data-field="total_price"><span class="total-price"></span> </li> </ul> </td> </tr> <?php return trim(preg_replace('/>\\s+</', '><', ob_get_clean())); }
?> <div class="coa-form col-lg-6"> <?php $form = ActiveForm::begin(); ?> <div class="panel panel-primary"> <div class="panel-heading">Chart of Account</div> <div class="panel-body"> <?php // $form->field($model, 'coa_type')->dropDownList(Coa::getCoaType(), ['style' => 'width:180px;']) ?> <?php echo $form->field($model, 'id_coa_parent')->dropDownList(Helper::getGroupedCoaList(true)); ?> <?php echo $form->field($model, 'cd_account')->textInput(['maxlength' => 16, 'style' => 'width:180px;']); ?> <?php echo $form->field($model, 'nm_account')->textInput(['maxlength' => 64]); ?> <?php // $el_id = Html::getInputId($model, 'id_coa_parent'); // $field = $form->field($model, "id_coa_parent", ['template' => "{label}\n{input}{text}\n{hint}\n{error}"]); // $field->labelOptions['for'] = $el_id; // $field->hiddenInput(['id' => 'id_coa_parent']);
/** * * @param Coa $model */ protected function fillAttributes($model) { $model->coa_type = $model->cd_account[0] . '00000'; $model->normal_balance = Helper::getNormalBalanceOfType($model->coa_type); return true; }
public function getDataMaster() { // price squence $squence = Helper::getConfigValue('SALES_PRICE', 'GROSIR_CATEGORY', 1); $price_standart = Helper::getConfigValue('SALES_PRICE', 'PRICE_STANDART', 1); $squences = [$squence]; $query_squence = (new Query())->select('squence_price')->from('price_category'); while (true) { $squence = $query_squence->where(['id_price_category' => $squence])->scalar(); $squence = empty($squence) ? $price_standart : $squence; if (!in_array($squence, $squences)) { $squences[] = $squence; } if ($squence == $price_standart) { break; } } $query_price = (new Query())->select(['id_product', 'id_price_category', 'price'])->from('price')->where(['id_price_category' => $squences]); $prices = []; foreach ($query_price->all() as $row) { $prices[$row['id_product']][$row['id_price_category']] = $row['price']; } // master product $query_master = (new Query())->select(['id' => 'p.id_product', 'cd' => 'p.cd_product', 'nm' => 'p.nm_product', 'u.id_uom', 'u.nm_uom', 'pu.isi'])->from(['p' => 'product'])->innerJoin(['pu' => 'product_uom'], 'pu.id_product=p.id_product')->innerJoin(['u' => 'uom'], 'u.id_uom=pu.id_uom')->orderBy(['p.id_product' => SORT_ASC, 'pu.isi' => SORT_ASC]); $result = []; foreach ($query_master->all() as $row) { $id = $row['id']; if (!isset($result[$id])) { $result[$id] = ['id' => $row['id'], 'cd' => $row['cd'], 'text' => $row['nm'], 'id_uom' => $row['id_uom'], 'nm_uom' => $row['nm_uom'], 'price' => 0]; foreach ($squences as $ct) { if (isset($prices[$id][$ct])) { $result[$id]['price'] = $prices[$id][$ct]; break; } } } $result[$id]['uoms'][$row['id_uom']] = ['id' => $row['id_uom'], 'nm' => $row['nm_uom'], 'isi' => $row['isi']]; } // barcodes $barcodes = []; $query_barcode = (new Query())->select(['barcode' => 'lower(barcode)', 'id' => 'id_product'])->from('product_child')->union((new Query())->select(['lower(cd_product)', 'id_product'])->from('product')); foreach ($query_barcode->all() as $row) { $barcodes[$row['barcode']] = $row['id']; } // customer $query_cust = (new Query())->select(['id' => 'id_customer', 'label' => 'nm_cust'])->from('customer'); return ['product' => $result, 'barcodes' => $barcodes, 'cust' => $query_cust->all()]; }
Purchase Header </div> <div class="panel-body"> <?php echo $form->field($model, 'purchase_num')->textInput(['maxlength' => 16, 'readonly' => true]); ?> <?php $el_id = Html::getInputId($model, 'id_supplier'); $field = $form->field($model, "id_supplier", ['template' => "{label}\n{input}{text}\n{hint}\n{error}"]); $field->labelOptions['for'] = $el_id; $field->hiddenInput(['id' => 'id_supplier']); $field->parts['{text}'] = AutoComplete::widget(['model' => $model, 'attribute' => 'idSupplier[nm_supplier]', 'options' => ['class' => 'form-control', 'id' => $el_id], 'clientOptions' => ['source' => new JsExpression("yii.purchase.sourceSupplier"), 'select' => new JsExpression("yii.purchase.onSupplierSelect"), 'open' => new JsExpression("yii.purchase.onSupplierOpen")]]); echo $field; ?> <?php echo $form->field($model, 'id_warehouse')->dropDownList(Helper::getWarehouseList()); ?> <?php echo $form->field($model, 'purchaseDate')->widget('yii\\jui\\DatePicker', ['options' => ['class' => 'form-control', 'style' => 'width:50%'], 'clientOptions' => ['dateFormat' => 'dd-mm-yy']]); ?> </div> <div class="panel-footer" style="text-align: right;"> <?php echo Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> </div> </div> </div> <?php echo $this->render('_detail', ['model' => $model, 'details' => $details]); ?>
</div> </div> </div> <?php ActiveForm::end(); Modal::begin(['id' => 'myModal', 'header' => '<h2 class="modal-title">Entri-Sheet Detail</h2>@' . $model->nm_esheet]); $esd_model = new EntriSheetDtl(); $form2 = ActiveForm::begin(); ?> <div class="modal-body"> <?php echo $form->field($esd_model, 'id_esheet')->hiddenInput(['value' => $model->id_esheet])->label(false); ?> <?php //$dcoa = new Coa; $list = Helper::getGroupedCoaList(); //$list = ['Swedish Cars' => ['1' => 'volvo', '2' => 'Saab'], 'German Cars' => ['3' => 'Mercedes']]; //$list = ArrayHelper::map(Coa::find()->orderBy('cd_account ASC')->all(), 'id_coa', 'nm_account'); ?> <?php echo $form2->field($esd_model, 'id_coa')->dropDownList($list); ?> <?php echo $form2->field($esd_model, 'nm_esheet_dtl')->textInput(['style' => 'width:160px;']); ?> </div> <div class="form-group modal-footer" style="text-align: right; padding-bottom: 0px;"> <?php echo Html::submitButton($esd_model->isNewRecord ? 'Create' : 'Update', ['class' => $esd_model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> </div>