public function __construct($docid = 0) { parent::__construct(); $this->add(new Form('docform')); $this->docform->add(new TextInput('document_number')); $this->docform->add(new TextInput('amount')); $this->docform->add(new Date('created', time())); $this->docform->add(new DropDownChoice('customer', Customer::findArray("customer_name", ""))); $this->docform->add(new Date('startdate', time())); $this->docform->add(new Date('enddate', time())); $this->docform->add(new TextArea('description')); $this->docform->add(new SubmitButton('submit'))->setClickHandler($this, 'submitOnClick'); $this->docform->add(new Button('cancel'))->setClickHandler($this, 'cancelOnClick'); if ($docid > 0) { //загружаем содержимок документа настраницу $this->_doc = Document::load($docid); $this->docform->document_number->setText($this->_doc->document_number); $this->docform->created->setDate($this->_doc->document_date); $this->docform->startdate->setDate($this->_doc->headerdata['startdate']); $this->docform->enddate->setDate($this->_doc->headerdata['enddate']); $this->docform->description->setText($this->_doc->headerdata['description']); $this->docform->amount->setText(H::fm($this->_doc->headerdata['amount'])); $this->docform->customer->setValue($this->_doc->headerdata['customer']); } else { $this->_doc = Document::create('Contract'); $this->docform->document_number->setText($this->_doc->nextNumber()); } }
public function generateReport() { $customer = \ZippyERP\ERP\Entity\Customer::load($this->headerdata["customer"]); $header = array('date' => date('d.m.Y', $this->document_date), "document_number" => $this->document_number, "customer" => $customer->customer_name, "description" => $this->headerdata["description"], 'startdate' => date('d.m.Y', $this->headerdata["startdate"]), 'enddate' => date('d.m.Y', $this->headerdata["enddate"]), "amount" => H::fm($this->headerdata["amount"])); $report = new \ZippyERP\ERP\Report('contract.tpl'); $html = $report->generate($header); return $html; }
public function generateReport() { $myfirm = \ZippyERP\System\System::getOptions("firmdetail"); $myaccount = \ZippyERP\ERP\Entity\MoneyFund::load($this->headerdata['bankaccount']); $mybank = \ZippyERP\ERP\Entity\Bank::load($myaccount->bank); $customer = \ZippyERP\ERP\Entity\Customer::load($this->headerdata['customer']); $cbank = \ZippyERP\ERP\Entity\Bank::load($customer->bank); $header = array('date' => date('d.m.Y', $this->document_date), 'myname' => $myfirm['name'], 'mycode' => $myfirm['code'], 'mybankaccount' => $myaccount->bankaccount, 'mybank' => $mybank->bank_name, 'mybankcode' => $mybank->mfo, 'cname' => $customer->customer_name, 'ccode' => $customer->code, 'cbankaccount' => $customer->bankaccount, 'cbank' => $cbank->bank_name, 'cbankcode' => $cbank->mfo, "document_number" => $this->document_number, "document_date" => date('Y.m.d', $this->document_date), "notes" => $this->headerdata['notes'], "amount" => H::fm($this->amount), "amountstr" => \ZippyERP\ERP\Util::ucfirst(\ZippyERP\ERP\Util::money2str($this->amount / 100))); $report = new \ZippyERP\ERP\Report('transferorder.tpl'); $html = $report->generate($header, array()); return $html; }
public function generateReport() { $customer = \ZippyERP\ERP\Entity\Customer::load($this->headerdata["customer"]); $i = 1; $detail = array(); foreach ($this->detaildata as $value) { $detail[] = array("no" => $i++, "itemname" => $value['itemname'], "measure" => $value['measure_name'], "quantity" => $value['quantity'] / 1000, "price" => H::fm($value['price']), "pricends" => H::fm($value['pricends']), "amount" => H::fm($value['amount'])); } $firm = \ZippyERP\System\System::getOptions("firmdetail"); $header = array('date' => date('d.m.Y', $this->document_date), "firmname" => $firm['name'], "firmcode" => $firm['code'], "customername" => $this->headerdata["customername"], "document_number" => $this->document_number, "totalnds" => H::fm($this->headerdata["totalnds"]), "total" => H::fm($this->headerdata["total"])); $report = new \ZippyERP\ERP\Report('returngoodsreceipt.tpl'); $html = $report->generate($header, $detail); return $html; }
public function opdetailOnAutocomplete($sender) { $text = $sender->getValue(); $optype = $this->docform->optype->getValue(); if ($optype == CROUT::TYPEOP_CUSTOMER) { return Customer::findArray('customer_name', "customer_name like '%{$text}%' and ( cust_type=" . Customer::TYPE_SELLER . " or cust_type= " . Customer::TYPE_BUYER_SELLER . " )"); } if ($optype == CROUT::TYPEOP_BANK) { return MoneyFund::findArray('title', "title like '%{$text}%' "); } if ($optype == CROUT::TYPEOP_CASH) { return Employee::findArray('fullname', "fullname like '%{$text}%' "); } }
public function doclistOnRow($row) { $item = $row->getDataItem(); $supplier = Customer::load($item->intattr1); $item = $item->cast(); $row->add(new Label('number', $item->document_number)); $row->add(new Label('date', date('d-m-Y', $item->document_date))); $row->add(new Label('supplier', $supplier ? $supplier->customer_name : "")); $row->add(new Label('amount', $item->amount > 0 ? H::fm($item->amount) : "")); $row->add(new Label('payment', $item->intattr2 > 0 ? H::fm($item->intattr2) : "")); $row->add(new Label('state', Document::getStateName($item->state))); $row->add(new ClickLink('show'))->setClickHandler($this, 'showOnClick'); $row->add(new ClickLink('edit'))->setClickHandler($this, 'editOnClick'); //закрытый период if ($item->updated < strtotime("2013-01-01")) { $row->edit->setVisible(false); $row->cancel->setVisible(false); } }
public function OnAutoCont($sender) { $text = $sender->getValue(); return Customer::findArray('customer_name', "customer_name like '%{$text}%' and ( cust_type=" . Customer::TYPE_BUYER . " or cust_type= " . Customer::TYPE_BUYER_SELLER . " )"); }
public function OnAutoContragent($sender) { $text = $sender->getValue(); return Customer::findArray('customer_name', "customer_name like '%{$text}%' "); }
public function OnAutoContragent($sender) { $type = $this->editdetail->editoptype->getValue(); $text = $sender->getValue(); $where = ""; if ($type == BS::IN) { //если приход то продавцы $where = " and ( cust_type=" . Customer::TYPE_BUYER . " or cust_type= " . Customer::TYPE_BUYER_SELLER . " )"; } if ($type == BS::OUT) { //если расход то покупатели $where = " and ( cust_type=" . Customer::TYPE_SELLER . " or cust_type= " . Customer::TYPE_BUYER_SELLER . " )"; } if ($type == BS::TAX) { // оплата налогов и сборов $where = " and cust_type=" . Customer::TYPE_GOV; } return Customer::findArray('customer_name', "customer_name like '%{$text}%' " . $where); }
/** * Импорт из ГНАУ формат XML... * * @param mixed $data * @return {mixed|TaxInvoiceIncome} Документ или строку с ошибкой */ public static function import($data) { if (strpos($data, "<DECLARHEAD>") == false) { return "Неверный формат"; } $data = iconv("WINDOWS-1251", "UTF-8", $data); $data = str_replace("windows-1251", "utf-8", $data); $xml = @simplexml_load_string($data); if ($xml instanceof \SimpleXMLElement) { } else { return "Неверный формат"; } $type = (string) $xml->DECLARHEAD->C_DOC . (string) $xml->DECLARHEAD->C_DOC_SUB; if ($type != "J12010" && $type != "F12010") { return "Тип документа не Налоговая накладная"; } $doc = new TaxInvoiceIncome(); $date = (string) $xml->DECLARBODY->HFILL; $date = substr($date, 4, 4) . '-' . substr($date, 2, 2) . '-' . substr($date, 0, 2); $doc->document_date = strtotime($date); $doc->document_number = (string) $xml->DECLARBODY->HNUM; $doc->headerdata['based'] = (string) $xml->DECLARBODY->H01G1S; $inn = (string) $xml->DECLARBODY->HKSEL; $customer = \ZippyERP\ERP\Entity\Customer::loadByInn($inn); if ($customer == null) { return "Не найден контрагент с ИНН " . $inn; } $doc->headerdata['customer'] = $customer->customer_id; $ernn = (string) $xml->DECLARBODY->HERPN; if ($ernn == true) { $doc->headerdata['ernn'] = true; } $details = array(); foreach ($xml->xpath('//RXXXXG3S') as $node) { $details[(string) $node->attributes()->ROWNUM]['name'] = (string) $node; } foreach ($xml->xpath('//RXXXXG5') as $node) { $details[(string) $node->attributes()->ROWNUM]['qty'] = (string) $node; } foreach ($xml->xpath('//RXXXXG6') as $node) { $details[(string) $node->attributes()->ROWNUM]['price'] = (string) $node; } foreach ($xml->xpath('//RXXXXG105_2S') as $node) { $details[(string) $node->attributes()->ROWNUM]['mcode'] = (string) $node; } foreach ($xml->xpath('//RXXXXG4') as $node) { $details[(string) $node->attributes()->ROWNUM]['code'] = (string) $node; } foreach ($xml->xpath('//RXXXXG4S') as $node) { $details[(string) $node->attributes()->ROWNUM]['mname'] = (string) $node; } $nds = H::nds(); $doc->detaildata = array(); foreach ($details as $row) { if ($row['code'] > 0) { $item = \ZippyERP\ERP\Entity\Item::loadByUktzed($row['code']); if ($item == null) { return "Не найден ТМЦ с кодом УКТ ЗЕД: " . $row['code']; } $item->price = $row['price'] * 100; $item->pricends = $item->price + $item->price * $nds; $item->quantity = $row['qty']; $doc->detaildata[] = $item; continue; } // Пытаемся найти по имени $item = \ZippyERP\ERP\Entity\Item::getFirst("itemname='" . trim($row['price']) . "'"); if ($item != null) { $item->price = $row['price'] * 100; $item->quantity = $row['qty']; $doc->detaildata[] = $item; continue; } } if (count($details) > count($doc->detaildata)) { return "Не найдены все записи таблицы"; } return $doc; }
public function getItem($id) { return Customer::load($id); }
/** * Експорт в ГНАУ формат XML */ public function export($type) { $common = System::getOptions("common"); $firm = System::getOptions("firmdetail"); $jf = ($common['juridical'] == true ? "J" : "F") . "1201004"; $edrpou = (string) sprintf("%10d", $firm['edrpou']); //2301 0011111111 F1201004 1 00 0000045 1 03 2015 2301.xml $number = (string) sprintf('%07d', 1); $filename = $firm['gni'] . $edrpou . $jf . "100{$number}1" . date('mY', $this->document_date) . $firm['gni'] . ".xml"; $filename = str_replace(' ', '0', $filename); $customer = \ZippyERP\ERP\Entity\Customer::load($this->headerdata["customer"]); $xml = '<?xml version="1.0" encoding="windows-1251"?>'; $xml .= '<DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="' . $jf . '.xsd">'; $xml .= "<DECLARHEAD>"; $xml .= "<TIN>{$firm['edrpou']}</TIN>"; $xml .= "<C_DOC>J12</C_DOC>"; $xml .= "<C_DOC_SUB>010</C_DOC_SUB> "; $xml .= "<C_DOC_VER>4</C_DOC_VER>"; $xml .= "<C_DOC_TYPE>0</C_DOC_TYPE>"; $xml .= "<C_DOC_CNT>1</C_DOC_CNT>"; $xml .= "<C_REG>" . substr($firm['gni'], 0, 2) . "</C_REG> "; $xml .= "<C_RAJ>" . substr($firm['gni'], 2, 2) . "</C_RAJ>"; $xml .= "<PERIOD_MONTH>" . date(m) . "</PERIOD_MONTH>"; $xml .= "<PERIOD_TYPE>1</PERIOD_TYPE>"; $xml .= "<PERIOD_YEAR>" . date('Y') . "</PERIOD_YEAR>"; $xml .= "<C_STI_ORIG>{$firm['gni']}</C_STI_ORIG>"; $xml .= "<C_DOC_STAN>1</C_DOC_STAN>"; $xml .= "<D_FILL>" . (string) date('dmY') . "</D_FILL>"; $xml .= "<SOFTWARE>Zippy ERP</SOFTWARE>"; $xml .= "</DECLARHEAD>"; $xml .= "<DECLARBODY>"; $xml .= "<HORIG>1</HORIG>"; $xml .= "<HFILL>" . (string) date('dmY', $this->document_date) . "</HFILL>"; $xml .= "<HNUM>" . $this->document_number . "</HNUM>"; $xml .= "<HNAMESEL>{$firm['name']}</HNAMESEL>"; $xml .= "<HKSEL>{$firm['inn']}</HKSEL>"; $xml .= "<HLOCSEL>" . $firm['city'] . " " . $firm['street'] . "</HLOCSEL>"; if (strlen($firm['phone']) > 0) { $xml .= "<HTELSEL>{$firm['phone']}</HTELSEL>"; } $xml .= "<HNAMEBUY>{$customer->customer_name}</HNAMEBUY>"; $xml .= "<HKBUY>{$customer->inn}</HKBUY>"; $address = strlen($customer->laddress) > 0 ? $customer->laddress : $customer->faddress; $xml .= "<HLOCBUY>{$address}</HLOCBUY>"; if (strlen($this->headerdata['based']) > 0) { $xml .= "<H01G1S>{$this->headerdata['based']}</H01G1S>"; } if (strlen($this->headerdata['ernn']) == true) { $xml .= "<HERPN>true</HERPN>"; } $num = 0; foreach ($this->detaildata as $value) { $num++; $xml .= "<RXXXXG4S ROWNUM=\"{$num}\">{$value['measure_name']}</RXXXXG4S>"; $xml .= "<RXXXXG105_2S ROWNUM=\"{$num}\">{$value['measure_code']}</RXXXXG105_2S>"; if (strlen($value['uktzed'] > 0)) { $xml .= "<RXXXXG4 ROWNUM=\"{$num}\">{$value['uktzed']}</RXXXXG4>"; } $xml .= "<RXXXXG3S ROWNUM=\"{$num}\">{$value['itemname']}</RXXXXG3S>"; $xml .= "<RXXXXG5 ROWNUM=\"{$num}\">{$value['quantity']}</RXXXXG5>"; $xml .= "<RXXXXG6 ROWNUM=\"{$num}\">" . H::fm($value['price']) . "</RXXXXG6>"; $xml .= "<RXXXXG7 ROWNUM=\"{$num}\">" . H::fm($value['quantity'] * $value['price']) . "</RXXXXG7>"; } $total = H::fm($this->headerdata["total"]); $totalnds = H::fm($this->headerdata["totalnds"]); $all = $total + $totalnds; $xml .= "<R01G7>" . ($total - $totalnds) . "</R01G7>"; $xml .= "<R01G11>{$total}</R01G11>"; $xml .= "<R03G7>{$totalnds}</R03G7>"; $xml .= "<R03G11>{$totalnds}</R03G11>"; $xml .= "<R04G7>" . $total . "</R04G7>"; $xml .= "<R04G11>" . $total . "</R04G11>"; $xml .= "</DECLARBODY>"; $xml .= "</DECLAR>"; $xml = iconv("UTF-8", "WINDOWS-1251", $xml); return array("filename" => $filename, "content" => $xml); }
public function deleteOnClick($sender) { Customer::delete($sender->owner->getDataItem()->customer_id); $this->customertable->customerlist->Reload(); }