Example #1
0
 /**
  * 
  * @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]);
 }
Example #2
0
 /**
  * 
  * @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);
 }
Example #3
0
 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;
 }
Example #4
0
 /**
  * 
  * @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;
 }
Example #5
0
/**
 * 
 * @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>&nbsp;</li>
                            <li>
                                <input type="hidden" data-field="total_price">
                            </li>
                        </ul>
                    </td>
                </tr>
                <?php 
    return trim(preg_replace('/>\\s+</', '><', ob_get_clean()));
}
Example #6
0
<?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']]);
Example #7
0
 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]);
 }
Example #8
0
 /**
  * @return string
  */
 public function getNmCoaType()
 {
     return \biz\tools\Helper::getCoaType()[$this->coa_type];
 }
Example #9
0
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>&nbsp;</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()));
}
Example #10
0
?>

<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()];
 }
Example #13
0
                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]);
?>
Example #14
0
        </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>