示例#1
0
 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());
     }
 }
示例#2
0
 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;
 }
示例#3
0
 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;
 }
示例#4
0
 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;
 }
示例#5
0
 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}%' ");
     }
 }
示例#6
0
 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);
     }
 }
示例#7
0
 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 . " )");
 }
示例#8
0
 public function OnAutoContragent($sender)
 {
     $text = $sender->getValue();
     return Customer::findArray('customer_name', "customer_name like '%{$text}%' ");
 }
示例#9
0
 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);
 }
示例#10
0
 /**
  * Импорт из  ГНАУ  формат 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;
 }
示例#11
0
 public function getItem($id)
 {
     return Customer::load($id);
 }
示例#12
0
 /**
  * Експорт  в  ГНАУ  формат 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);
 }
示例#13
0
 public function deleteOnClick($sender)
 {
     Customer::delete($sender->owner->getDataItem()->customer_id);
     $this->customertable->customerlist->Reload();
 }