protected static function _getData() { $return = array(); $myobCodeType = ProductCodeType::get(ProductCodeType::ID_MYOB); foreach (Product::getAllByCriteria('updated <= 2015-12-06 04:00:00', array(), false) as $product) { $logs = ProductQtyLog::getAllByCriteria('productId = ? and created <= ?', array($product->getId(), trim($toDate)), true, 1, 1, array('id' => 'desc')); $log = count($logs) > 0 ? $logs[0] : null; $myobCodes = ProductCode::getCodes($product, $myobCodeType, true, 1, 1); $return[] = array('sku' => $product->getSku(), 'name' => $product->getName(), 'short description' => $product->getShortDescription(), 'category' => join(', ', array_map(create_function('$a', 'return $a->getCategory()->getName();'), $product->getCategories())), 'assetAccNo' => $product->getAssetAccNo(), 'revenueAccNo' => $product->getRevenueAccNo(), 'costAccNo' => $product->getCostAccNo(), 'Stock On PO' => $log instanceof ProductQtyLog ? $log->getStockOnPO() : $product->getStockOnPO(), 'Stock On Order' => $log instanceof ProductQtyLog ? $log->getStockOnOrder() : $product->getStockOnOrder(), 'Stock On Hand' => $log instanceof ProductQtyLog ? $log->getStockOnHand() : $product->getStockOnHand(), 'Total On Hand Value' => $log instanceof ProductQtyLog ? $log->getTotalOnHandValue() : $product->getTotalOnHandValue(), 'Stock In Parts' => $log instanceof ProductQtyLog ? $log->getStockInParts() : $product->getStockInParts(), 'Total In Parts Value' => $log instanceof ProductQtyLog ? $log->getTotalInPartsValue() : $product->getTotalInPartsValue(), 'Stock In RMA' => $log instanceof ProductQtyLog ? $log->getStockInRMA() : $product->getStockInRMA(), 'Total RMA Value' => $log instanceof ProductQtyLog ? $log->getTotalRMAValue() : $product->getTotalRMAValue(), 'active' => intval($product->getActive()) === 1 ? 'Y' : 'N', 'MYOB' => count($myobCodes) > 0 ? $myobCodes[0]->getCode() : ''); } return $return; }
protected static function _getData() { if (count(self::$_dateRange) === 0) { $yesterdayLocal = new UDate('now', 'Australia/Melbourne'); $yesterdayLocal->modify('-1 day'); $fromDate = new UDate($yesterdayLocal->format('Y-m-d') . ' 00:00:00', 'Australia/Melbourne'); $fromDate->setTimeZone('UTC'); $toDate = new UDate($yesterdayLocal->format('Y-m-d') . ' 23:59:59', 'Australia/Melbourne'); $toDate->setTimeZone('UTC'); } else { $fromDate = self::$_dateRange['start']; $toDate = self::$_dateRange['end']; } $dataType = 'created'; $items = ProductQtyLog::getAllByCriteria($dataType . ' >= :fromDate and ' . $dataType . ' < :toDate and type in (:type1, :type2)', array('fromDate' => trim($fromDate), 'toDate' => trim($toDate), 'type1' => ProductQtyLog::TYPE_SALES_ORDER, 'type2' => ProductQtyLog::TYPE_STOCK_ADJ)); $now = new UDate(); $now->setTimeZone('Australia/Melbourne'); $return = array(); foreach ($items as $item) { if (!($product = $item->getProduct()) instanceof Product) { continue; } $narration = ''; if ($item->getEntity() instanceof BaseEntityAbstract) { if ($item->getEntity() instanceof PurchaseOrderItem) { $narration = $item->getEntity()->getPurchaseOrder() instanceof PurchaseOrder ? $item->getEntity()->getPurchaseOrder()->getPurchaseOrderNo() : ''; } else { if ($item->getEntity() instanceof PurchaseOrder) { $narration = $item->getEntity()->getPurchaseOrderNo(); } else { if ($item->getEntity() instanceof OrderItem) { $narration = $item->getEntity()->getOrder() instanceof Order ? ($invoiceNo = trim($item->getEntity()->getOrder()->getInvNo())) === '' ? $item->getEntity()->getOrder()->getOrderNo() : $invoiceNo : ''; } else { if ($item->getEntity() instanceof Order) { $narration = ($invoiceNo = trim($item->getEntity()->getInvNo())) === '' ? $item->getEntity()->getOrderNo() : $invoiceNo; } } } } } $comments = $item->getComments(); $return[] = array('Narration' => $narration, 'Date' => trim($item->getCreated()->setTimeZone('Australia/Melbourne')), 'Description' => $product->getSku(), 'AccountCode' => $product->getAssetAccNo(), 'TaxRate' => 'BAS Excluded', 'Amount' => $item->getTotalOnHandValueVar(), 'TrackingName1' => $item->getType(), 'TrackingOption1' => '', 'TrackingName2' => '', 'TrackingOption2' => '', 'Comments' => $comments); $return[] = array('Narration' => $narration, 'Date' => trim($item->getCreated()->setTimeZone('Australia/Melbourne')), 'Description' => $product->getSku(), 'AccountCode' => $product->getCostAccNo(), 'TaxRate' => 'BAS Excluded', 'Amount' => 0 - $item->getTotalOnHandValueVar(), 'TrackingName1' => $item->getType(), 'TrackingOption1' => '', 'TrackingName2' => '', 'TrackingOption2' => '', 'Comments' => $comments); } return $return; }
private static function _getProductQtyLogs(Product $product, $pageNumber, $pageSize = self::PAGE_SIZE) { return ProductQtyLog::getAllByCriteria('pql.active = 1 and pql.productId = ? and pql.stockOnHandVar > 0 and pql.type in (?, ?, ?)', array($product->getId(), ProductQtyLog::TYPE_PO, ProductQtyLog::TYPE_STOCK_MOVE_INTERNAL, ProductQtyLog::TYPE_STOCK_ADJ), true, $pageNumber, $pageSize, array('id' => 'desc')); }