query($queryStocks); $stocks = array(); while ($rowStocks = $db->fetchByAssoc($rowsStocks)) { $stocks [$rowStocks ["id"]] = $rowStocks ["name"]; } return $stocks; } function getStockIndexList() { $db = $GLOBALS['db']; $queryStockIndex = "SELECT id, name FROM ecmproductstockindexs;"; $rowsStockIndex = $db->query($queryStockIndex); $StockIndexList = array(); while ($rowStocksIndex = $db->fetchByAssoc($rowsStockIndex)) { $StockIndexList [$rowStocksIndex ["id"]] = $rowStocksIndex ["name"]; } return $StockIndexList; } function getKartotekaMaterialowaQuery($unknow) { if (!isset($unknow) || count($unknow) == 0 || (in_array('', $unknow))) { } else { if (in_array('NULL', $unknow) && count($unknow) == 1) { $query .= " AND doc.ecmproductstockindex_id IS NULL "; } else if (in_array('NULL', $unknow) && count($unknow) > 1) { $queryUnknow = " ("; foreach ($unknow as $key => $value) { if ($value != 'NULL') { $queryUnknow .= "'" . $value . "',"; } } $queryUnknow = rtrim($queryUnknow, ","); $queryUnknow .= ") "; $query .= " AND (doc.ecmproductstockindex_id IS NULL OR doc.ecmproductstockindex_id IN " . $queryUnknow . ") "; } else { $queryUnknow = " ("; foreach ($unknow as $key => $value) { $queryUnknow .= "'" . $value . "',"; } $queryUnknow = rtrim($queryUnknow, ","); $queryUnknow .= ") "; $query .= " AND doc.ecmproductstockindex_id IN " . $queryUnknow . " "; } } return $query; } // Tworzy kawałek zapytania dla magazynów // np: ('magazyn1','magazyn2',...) function getStockQuery($stockSelected) { if (isset($stockSelected) && count($stockSelected) > 0) { $queryStockSelected = " ("; foreach ($stockSelected as $key => $value) { $queryStockSelected .= "'" . $value . "',"; } $queryStockSelected = rtrim($queryStockSelected, ","); $queryStockSelected .= ") "; } else { $stockList = getStocksList(); $queryStockSelected = " ("; foreach ($stockList as $key => $value) { $queryStockSelected .= "'" . $key . "',"; } $queryStockSelected = rtrim($queryStockSelected, ","); $queryStockSelected .= ") "; } return $queryStockSelected; } function getDataRwPwKs($documentsSelected, $stockSelected, $date_from, $date_to, $stockIndexSelected,$catId) { if (!isset($documentsSelected) && isset($stockSelected) && isset($date_from) && isset($date_to)) { return null; } $db = $GLOBALS['db']; global $app_list_strings; $documentsList = array(// dokumenty 'EcmStockDocInsideOuts' => 'RW', 'EcmStockDocInsideIns' => 'PW', 'EcmStockDocMoves' => 'MM', 'EcmStockDocCorrects' => 'KS', 'EcmStockDocIns' => 'PZ', 'EcmStockDocOuts' => 'WZ', 'EcmInvoiceOuts' => "FK", 'EcmReceipts' => 'Paragon' ); $query = "SELECT " . "doc.id AS docid, " . "doc.ecmproductstockindex_name AS docstockindex, " . "doc.name AS docname, " . "DATE_FORMAT(doc.register_date,'%d.%m.%Y') AS docregister_date, " . "doc.document_no AS docdocument_no, " . "doc.stock_id AS docstock_id, " . "o.type AS otype, " . "o.quantity AS oquantity, " . "o.price AS oprice, " . "o.product_id AS oproduct_id, " . "o.product_name AS oproduct_name, " . "o.product_code as oproduct_code, " . "p.unit_id as punit_id "; if($documentsSelected=='EcmStockDocInsideIns'){ $query .= " ,IFNULL(o.work_price,0) as work_price "; } $query .= "FROM " . "ecmstockoperations o, " . "ecmproducts p, " . "" . strtolower($documentsSelected) . " doc "; if($catId){ $query.= ",ecmproductcategories_bean cat "; } $query.= "WHERE o.parent_id = doc.id "; if($catId){ $query.= " and cat.bean_id = p.id "; $query.= " and cat.ecmproductcategory_id = '".$catId."' "; } $query.=" AND p.id = o.product_id " . "AND doc.deleted=0 " . "AND o.deleted=0 " . "AND doc.stock_id IN " . getStockQuery($stockSelected) . " " . "AND doc.register_date >='" . $date_from . "' " . "AND doc.register_date <= '" . $date_to . "'"; $query .= getKartotekaMaterialowaQuery($stockIndexSelected); $query .= " GROUP BY o.id ORDER BY doc.register_date, o.product_code, o.product_name, doc.name"; $resultRows = $db->query($query); $stockList = getStocksList(); while ($row = $db->fetchByAssoc($resultRows)) { if($documentsSelected=='EcmStockDocCorrects'){ $c = new EcmStockDocCorrect(); $c->retrieve($row['docid']); if($c->type=='6ed5b076-ddd1-9809-b236-54e5b2bcbd97'){ if($row['otype']==0){ $data['doc'][$row['docid']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] += $row['oquantity'] * $row['oprice']; } else { $data['doc'][$row['docid']]['wartosc'] -= $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] -= $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['ilosc'] += $row['oquantity']; } } else { $data['doc'][$row['docid']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['ilosc'] += $row['oquantity']; } unset($c); } else { $data['doc'][$row['docid']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['ilosc'] += $row['oquantity']; $data['prod'][$row['oproduct_id']]['work_price'] += $row['work_price']; } $data['prod'][$row['oproduct_id']]['kod'] = $row['oproduct_code']; $data['prod'][$row['oproduct_id']]['nazwa'] = $row['oproduct_name']; $data['prod'][$row['oproduct_id']]['id'] = $row['oproduct_id']; $data['prod'][$row['oproduct_id']]['data'] = $row['docregister_date']; $data['prod'][$row['oproduct_id']]['numer'] = $row['docdocument_no']; $data['prod'][$row['oproduct_id']]['kartoteka'] = $row['docstockindex']; $data['prod'][$row['oproduct_id']]['jm'] = $app_list_strings['ecmproducts_unit_dom'][$row['punit_id']]; $data['doc'][$row['docid']]['magazyn'] = $stockList[$row['docstock_id']]; $data['doc'][$row['docid']]['nazwa'] = $row['docname']; $data['doc'][$row['docid']]['otyp'] = $row['otype']; $data['doc'][$row['docid']]['typ'] = $documentsList[$documentsSelected]; $data['doc'][$row['docid']]['id'] = $row['docid']; $data['doc'][$row['docid']]['data'] = $row['docregister_date']; $data['doc'][$row['docid']]['numer'] = $row['docdocument_no']; $data['doc'][$row['docid']]['kartoteka'] = $row['docstockindex']; } return $data; } function getDataMm($documentsSelected, $stockSelected, $date_from, $date_to, $mmSelected) { if (!isset($documentsSelected) && isset($stockSelected) && isset($date_from) && isset($date_to)) { return null; } $db = $GLOBALS['db']; global $app_list_strings; $documentsList = array(// dokumenty 'EcmStockDocInsideOuts' => 'RW', 'EcmStockDocInsideIns' => 'PW', 'EcmStockDocMoves' => 'MM', 'EcmStockDocCorrects' => 'KS', 'EcmStockDocIns' => 'PZ', 'EcmStockDocOuts' => 'WZ', 'EcmInvoiceOuts' => "FK", 'EcmReceipts' => 'Paragon' ); $query = "SELECT " . "doc.id AS docid, " . "doc.ecmproductstockindex_name AS docstockindex, " . "doc.name AS docname, " . "DATE_FORMAT(doc.register_date,'%d.%m.%Y') AS docregister_date, " . "doc.document_no AS docdocument_no, " . "doc.stock_in_id AS docstock_in_id," . "doc.stock_out_id AS docstock_id," . "o.type AS otype, " . "o.quantity AS oquantity, " . "o.price AS oprice, " . "o.product_id AS oproduct_id, " . "o.product_name AS oproduct_name, " . "o.product_code as oproduct_code, " . "p.unit_id as punit_id " . "FROM " . "ecmstockoperations o, " . "ecmproducts p, " . "" . strtolower($documentsSelected) . " doc " . "WHERE o.parent_id = doc.id " . "AND p.id = o.product_id " . "AND doc.deleted=0 " . "AND o.deleted=0 " . "AND doc.stock_out_id IN " . getStockQuery($stockSelected) . " " . "AND doc.stock_in_id IN " . getStockQuery($mmSelected) . " " . "AND doc.register_date >='" . $date_from . "' " . "AND doc.register_date <= '" . $date_to . "'" . "AND o.type=0 " . "ORDER BY doc.register_date, o.product_code, o.product_name, doc.name "; $resultRows = $db->query($query); $stockList = getStocksList(); while ($row = $db->fetchByAssoc($resultRows)) { $data['doc'][$row['docid']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['ilosc'] += $row['oquantity']; $data['prod'][$row['oproduct_id']]['kod'] = $row['oproduct_code']; $data['prod'][$row['oproduct_id']]['nazwa'] = $row['oproduct_name']; $data['prod'][$row['oproduct_id']]['id'] = $row['oproduct_id']; $data['prod'][$row['oproduct_id']]['data'] = $row['docregister_date']; $data['prod'][$row['oproduct_id']]['numer'] = $row['docdocument_no']; $data['prod'][$row['oproduct_id']]['kartoteka'] = $row['docstockindex']; $data['prod'][$row['oproduct_id']]['jm'] = $app_list_strings['ecmproducts_unit_dom'][$row['punit_id']]; $data['doc'][$row['docid']]['magazyn'] = $stockList[$row['docstock_id']]; $data['doc'][$row['docid']]['magazynIn'] = $stockList[$row['docstock_in_id']]; $data['doc'][$row['docid']]['nazwa'] = $row['docname']; $data['doc'][$row['docid']]['typ'] = $documentsList[$documentsSelected]; $data['doc'][$row['docid']]['id'] = $row['docid']; $data['doc'][$row['docid']]['data'] = $row['docregister_date']; $data['doc'][$row['docid']]['numer'] = $row['docdocument_no']; $data['doc'][$row['docid']]['kartoteka'] = $row['docstockindex']; } return $data; } function getDataPzWzFk($documentsSelected, $stockSelected, $date_from, $date_to, $accountId, $accountName) { //var_dump(!isset($documentsSelected) && !isset($stockSelected) && !isset($date_from) && !isset($date_to)); if (!isset($documentsSelected) && !isset($stockSelected) && !isset($date_from) && !isset($date_to)) { return null; } $db = $GLOBALS['db']; global $app_list_strings; $documentsList = array(// dokumenty 'EcmStockDocInsideOuts' => 'RW', 'EcmStockDocInsideIns' => 'PW', 'EcmStockDocMoves' => 'MM', 'EcmStockDocCorrects' => 'KS', 'EcmStockDocIns' => 'PZ', 'EcmStockDocOuts' => 'WZ', 'EcmInvoiceOuts' => "FK", 'EcmReceipts' => 'Paragon' ); $query = "SELECT " . "doc.id AS docid, " . "doc.name AS docname, " . "DATE_FORMAT(doc.register_date,'%d.%m.%Y') AS docregister_date, " . "doc.document_no AS docdocument_no, " . "doc.stock_id AS docstock_id, " . "o.type AS otype, " . "o.quantity AS oquantity, " . "o.price AS oprice, " . "o.product_id AS oproduct_id, " . "o.product_name AS oproduct_name, " . "o.product_code as oproduct_code, " . "doc.parent_id as docparent_id, " . "doc.parent_name as docparent_name, "; $query .= "p.unit_id as punit_id " . "FROM " . "ecmstockoperations o, " . "ecmproducts p, " . "" . strtolower($documentsSelected) . " doc " . "WHERE o.parent_id = doc.id " . "AND p.id = o.product_id " . "AND doc.deleted=0 " . "AND o.deleted=0 "; if($documentsSelected=='EcmInvoiceOuts'){ $query .= " AND doc.canceled=0 "; } if (isset($accountId) && strlen($accountId) > 0) { $query .= "AND doc.parent_id='" . $accountId . "' "; } $query.= "AND doc.stock_id IN " . getStockQuery($stockSelected) . " " . "AND doc.register_date >='" . $date_from . "' " . "AND doc.register_date <= '" . $date_to . "'"; if($documentsSelected == 'EcmStockDocOuts' && $_REQUEST['wz_category'] != ""){ $query.= " AND doc.category = '" . $_REQUEST['wz_category'] . "' "; } $query .= " ORDER BY doc.register_date, o.product_code, o.product_name, doc.name"; $resultRows = $db->query($query); $stockList = getStocksList(); while ($row = $db->fetchByAssoc($resultRows)) { $data['prod'][$row['oproduct_id']]['kod'] = $row['oproduct_code']; $data['prod'][$row['oproduct_id']]['nazwa'] = $row['oproduct_name']; $data['prod'][$row['oproduct_id']]['id'] = $row['oproduct_id']; $data['prod'][$row['oproduct_id']]['data'] = $row['docregister_date']; $data['prod'][$row['oproduct_id']]['otype'] = $row['otype']; $data['prod'][$row['oproduct_id']]['numer'] = $row['docdocument_no']; $data['prod'][$row['oproduct_id']]['jm'] = $app_list_strings['ecmproducts_unit_dom'][$row['punit_id']]; $data['doc'][$row['docid']]['magazyn'] = $stockList[$row['docstock_id']]; $data['doc'][$row['docid']]['accountId'] = $row['docparent_id']; $data['doc'][$row['docid']]['accountNazwa'] = $row['docparent_name']; $data['doc'][$row['docid']]['nazwa'] = $row['docname']; $data['doc'][$row['docid']]['typ'] = $documentsList[$documentsSelected]; $data['doc'][$row['docid']]['id'] = $row['docid']; $data['doc'][$row['docid']]['doccategory'] = $app_list_strings['ecmstockdocouts_category_list'][$row['doccategory']]; $data['doc'][$row['docid']]['data'] = $row['docregister_date']; $data['doc'][$row['docid']]['numer'] = $row['docdocument_no']; if ($documentsSelected == 'EcmInvoiceOuts' && $row['otype'] == '0') { $data['doc'][$row['docid']]['wartosc'] -= $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] -= $row['oquantity'] * $row['oprice']; $data['doc'][$row['docid']]['typ'] = 'KF'; $data['prod'][$row['oproduct_id']]['ilosc'] -= $row['oquantity']; } else { $data['prod'][$row['oproduct_id']]['ilosc'] += $row['oquantity']; $data['doc'][$row['docid']]['wartosc'] += $row['oquantity'] * $row['oprice']; $data['prod'][$row['oproduct_id']]['wartosc'] += $row['oquantity'] * $row['oprice']; } } return $data; } // // *************************************************************************** //Pobieranie danych z filtrowania if ($_REQUEST['date_from'] == '') { $_REQUEST['date_from'] = date('01.m.Y'); } else { $date_from = date('Y-m-d', strtotime($_REQUEST['date_from'])); } if ($_REQUEST['date_to'] == '') { $_REQUEST['date_to'] = date('t.m.Y'); } else { $date_to = date('Y-m-d', strtotime($_REQUEST['date_to'])); } $stockSelected = $_REQUEST['stockSelected']; $documentsSelected = $_REQUEST['documentsSelected']; $stockIndexSelected = $_REQUEST['stockIndexSelected']; $catId= $_REQUEST['productCategoryId']; $catName= $_REQUEST['productCategoryName']; $viewSelected = $_REQUEST['viewSelected']; $mmSelected = $_REQUEST['mmSelected']; $accountId = $_REQUEST['accountId']; $accountName = $_REQUEST['accountName']; //Przygotowywanie innych potrzebnych zmiennych $data = array(); $datatmp = array(); $db = $GLOBALS['db']; global $mod_strings, $app_list_strings; $stockList = getStocksList(); // magazyny $stockIndexList = getStockIndexList(); //Kartoteki Materialowe $documentsList = array(// dokumenty 'EcmStockDocInsideOuts' => 'RW', 'EcmStockDocInsideIns' => 'PW', 'EcmStockDocMoves' => 'MM', 'EcmStockDocCorrects' => 'KS', 'EcmStockDocIns' => 'PZ', 'EcmStockDocOuts' => 'WZ', ); $viewList = array(//Lista widokow 'documents' => 'Dokumenty', 'positions' => 'Pozycje', ); //Pobieranie i przetwarzanie danych if ($documentsSelected == 'EcmStockDocInsideOuts' || $documentsSelected == 'EcmStockDocInsideIns' || $documentsSelected == 'EcmStockDocCorrects') { $data = getDataRwPwKs($documentsSelected, $stockSelected, $date_from, $date_to, $stockIndexSelected,$catId); } elseif ($documentsSelected == 'EcmStockDocMoves') { $data = getDataMm($documentsSelected, $stockSelected, $date_from, $date_to, $mmSelected,$catId); } elseif ($documentsSelected == 'EcmStockDocIns' || $documentsSelected == 'EcmStockDocOuts' || $documentsSelected == 'EcmInvoiceOuts' || $documentsSelected == 'EcmReceipts') { $data = getDataPzWzFk($documentsSelected, $stockSelected, $date_from, $date_to, $accountId, $accountName,$catId); } $kategorie_wz[""] = ""; foreach($app_list_strings['ecmstockdocouts_category_list'] as $k => $v){ $kategorie_wz[$k] = $v; } // create & execute smarty $smarty = new Sugar_Smarty (); $smarty->assign("MOD", $mod_strings); $smarty->assign("APP_LIST_STRINGS", $app_list_strings); $smarty->assign("DATA", $data); $smarty->assign("kategorie_wz", $kategorie_wz); $smarty->assign("wz_category_selected", $_REQUEST['wz_category']); $smarty->assign("stocksList", $stockList); $smarty->assign("stockSelected", $stockSelected); $smarty->assign("documentList", $documentsList); $smarty->assign("documentSelected", $documentsSelected); $smarty->assign("stockIndexList", $stockIndexList); $smarty->assign("stockIndexSelected", $stockIndexSelected); $smarty->assign("productCategoryName", $catName); $smarty->assign("productCategoryId", $catId); $smarty->assign("viewList", $viewList); $smarty->assign("viewSelected", $viewSelected); $smarty->assign("date_from", $_REQUEST['date_from']); $smarty->assign("date_to", $_REQUEST['date_to']); $smarty->assign("aktualnaData", date("d.m.Y")); $smarty->assign("mmSelected", $mmSelected); $smarty->assign("accountId", $accountId); $smarty->assign("accountName", htmlentities($accountName)); // Eksport do PDF if ($_REQUEST['toPDF'] == '1') { if ($_REQUEST['to_xls'] == '1') { $header=array(); $header[]='numer dokumentu'; $header[]='data'; $header[]='kontrahent'; $header[]='opis'; $header[]='wartość'; $header[]='magazyn'; $filename='modules/Home/Files/obroty_wg_magazynu_'.date('d_m-Y').'.csv'; $fp=fopen($filename,'w'); foreach ($header as $k=>$v){ $header[$k]=iconv('UTF-8','windows-1250',$header[$k]); } fwrite($fp, implode(";",$header).PHP_EOL); foreach ($data['doc'] as $key=>$val){ $line=array(); $line[]='"=""'.preg_replace("/[^A-ZłŁąĄęĘżŻ,:.źŹ%ćĆńŃśŚóÓa-z0-9\-\/]/",' ',preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($val['typ'].' '.$val['numer']))).'"""'; $line[]=$val['data']; $line[]='"=""'.preg_replace("/[^A-ZłŁąĄęĘżŻ,:.źŹ%ćĆńŃśŚóÓa-z0-9\-\/]/",' ',preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($val['accountNazwa']))).'"""'; $line[]='"=""'.preg_replace("/[^A-ZłŁąĄęĘżŻ,:.źŹ%ćĆńŃśŚóÓa-z0-9\-\/]/",' ',preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($val['nazwa']))).'"""'; $line[]=str_replace(".",",",$val['wartosc']); $line[]=preg_replace("/[^A-ZłŁąĄęĘżŻ,:.źŹ%ćĆńŃśŚóÓa-z0-9\-\/]/",' ',preg_replace("/\r\n|\r|\n/",' ',html_entity_decode($val['magazyn']))); foreach ($line as $k=>$v){ $line[$k]=iconv('UTF-8','windows-1250',$line[$k]);; } fwrite($fp, implode(";",$line).PHP_EOL); } header("Location: ". $filename); } else { if ($documentsSelected == 'EcmStockDocInsideOuts' || $documentsSelected == 'EcmStockDocInsideIns' || $documentsSelected == 'EcmStockDocCorrects') { $txt = 'Kartoteka materiałowa: '; if (isset($stockIndexSelected)) { if (count($stockIndexSelected) == count($stockIndexList) + 1) { $txt .= 'Wszystkie'; } else { foreach ($stockIndexSelected as $key => $value) { if ($value == 'NULL') { $txt .= 'Bez kartoteki materiaĹ‚owej ,'; } else { $txt .= $stockIndexList[$value] . ' ,'; } } } } else { $txt .= 'Wszystkie'; } $txt = rtrim($txt, ","); } elseif ($documentsSelected == 'EcmStockDocMoves') { $txt = 'Do magazynu: '; if (isset($mmSelected)) { if (count($mmSelected) == count($stockList)) { $txt .= 'Wszystkie'; } else { foreach ($mmSelected as $key => $value) { $txt .= $stockList[$value] . ' ,'; } } } else { $txt .= 'Wszystkie'; } $txt = rtrim($txt, ","); } elseif ($documentsSelected == 'EcmStockDocIns' || $documentsSelected == 'EcmStockDocOuts' || $documentsSelected == 'EcmInvoiceOuts' || $documentsSelected == 'EcmReceipts') { if (isset($accountName) && strlen($accountName) > 1) { $txt = 'Kontrahent: ' . $accountName; } else { $txt = 'Kontrahent: Wszyscy'; } } $smarty->assign("nazwaFirmy", "E5 Polska"); $output = $smarty->fetch('modules/EcmReports/tpls/ReportStockDocMovesPDF.html'); include_once ("include/MPDF57/mpdf.php"); unset($smarty); $p = new mPDF('', 'A4', null, 'helvetica', 10, 10, 26, 10, 5, 5); $p->setFooter('{PAGENO}'); $p->setHTMLHeader('
| Obroty wg dokumentów ' . $documentsList[$documentsSelected] . ' |
| ' . "E5 Polska" . ' |
| Data wygenerowania: ' . date("d.m.Y") . ' Okres: ' . $_REQUEST['date_from'] . ' do ' . $_REQUEST['date_to'] . ' |
| ' . $txt . ' |