/**
  *
  * @return array
  */
 public function editAction()
 {
     $id = $this->getRequest()->getParam('id_product');
     if (ProductPriceListQuery::create()->whereAdd(ProductPriceList::ID_PRODUCT, $id)->count()) {
         $productPriceList = ProductPriceListQuery::create()->whereAdd(ProductPriceList::ID_PRODUCT, $id)->findOneOrElse($id, new ProductPriceList());
     } else {
         $productPriceList = new ProductPriceList();
         $productPriceList->setIdProduct($id);
     }
     $product = ProductQuery::create()->findByPK($id);
     $products = ProductQuery::create()->whereAdd(Product::ITEM_CODE, $product->getKeyMother(), ProductQuery::LIKE)->find();
     $productPriceListHistoryArray = array();
     while ($p = $products->read()) {
         for ($i = 1; $i <= 12; $i++) {
             $productPriceListHistoryQuery = ProductPriceListHistoryQuery::create()->whereAdd(ProductPriceListHistory::ITEMCODE, $p->getItemCode())->whereAdd(ProductPriceListHistory::PRICELIST, $i)->whereAdd(ProductPriceListHistory::PRICE, '0.0', ProductPriceListHistoryQuery::NOT_EQUAL)->orderBy(ProductPriceListHistory::LOGINSTANCE, ProductPriceListHistoryQuery::DESC)->findByPage(1, 10);
             $j = 0;
             while ($productPriceListHistory = $productPriceListHistoryQuery->read()) {
                 $productPriceListHistoryArray[$p->getItemCode()][$i][$j]['price'] = $productPriceListHistory->getPrice();
                 $productPriceListHistoryArray[$p->getItemCode()][$i][$j]['date'] = $productPriceListHistory->getUpdateDate();
                 $j++;
             }
         }
     }
     // 		echo '<pre>';
     // 		print_r($productPriceList);
     // 		die;
     $productPrintingArea = ProductPrintingAreaQuery::create()->whereAdd(ProductPrintingArea::ID_PRODUCT, $product->getKeyMother())->findOne();
     $printingTechnique = ProductionTimePrintingTechniqueQuery::create()->whereAdd(ProductionTimePrintingTechnique::ID_PRODUCT_PRINTING_AREA, $productPrintingArea->getIdProductPrintingArea())->getFavorite()->findOne();
     $rangeAndVolume = RangeAndVolumeQuery::create()->whereAdd(RangeAndVolume::RANGE, $product->getCost(), RangeAndVolumeQuery::GREATER_THAN)->orderBy(RangeAndVolume::RANGE, RangeAndVolumeQuery::ASC)->findOne();
     $technique = PrintingTechniqueQuery::create()->findByPK($printingTechnique->getIdPrintingTechnique());
     $size = PrintingSizeQuery::create()->findByPK($productPrintingArea->getIdPrintingSize());
     $printingPrice = PrintingTechniqueSizeQuery::create()->whereAdd(PrintingTechniqueSize::ID_PRINTING_SIZE, $size->getIdPrintingSize())->whereAdd(PrintingTechniqueSize::ID_PRINTING_TECHNIQUE, $technique->getIdPrintingTechnique())->findOne();
     $salesParameters = SalesParameterQuery::create()->find();
     $this->view->id_product = $id;
     $this->view->contentTitle = $this->i18n->_('Edit Product Price List');
     $this->view->products = $products->toArray();
     $this->view->priceListHistory = $productPriceListHistoryArray;
     $this->view->productPrintingArea = $productPrintingArea->toArray();
     $this->view->printingTechnique = $printingTechnique->toArray();
     $this->view->rangeAndVolume = $rangeAndVolume->toArray();
     $this->view->technique = $technique->getAbbreviation();
     $this->view->size = $size->getName();
     $this->view->printingPrice = $printingPrice->getPrice();
     $this->view->statuses = Product::$StatusFullName;
     $this->view->onsubmit = $this->getBaseUrl() . "/product-price-list/update";
     $this->view->freightFactor = $salesParameters->getByPK(SalesParameter::$SalesParameters['FreightFactorAndPromptPayment'])->getValue();
     if (!$productPriceList->getExchangeRateUsdToPesos()) {
         $productPriceList->setExchangeRateUsdToPesos($salesParameters->getByPK(SalesParameter::$SalesParameters['ExchangeRate'])->getValue());
     }
     if (!$productPriceList->getExchangeRateEurToUsd()) {
         $productPriceList->setExchangeRateEurToUsd($salesParameters->getByPK(SalesParameter::$SalesParameters['ExchangeRateEurtoUsd'])->getValue());
     }
     if (!$productPriceList->getMarginEximagen()) {
         $productPriceList->setMarginEximagen($salesParameters->getByPK(SalesParameter::$SalesParameters['EximagenRange'])->getValue());
     }
     /**
      *
      * @todo cambiar estos valores
      */
     $result = $this->getLandedCost($id, $productPriceList);
     if (!$result['result']) {
         $this->setFlash('warning', $this->i18n->_('You must edit the Product before the Product Printing List') . $result['message']);
         $this->_redirect('product/list');
     }
     $landedCost = $result['result'];
     $this->view->productPriceList = $productPriceList->toArray();
     //         $this->view->priceHistory = $this->getPriceHistoryAsCombo($id);
     $this->view->landedCost = $landedCost;
     $this->view->landedCostInfo = $this->getValuesUsedForLandedCost($id, $productPriceList);
     $url = $this->generateUrl('price-list', 'update', compact('id'));
     $this->view->form = $form;
     $this->view->setTpl("New");
 }
 /**
  *
  */
 public function reactivateAction()
 {
     $id = $this->getRequest()->getParam('id');
     $productionTimePrintingTechniques = ProductionTimePrintingTechniqueQuery::create()->findByPKOrThrow($id, $this->i18n->_("Not exists the ProductionTimePrintingTechnique with id {$id}"));
     try {
         $this->getProductionTimePrintingTechniqueCatalog()->beginTransaction();
         $this->getProductionTimePrintingTechniqueCatalog()->update($productionTimePrintingTechniques);
         $this->getProductionTimePrintingTechniqueCatalog()->commit();
         $this->setFlash('ok', $this->i18n->_("Se reactivo correctamente el ProductionTimePrintingTechnique"));
     } catch (Exception $e) {
         $this->getProductionTimePrintingTechniqueCatalog()->rollBack();
         $this->setFlash('error', $this->i18n->_($e->getMessage()));
     }
     $this->_redirect('production-time-printing-techniques/list');
 }
 public function exportToExcelAction()
 {
     $report = new SimpleListReport();
     $params = $this->getRequest()->getParams();
     $productPrintingAreas = ProductPrintingAreaQuery::create()->filter($params)->find();
     $i = 0;
     $tableContent = array();
     while ($productPrintingArea = $productPrintingAreas->read()) {
         $productionTimePrintingTechniqueQuery = ProductionTimePrintingTechniqueQuery::create()->whereAdd(ProductionTimePrintingTechnique::ID_PRODUCT_PRINTING_AREA, $productPrintingArea->getIdProductPrintingArea())->find();
         $j = 1;
         while ($productionTimePrintingTechnique = $productionTimePrintingTechniqueQuery->read()) {
             switch ($j) {
                 case 1:
                     $id_printing_technique = $productionTimePrintingTechnique->getIdPrintingTechnique();
                     $max_area = $productionTimePrintingTechnique->getMaxArea();
                     $max_inks = $productionTimePrintingTechnique->getMaxInks();
                     break;
                 case 2:
                     $id_printing_technique_alternative = $productionTimePrintingTechnique->getIdPrintingTechnique();
                     $max_area_alternative = $productionTimePrintingTechnique->getMaxArea();
                     $max_inks_alternative = $productionTimePrintingTechnique->getMaxInks();
                     break;
             }
             if ($j == 2) {
                 break;
             }
             $j++;
         }
         $product = ProductQuery::create()->findByPK($productPrintingArea->getIdProduct());
         $tableContent[$i][] = $productPrintingArea->getIdProduct();
         $tableContent[$i][] = $product->getKeyMother();
         $tableContent[$i][] = $product->getItemName();
         $tableContent[$i][] = $productPrintingArea->getIdEShop();
         $tableContent[$i][] = $id_printing_technique;
         $tableContent[$i][] = $productPrintingArea->getIncludedLogos();
         $tableContent[$i][] = $productPrintingArea->getIdPrintingSize();
         $tableContent[$i][] = $max_inks;
         $tableContent[$i][] = $id_printing_technique_alternative;
         $tableContent[$i][] = $max_inks_alternative;
         $tableContent[$i][] = $max_area;
         $tableContent[$i][] = $max_area_alternative;
         $tableContent[$i][] = $productPrintingArea->getPrintingOrder();
         $i++;
     }
     $tableHeaders = array('SKU', 'Item', 'Item Name', 'Id E-Shop', 'Printing Technique', 'Included Logos', 'Surface', 'Max Inks', 'Printing Technique Alternative', 'Max Inks Alternative', 'Max Area', 'Max Area Alternative', 'Printing Order');
     $report->setTableTitle('Product Printing Area Report');
     $report->setTableHeaders($tableHeaders);
     $report->setTableContent($tableContent);
     $report->setFilename('product_printing_area_report');
     $report->createSpreadsheet();
     die;
 }