Пример #1
0
 public static function removeStock($item, $location, $quantity, $date)
 {
     $stock = new Stock();
     $stock->date = $date;
     $stock->item()->associate($item);
     $stock->location()->associate($location);
     $stock->quantity_out = $quantity;
     $stock->save();
 }
 /**
  * Creates a new Stock model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Stock();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect(['view', 'id' => $model->id]);
     } else {
         return $this->render('create', ['model' => $model]);
     }
 }
Пример #3
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Stock();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Stock'])) {
         $model->attributes = $_POST['Stock'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
 public static function fetch($warehouse_id, $product_id)
 {
     $stock = Doctrine_Query::create()->from('Stock s')->where('s.warehouse_id =' . $warehouse_id)->andWhere('s.product_id =' . $product_id)->fetchOne();
     if (!$stock) {
         $stock = new Stock();
         $stock->setWarehouseId($warehouse_id);
         $stock->setProductId($product_id);
         $stock->setCurrentqty(0);
         $stock->setDate("2011-01-01");
         $stock->save();
     }
     return $stock;
 }
Пример #5
0
 private function saveInStockTable($idBranch, $idArticle, $amount)
 {
     try {
         $articleStock = Stock::where('article_id', $idArticle)->where('branch_id', $idBranch)->first();
         if (!empty($articleStock)) {
             $articleStock->stock += $amount;
             $articleStock->save();
         } else {
             $stockTable = new Stock();
             $stockTable->branch_id = $idBranch;
             $stockTable->article_id = $idArticle;
             $stockTable->stock = $amount;
             $stockTable->minstock = 0;
             $stockTable->save();
         }
         #if !empty($ArticleStock)
     } catch (Exception $e) {
         die('No se pudo modificar el stock del artículo' . $idArticle . ' en la sucursal ' . $idBranch);
     }
 }
Пример #6
0
 public function post_nuevo()
 {
     $inputs = Input::all();
     $reglas = array('nombre' => 'required|max:50', 'descripcion' => 'required|max:50', 'alto' => 'required', 'largo' => 'required', 'ancho_prof' => 'required', 'rubro' => 'required|integer', 'sucursal' => 'required', 'stock' => 'required|integer', 'prec_compra' => 'required', 'proveedor' => 'required');
     $mensajes = array('required' => 'Campo Obligatorio');
     $validar = Validator::make($inputs, $reglas);
     if ($validar->fails()) {
         Input::flash();
         return Redirect::back()->withInput()->withErrors($validar);
     } else {
         try {
             DB::beginTransaction();
             $articulo = new Articulo();
             $articulo->nombre = Input::get('nombre');
             $articulo->descripcion = Input::get('descripcion');
             $articulo->alto = Input::get('alto');
             $articulo->largo = Input::get('largo');
             $articulo->ancho_prof = Input::get('ancho_prof');
             $articulo->id_rubro = Input::get('rubro');
             $articulo->precio_compra = Input::get('prec_compra');
             $articulo->id_proveedor = Input::get('proveedor');
             $articulo->save();
             $insertedId = $articulo->id_articulo;
             $stock = new Stock();
             $stock->id_articulo = $insertedId;
             $stock->id_sucursal = Input::get('sucursal');
             $stock->cantidad = Input::get('stock');
             $stock->save();
             DB::commit();
             $articulos = DB::table('articulos')->join('rubros', 'articulos.id_rubro', '=', 'rubros.id_rubro')->join('proveedores', 'articulos.id_proveedor', '=', 'proveedores.id_proveedor')->join('stock', 'articulos.id_articulo', '=', 'stock.id_articulo')->join('sucursales', 'stock.id_sucursal', '=', 'sucursales.id_sucursal')->select('articulos.id_articulo', 'rubros.rubro', 'articulos.nombre', 'articulos.descripcion', 'articulos.alto', 'articulos.largo', 'articulos.ancho_prof', 'articulos.precio_compra', 'rubros.id_rubro', 'proveedores.nom_raz', 'stock.cantidad', 'sucursales.nombre as sucursal')->orderby('articulos.nombre', 'asc')->paginate(100);
             return View::make('lista_articulos')->with('articulos', $articulos)->with('error', 'El Artículo ha sido cargado con Éxito');
         } catch (Exception $ex) {
             DB::rollBack();
             echo $ex->getMessage();
         }
     }
 }
Пример #7
0
 public static function index()
 {
     return function ($request, $response) {
         if ($request->session('admin')) {
             switch ($request->method()) {
                 case 'GET':
                     # code...
                     $stocks = Stock::all();
                     $response->json($stocks->as_array());
                     break;
                 case 'POST':
                     # code...
                     $data = $request->data();
                     $stock = new Stock();
                     $stock->product = $data->product->id;
                     $stock->quantity = $data->quantity;
                     $stock->save();
                     $response->json($stock->as_array());
                     break;
                 case 'DELETE':
                     # code...
                     echo "DELETE";
                     break;
                 case 'PUT':
                     # code...
                     echo "PUT";
                     break;
                 default:
                     # code...
                     break;
             }
         } else {
             $response->code(403);
         }
     };
 }
Пример #8
0
 public function emprunter($form)
 {
     $materiel_id = $form->getValue('materiel_id');
     $nombre = $form->getValue('nombre');
     $dispo = StockTable::getInstance()->findOneByMaterielIdAndEtatId($materiel_id, 1);
     if ($dispo && $dispo->getNombre() >= $nombre) {
         $form->save();
         $dispo->addNombre(-$nombre);
         $dispo->save();
         $emprunte = StockTable::getInstance()->findOneByMaterielIdAndEtatId($materiel_id, 2);
         if (!$emprunte) {
             $emprunte = new Stock();
             $emprunte->setNombre($nombre);
             $emprunte->setMaterielId($materiel_id);
             $emprunte->setEtatId(2);
         } else {
             $emprunte->addNombre($nombre);
         }
         $emprunte->save();
         return true;
     } else {
         return false;
     }
 }
Пример #9
0
    private function upsert($line) {
        $product = DB::getInstance()->getValue("SELECT `id_product` FROM `" . _DB_PREFIX_ . "product` WHERE `reference` LIKE '{$line['reference']}'");
        $product = new Product($product);

        $product->reference = $line['reference'];
        $product->name = array(
            '1' => $line['name'],
            '2' => $line['name'],
            '3' => $line['name']
        );
        $product->description = array(
            '1' => $line['description'],
            '2' => $line['description'],
            '3' => $line['description']
        );
        $product->description_short = array(
            '1' => $line['description_short'],
            '2' => $line['description_short'],
            '3' => $line['description_short']
        );
        $product->link_rewrite = array(
            '1' => Tools::link_rewrite($line['name']),
            '2' => Tools::link_rewrite($line['name']),
            '3' => Tools::link_rewrite($line['name'])
        );
        $product->available_now = array(
            '1' => "Есть в наличии",
            '2' => "Есть в наличии",
            '3' => "Есть в наличии"
        );
        $product->id_category_default = $line['category'];
        $product->quantity = (int)$line['count'];

        $product->advanced_stock_management = 1; //использовать Advanced Stock management
        $product->depends_on_stock = 1; //1 - доступное количество на основе ASM. 0 - указывается вручную
        $product->out_of_stock = 1; //2 - как в Preferences product. 1 - allow (Как в Preferences - не дает заказать товар на сайте)

        $product->price = $line['price'];
        $product->weight = $line['weight'] / 1000;
        $product->id_tax_rules_group = $line['id_tax'];

        $product->save();

        $product->updateCategories(array($line['category']));

        $product->deleteFeatures();
        if ($line['author']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(9, $line['author'], null, Configuration::get('PS_LANG_DEFAULT'));
            Product::addFeatureProductImport($product->id, 9, $id_feature_value);
        }

        if ($line['year']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(10, $line['year'], null, Configuration::get('PS_LANG_DEFAULT'));
            Product::addFeatureProductImport($product->id, 10, $id_feature_value);
        }

        if ($line['paperback']) {
            Product::addFeatureProductImport($product->id, 11, 1); //1 - id значения "переплёт" у харакатеристики "Переплёт"
        }

        if ($line['pages']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(12, $line['pages'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 12, $id_feature_value);
        }

        /*
        if ($line['weight']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(4, $line['weight'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 4, $id_feature_value);
        }
        */

        if ($line['isbn']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(13, $line['isbn'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 13, $id_feature_value);
        }

        if ($line['publishing']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(14, $line['publishing'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 14, $id_feature_value);
        }

        $location = WarehouseProductLocation::getIdByProductAndWarehouse($product->id, 0, $line['warehouse']);
        $location = new WarehouseProductLocation($location);
        $location->id_product = $product->id;
        $location->id_product_attribute = 0;
        $location->id_warehouse = $line['warehouse'];
        $location->save();

        $stock = DB::getInstance()->getValue("SELECT `id_stock` FROM `" . _DB_PREFIX_ . "stock` WHERE `id_product` = {$product->id} AND `id_warehouse` = {$line['warehouse']}");
        $stock = new Stock($stock);
        $stock->id_product = $product->id;
        $stock->id_product_attribute = 0;
        $stock->id_warehouse = $line['warehouse'];
        $stock->physical_quantity = $line['count'];
        $stock->usable_quantity = $line['count'];
        $stock->price_te = 0;
        $stock->save();

        $available = DB::getInstance()->getValue("SELECT `id_stock_available` FROM `". _DB_PREFIX_ . "stock_available` WHERE `id_product` = {$product->id} AND `id_shop` = " . Context::getContext()->shop->id);
        $available = new StockAvailable($available);
        $available->id_product = $product->id;
        $available->id_product_attribute = 0;
        //$available->id_shop = Context::getContext()->shop->id;
        $available->quantity = StockManagerFactory::getManager()->getProductPhysicalQuantities($product->id, 0);
        $available->save();

        StockAvailable::setProductDependsOnStock($product->id, true, null);
        StockAvailable::setProductOutOfStock($product->id, 1, null); //allow

        while(strlen($line['reference']) < 9) {
            $line['reference'] = '0' . $line['reference'];
        }

        if (file_exists(_PS_ROOT_DIR_ . '/upload/import/' . $line['reference'] . '.jpg')) {
            $product->deleteImages();

            $image = new Image();
            $image->id_product = $product->id;
            $image->cover = 1;
            $image->position = 0;
            $image->save();

            $name = $image->getPathForCreation();

            copy(_PS_ROOT_DIR_ . '/upload/import/' . $line['reference'] . '.jpg', $name.'.'.$image->image_format);

            $types = ImageType::getImagesTypes('products');
            foreach ($types as $type) {
                ImageManager::resize(_PS_ROOT_DIR_ . '/upload/import/' . $line['reference'] . '.jpg', $name . '-' . $type['name'] . '.' . $image->image_format, $type['width'], $type['height'], $image->image_format);
            }
        }

        /*
        Db::getInstance()->update('stock_available', array(
           'depends_on_stock' => (int)1, //1 - доступное количество на основе ASM. 0 - указывается вручную
            'out_of_stock' => (int)1, //1-allow
        ), 'id_product='.$product->id.'');
         $affrows = Db::getInstance()->Affected_Rows();
         var_dump($affrows);
         */

        //var_dump($product->reference);
        //echo "<br/><br/><br/><br/>";
    }
 public function postBaja()
 {
     //valida el tipo de corte, si es pieza entera o corte especial
     switch (Input::get('tipo_corte')) {
         case '1':
             //pieza entera
             //checa si el tipo de corte es con medida estandar o medida especial
             switch (Input::get('proporcion_corte')) {
                 //corte estandar
                 case '1':
                     //verifica si los input traen valores si no, se brinca a las validaciones segun el tipo de baja
                     if (Input::get('pieza_marmoleria_id') and Input::get('material_disponible')) {
                         //saca el area de venta con la pieza añadida al folio
                         $area_venta_r = PiezaMarmoleria::find(Input::get('pieza_marmoleria_id'));
                         $area_venta = $area_venta_r->area_requerida;
                         //costo del material usado
                         $inventario = VistaInventarioRecubrimiento::find(Input::get('material_disponible'));
                         $costo_material = $inventario->precio_inicial * $area_venta / $inventario->area_total;
                         $pieza_marmoleria_id = Input::get('pieza_marmoleria_id');
                         $medida_estandar = 1;
                     }
                     break;
                 case '2':
                     //verifica si los input traen valores si no, se brinca a las validaciones segun el tipo de baja
                     if (Input::get('pieza_marmoleria_id_p') and Input::get('material_disponible')) {
                         //saca el area de venta con la pieza añadida al folio
                         $area_venta_r = PiezaMarmoleria::find(Input::get('pieza_marmoleria_id_p'));
                         $area_venta = Input::get('area_uso_p');
                         //costo del material usado
                         $inventario = VistaInventarioRecubrimiento::find(Input::get('material_disponible'));
                         $costo_material = $inventario->precio_inicial * $area_venta / $inventario->area_total;
                         $pieza_marmoleria_id = Input::get('pieza_marmoleria_id_p');
                         $medida_estandar = 0;
                     }
                     break;
                 default:
                     # code...
                     break;
             }
             break;
         case '2':
             //corte especial
             //verifica si los imput traen valores si no, se brinca a las validaciones segun el tipo de baja
             if (Input::get('material_disponible')) {
                 //obtiene el id del corte especial
                 $pieza_marmoleria = PiezaMarmoleria::where('nombre', '=', 'Corte especial')->firstorfail();
                 //saca el area de venta con la pieza añadida al folio
                 $area_venta = number_format(Input::get('largo') * Input::get('alto'), 2, '.', '');
                 //costo del material usado
                 $inventario = VistaInventarioRecubrimiento::find(Input::get('material_disponible'));
                 $costo_material = $inventario->precio_inicial * $area_venta / $inventario->area_total;
                 $pieza_marmoleria_id = $pieza_marmoleria->id;
                 $medida_estandar = 0;
                 # code...
                 //validar formulario para corte especial
                 $rules = array('largo' => 'required|numeric|digits_between:.06,10', 'alto' => 'required|numeric|digits_between:.06,10', 'justificacion_de_corte' => 'required');
                 $messages = array('required' => 'Capture :attribute', 'numeric' => 'solo números', 'integer' => 'solo se aceptan valores enteros');
                 $validator = Validator::make(Input::all(), $rules, $messages);
                 if ($validator->fails()) {
                     return Redirect::back()->withInput()->withErrors($validator);
                 }
                 //fin validar formulario
             }
             break;
         default:
             # code...
             break;
     }
     //checa si hay material suficiente
     if ($area_venta > $inventario->area_stock) {
         return Redirect::back()->with('material_error', 'error');
     }
     //determina el tipo de baja
     switch (Input::get('tipo_baja')) {
         case '1':
             //valida que no se quiera añadir a una factura capturada ayer o el folio sea igual al de una venta de stock
             $folio_venta = Input::get('folio_venta');
             $venta_r = VentaMaterial::where('folio', '=', $folio_venta)->first();
             if ($venta_r) {
                 if (date_format($venta_r->created_at, 'Y-m-d') < date('Y-m-d') or substr($folio_venta, 0, 2) == "S-") {
                     $factura_error = Session::pull('venta_error', 'error');
                     return Redirect::back()->with('venta_error', 'error');
                 }
                 /*return $factura_r->factura_abierta;*/
             }
             //validar formulario
             //validar formulario
             $rules = array('folio_venta' => 'required', 'fecha' => 'required', 'precio_venta' => 'required|numeric', 'material_disponible' => 'required');
             $messages = array('required' => 'Capture :attribute', 'numeric' => 'solo números', 'integer' => 'solo se aceptan valores enteros');
             $validator = Validator::make(Input::all(), $rules, $messages);
             if ($validator->fails()) {
                 return Redirect::back()->withInput()->withErrors($validator)->with('radio_selected', '1')->with('add', 'true');
             }
             //fin validar formulario
             //genera baja
             $lamina_baja = new MaterialBaja();
             $lamina_baja->fecha = Input::get('fecha');
             $lamina_baja->pieza_marmoleria_id = $pieza_marmoleria_id;
             $lamina_baja->area_venta = $area_venta;
             $lamina_baja->inventario_recubrimientos_id = Input::get('material_disponible');
             $lamina_baja->costo_material_usado = $costo_material;
             if (Input::get('tipo_corte') == 2) {
                 $lamina_baja->observaciones = Input::get('largo') . ' de largo por ' . Input::get('alto') . ' m. de alto';
                 $lamina_baja->pieza_completa = 0;
                 $medida_estandar = 0;
             }
             $lamina_baja->medida_estandar = $medida_estandar;
             $lamina_baja->save();
             //determina si la venta existe,
             $count_venta_material = VentaMaterial::where('folio', '=', Input::get('folio_venta'))->count();
             // si existe la venta actualiza el total sumando el precio de la nueva lamina_baja
             if ($count_venta_material > 0) {
                 $venta_material = VentaMaterial::where('folio', '=', Input::get('folio_venta'))->firstorfail();
                 $venta_material->total_venta = $venta_material->total_venta + Input::get('precio_venta');
                 $venta_material->save();
             } else {
                 $venta_material = new VentaMaterial();
                 $venta_material->folio = Input::get('folio_venta');
                 $venta_material->total_venta = Input::get('precio_venta');
                 $venta_material->save();
             }
             //crea el registro del detalle de la baja
             $venta_material_baja = new VentaMaterialBaja();
             $venta_material_baja->venta_material_id = $venta_material->id;
             $venta_material_baja->material_baja_id = $lamina_baja->id;
             $venta_material_baja->precio_pieza = Input::get('precio_venta');
             $venta_material_baja->save();
             //actualiza inventario en la linea #84 ya lo tengo
             $inventario->area_stock = $inventario->area_stock - $area_venta;
             $inventario->updated_at = Input::get('hoy');
             $inventario->precio_stock = $inventario->precio_stock - $costo_material;
             $inventario->area_usada = $inventario->area_usada + $area_venta;
             //desactiva el inventario de la lamina al llegar al menos de .06, no es suficiente material para crear un liston
             if ($inventario->area_stock < 0.06) {
                 $inventario->activo = 0;
                 # code...
             }
             $inventario->save();
             break;
         case '2':
             # Reposicion
             //validar formulario
             //validar formulario
             $rules = array('fecha' => 'required', 'motivo_de_reposicion' => 'required', 'material_disponible' => 'required');
             $messages = array('required' => 'Capture :attribute', 'numeric' => 'solo números', 'integer' => 'solo se aceptan valores enteros');
             $validator = Validator::make(Input::all(), $rules, $messages);
             if ($validator->fails()) {
                 return Redirect::back()->withInput()->withErrors($validator);
             }
             //fin validar formulario
             //genera baja
             $lamina_baja = new MaterialBaja();
             $lamina_baja->fecha = Input::get('fecha');
             $lamina_baja->pieza_marmoleria_id = $pieza_marmoleria_id;
             $lamina_baja->area_venta = $area_venta;
             $lamina_baja->inventario_recubrimientos_id = Input::get('material_disponible');
             $lamina_baja->costo_material_usado = $costo_material;
             if (Input::get('tipo_corte') == 2) {
                 $lamina_baja->observaciones = Input::get('largo') . ' de largo por ' . Input::get('alto') . ' m. de alto';
                 $lamina_baja->pieza_completa = 0;
                 $medida_estandar = 0;
             }
             $lamina_baja->medida_estandar = $medida_estandar;
             $lamina_baja->save();
             //Genera detalles de reposicion
             $reposicion = new Reposicion();
             $reposicion->motivos = Input::get('motivo_de_reposicion');
             $reposicion->captura_usuario_id = Auth::user()->id;
             $reposicion->material_baja_id = $lamina_baja->id;
             $reposicion->precio_reposicion = Input::get('precio_venta');
             $reposicion->save();
             $lamina_baja_update = MaterialBaja::find($lamina_baja->id);
             $lamina_baja_update->venta = 0;
             $lamina_baja_update->reposicion = 1;
             $lamina_baja_update->save();
             //actualiza inventario en la linea #84 ya lo tengo
             $inventario->area_stock = $inventario->area_stock - $area_venta;
             $inventario->precio_stock = $inventario->precio_stock - $costo_material;
             $inventario->area_usada = $inventario->area_usada + $area_venta;
             $inventario->updated_at = Input::get('hoy');
             //desactiva el inventario de la lamina al llegar al menos de .06, no es suficiente material para crear un liston
             if ($inventario->area_stock < 0.06) {
                 $inventario->activo = 0;
                 # code...
             }
             $inventario->save();
             break;
         case '3':
             # stock
             //validar formulario
             $rules = array('fecha' => 'required', 'material_disponible' => 'required');
             $messages = array('required' => 'Capture :attribute');
             $validator = Validator::make(Input::all(), $rules, $messages);
             if ($validator->fails()) {
                 return Redirect::back()->withInput()->withErrors($validator);
             }
             //fin validar formulario
             /////////////////
             for ($i = 0; $i < Input::get('cantidad'); $i++) {
                 //genera baja
                 $lamina_baja = new MaterialBaja();
                 $lamina_baja->fecha = Input::get('fecha');
                 $lamina_baja->pieza_marmoleria_id = $pieza_marmoleria_id;
                 $lamina_baja->area_venta = $area_venta;
                 $lamina_baja->inventario_recubrimientos_id = Input::get('material_disponible');
                 $lamina_baja->costo_material_usado = $costo_material;
                 if (Input::get('tipo_corte') == 2) {
                     $lamina_baja->observaciones = Input::get('largo') . 'm. de largo por ' . Input::get('alto') . ' m. de alto ' . Input::get('justificacion_de_corte');
                     $lamina_baja->pieza_completa = 0;
                     $lamina_baja->medida_estandar = 0;
                 }
                 $lamina_baja->medida_estandar = $medida_estandar;
                 $lamina_baja->save();
                 $lamina_baja_update = MaterialBaja::find($lamina_baja->id);
                 $lamina_baja_update->venta = 0;
                 $lamina_baja_update->stock = 1;
                 $lamina_baja_update->save();
                 //Crea nuevo registro de stock
                 $stock = new Stock();
                 $stock->precio_venta = Input::get('precio_venta');
                 $stock->material_baja_id = $lamina_baja->id;
                 $stock->save();
                 //actualiza inventario en la linea #84 ya lo tengo
                 $inventario->area_stock = $inventario->area_stock - $area_venta;
                 $inventario->precio_stock = $inventario->precio_stock - $costo_material;
                 $inventario->area_usada = $inventario->area_usada + $area_venta;
                 $inventario->updated_at = Input::get('hoy');
                 $medida_estandar = 0;
                 //desactiva el inventario de la lamina al llegar al menos de .06, no es suficiente material para crear un liston
                 if ($inventario->area_stock < 0.06) {
                     $inventario->activo = 0;
                     # code...
                 }
                 $inventario->save();
             }
             break;
         default:
             # code...r;
             break;
     }
     // fin switch
     return Redirect::back();
 }
Пример #11
0
 public function buy()
 {
     $this->load->model(array('portfolio', 'stock'));
     $stock_symbol = $this->input->post('stock_symbol');
     $stock_info = $this->stock->single_quote($stock_symbol);
     $shares = $this->input->post('shares');
     $stock = new Stock();
     $stock->portfolio_id = $this->input->post('portfolio_id');
     $stock->user_id = Portfolio::find_by_id($this->input->post('portfolio_id'))->user_id;
     $stock->symbol = $this->input->post('stock_symbol');
     //need to add market open date verification
     $stock->purchase_time = date("Y-m-d H:i:s");
     $stock->purchase_price = $stock_info['price'];
     $stock->shares = $this->input->post('shares');
     $stock->save();
     $portfolio = Portfolio::find_by_id($this->input->post('portfolio_id'));
     //$portfolio->current_cap = $portfolio->current_cap - ($stock->purchase_price * $stock->shares);
     if ($portfolio->commision_bool == 1) {
         $portfolio->current_cap = $portfolio->current_cap - $stock->purchase_price * $stock->shares;
         $portfolio->current_cap = $portfolio->current_cap - $portfolio->commision;
     } else {
         $portfolio->current_cap = $portfolio->current_cap - $stock->purchase_price * $stock->shares;
     }
     $portfolio->last_trade = $stock->id;
     $portfolio->save();
     redirect('portfolios/view/' . $stock->portfolio_id);
 }
Пример #12
0
 public function post_stocksave()
 {
     $sparepart = Sparepart::where('part_number', '=', Input::get('part_number'))->first();
     $msg = 'Part Number tidak ada di database pusat';
     if ($sparepart) {
         if (Input::get('id') == '') {
             $stock = new Stock();
             $stock->pool_id = Auth::user()->pool_id;
             $stock->sparepart_id = $sparepart->id;
             $stock->min_qty = Input::get('min_qty');
             $stock->sale_price = Input::get('sale_price');
             $stock->discount = 0;
             $stock->sale_on = 0;
             $stock->qty = Input::get('qty');
             $stock->user_id = Auth::user()->id;
             $stock->note = Input::get('note');
             $stock->save();
             $msg = 'Stock berhasil di tambahkan di gudang pool';
         } else {
             $stock = Stock::find(Input::get('id'));
             $stock->pool_id = Auth::user()->pool_id;
             $stock->sparepart_id = $sparepart->id;
             $stock->min_qty = Input::get('min_qty');
             $stock->sale_price = Input::get('sale_price');
             $stock->discount = 0;
             $stock->sale_on = 0;
             //$stock->qty = $stock->qty + Input::get('new_qty');
             $stock->user_id = Auth::user()->id;
             $stock->note = Input::get('note');
             $stock->save();
             $msg = 'Stock berhasil di update';
             Trackinginventory::create(array('pool_id' => Auth::user()->pool_id, 'sparepart_id' => $sparepart->id, 'qty' => Input::get('new_qty'), 'user_id' => Auth::user()->id, 'note' => 'Part Ajustment oleh ' . Auth::user()->fullname));
         }
     }
     return Redirect::to('warehouses/stock')->with('status', $msg);
 }
Пример #13
0
header('Content-Type:application/json');
function error($msg)
{
    http_response_code(500);
    die(json_encode(['error' => $msg]));
}
try {
    switch ($request) {
        case 'stock':
            $stock = new Stock();
            $stock->company = Request::any('company');
            $stock->price = Request::any('price');
            if (!$stock->company || !$stock->price) {
                error('Invalid Input');
            }
            $stock->save();
            $subscribers = Subscription::subscribers($stock);
            foreach ($subscribers as $sub) {
                $msg = "Stock Update\n{$stock->company}: {$stock->price}";
                $sub->send($msg);
            }
            echo json_encode($stock);
            break;
        case 'stocks':
            $stocks = Stock::findAll();
            echo json_encode($stocks);
            break;
        case 'delete':
            $company = Request::any('company');
            $stock = Stock::find($company);
            $stock->delete();
Пример #14
0
 function index_put()
 {
     $models = json_decode($this->put('models'));
     $data["results"] = array();
     $data["count"] = 0;
     foreach ($models as $value) {
         $obj = new Stock(null, $this->entity);
         $obj->get_by_id($value->id);
         $obj->currency_id = $value->currency_id;
         $obj->bill_id = $value->bill_id;
         $obj->contact_id = $value->contact_id;
         $obj->product_id = $value->product_id;
         $obj->unit_id = $value->unit_id;
         $obj->quantity = $value->quantity;
         $obj->price = $value->price;
         $obj->issued_date = $value->issued_date;
         $obj->deleted = $value->deleted;
         if ($obj->save()) {
             //Results
             $data["results"][] = array("id" => $obj->id, "currency_id" => $obj->currency_id, "bill_id" => $obj->bill_id, "contact_id" => $obj->contact_id, "product_id" => $obj->product_id, "unit_id" => $obj->unit_id, "quantity" => $obj->quantity, "price" => $obj->price, "issued_date" => $obj->issued_date, "deleted" => $obj->deleted, "currency" => $obj->currency->get_raw()->result(), "contact" => $obj->contact->get_raw()->result(), "product" => $obj->product->get_raw()->result(), "unit" => $obj->unit->get()->name);
         }
     }
     $data["count"] = count($data["results"]);
     $this->response($data, 200);
 }
Пример #15
0
    private function upsert($line) {
        $product = DB::getInstance()->getValue("SELECT `id_product` FROM `" . _DB_PREFIX_ . "product` WHERE `reference` LIKE '{$line['reference']}'");
        $product = new Product($product);

        $product->reference = $line['reference'];
        $product->name = array(
            '1' => $line['name'],
            '2' => $line['name'],
            '3' => $line['name']
        );
        $product->description = array(
            '1' => $line['description'],
            '2' => $line['description'],
            '3' => $line['description']
        );
        $product->description_short = array(
            '1' => $line['description_short'],
            '2' => $line['description_short'],
            '3' => $line['description_short']
        );
        $product->link_rewrite = array(
            '1' => Tools::link_rewrite($line['name']),
            '2' => Tools::link_rewrite($line['name']),
            '3' => Tools::link_rewrite($line['name'])
        );
        $product->available_now = array(
            '1' => "Есть в наличии",
            '2' => "Есть в наличии",
            '3' => "Есть в наличии"
        );
        $product->id_category_default = $line['category'];
        $product->quantity = $line['count'];
        $product->price = $line['price'];
        $product->weight = $line['weight'] / 1000;
        $product->id_tax_rules_group = $line['id_tax'];

        $product->save();

        $product->updateCategories(array($line['category']));

        $product->deleteFeatures();
        if ($line['author']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(9, $line['author'], null, Configuration::get('PS_LANG_DEFAULT'));
            Product::addFeatureProductImport($product->id, 9, $id_feature_value);
        }

        if ($line['year']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(10, $line['year'], null, Configuration::get('PS_LANG_DEFAULT'));
            Product::addFeatureProductImport($product->id, 10, $id_feature_value);
        }

        if ($line['paperback']) {
            Product::addFeatureProductImport($product->id, 11, 70);
        }

        if ($line['pages']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(12, $line['pages'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 12, $id_feature_value);
        }

        /*
        if ($line['weight']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(4, $line['weight'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 4, $id_feature_value);
        }
        */

        if ($line['isbn']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(13, $line['isbn'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 13, $id_feature_value);
        }

        if ($line['publishing']) {
            $id_feature_value = FeatureValue::addFeatureValueImport(14, $line['publishing'], null, Configuration::get('PS_LANG_DEFAULT'), true);
            Product::addFeatureProductImport($product->id, 14, $id_feature_value);
        }

        $stock = DB::getInstance()->getValue("SELECT `id_stock` FROM `" . _DB_PREFIX_ . "stock` WHERE `id_product` = {$product->id} AND `id_warehouse` = {$line['warehouse']}");
        $stock = new Stock($stock);
        $stock->id_product = $product->id;
        $stock->id_product_attribute = 0;
        $stock->id_warehouse = $line['warehouse'];
        $stock->physical_quantity = $line['count'];
        $stock->usable_quantity = $line['count'];
        $stock->price_te = 0;
        $stock->save();

        $available = DB::getInstance()->getValue("SELECT `id_stock_available` FROM `". _DB_PREFIX_ . "stock_available` WHERE `id_product` = {$product->id} AND `id_shop` = " . Context::getContext()->shop->id);
        $available = new StockAvailable($available);
        $available->id_product = $product->id;
        $available->id_product_attribute = 0;
        $available->id_shop = Context::getContext()->shop->id;
        $available->quantity = $line['count'];
        $available->save();

        $location = WarehouseProductLocation::getIdByProductAndWarehouse($product->id, 0, $line['warehouse']);
        $location = new WarehouseProductLocation($location);
        $location->id_product = $product->id;
        $location->id_product_attribute = 0;
        $location->id_warehouse = $line['warehouse'];
        $location->save();

        while(strlen($line['reference']) < 9) {
            $line['reference'] = '0' . $line['reference'];
        }

        if (file_exists(_PS_ROOT_DIR_ . '/upload/import/' . $line['reference'] . '.jpg')) {
            $product->deleteImages();

            $image = new Image();
            $image->id_product = $product->id;
            $image->cover = 1;
            $image->position = 0;
            $image->save();

            $name = $image->getPathForCreation();

            copy(_PS_ROOT_DIR_ . '/upload/import/' . $line['reference'] . '.jpg', $name.'.'.$image->image_format);

            $types = ImageType::getImagesTypes('products');
            foreach ($types as $type) {
                ImageManager::resize(_PS_ROOT_DIR_ . '/upload/import/' . $line['reference'] . '.jpg', $name . '-' . $type['name'] . '.' . $image->image_format, $type['width'], $type['height'], $image->image_format);
            }
        }
    }