✏️ 正在编辑: Produto.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/models/Produto.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_Produto { private $_id; private $_codigo; private $_descricao; private $_tipo; private $_bancoId; private $_tetoProducao; public function getTetoProducao() { return $this->_tetoProducao; } public function setTetoProducao($tetoProducao): void { $this->_tetoProducao = str_replace(array( '.', ',' ), array( '', '.' ), $tetoProducao); } public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getCodigo() { return $this->_codigo; } public function setCodigo($codigo) { $this->_codigo = trim($codigo); } public function getDescricao() { return $this->_descricao; } public function setDescricao($descricao) { $this->_descricao = trim($descricao); } public function getTipo() { return $this->_tipo; } public function setTipo($tipo) { $this->_tipo = $tipo; } public function getBancoId() { return $this->_bancoId; } public function setBancoId($bancoId) { $this->_bancoId = $bancoId; } public function __construct($options = null) { if( is_array($options) ){ $this->setOptions($options); } } public function setOptions(array $options) { $methods = get_class_methods($this); foreach ( $options as $key => $value ) { $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if( in_array($method, $methods) ){ $this->$method($value); } } return $this; } public function _toArray() { $dbtable = new Model_DbTable_Produto(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = array(); foreach ( $info['cols'] as $key ) { $col = $key; $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if( in_array($method, $methods) ){ $data[$col] = $this->$method(); } } return $data; } /** * Insere ou altera o registro passado por parâmetro * @param Model_Produto $produto */ public function salvar(Model_Produto $produto) { $dbtable = new Model_DbTable_Produto(); $dados = $produto->_toArray(); $where = "codigo = '" . $dados['codigo'] . "'" . " AND banco_id = " . $dados['banco_id']; if( isset($dados['tipo']) && $dados['tipo'] ){ $where .= " AND tipo = '{$dados['tipo']}'"; } $findProduto = $dbtable->fetchRow($where); if( $produto->getId() > 0 ){ if($dbtable->update($dados, "id = " . $produto->getId())){ //propaga a atualização do tipo para os contratos // $dbtableContrato = new Model_DbTable_Contrato(); // $dbtableContrato->update([ // 'tipo' => $produto->getTipo() // ], [ // "produto = ?" => $produto->getCodigo(), // "banco_id = ?" => $produto->getBancoId(), // "tipo <> ?"=> $produto->getTipo() // ]); } return $produto->getId(); } else { if( $findProduto ){ return null; } else { return $dbtable->insert($produto->_toArray()); } } } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if( $id > 0 ){ $dbtable = new Model_DbTable_Produto(); return $dbtable->delete("id = " . $id); } return null; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields, $order = "descricao ASC") { $params = array(); $where = null; if( isset($fields['codigo']) && !empty($fields['codigo']) ){ $params[] = "codigo = '" . $fields['codigo'] . "'"; } if( isset($fields['tipo']) && !empty($fields['tipo']) ){ if( $fields['tipo'] == -1 ){ $params[] = "(tipo is null or tipo = '')"; }else{ $params[] = "tipo = '" . $fields['tipo'] . "'"; } } if( isset($fields['tem_meta_producao']) && !empty($fields['tem_meta_producao']) ){ if( $fields['tem_meta_producao'] == 1 ){ $params[] = "teto_producao > 0"; } else { $params[] = "(teto_producao <= 1 OR teto_producao is null)"; } } if( isset($fields['descricao']) && !empty($fields['descricao']) ){ $params[] = "descricao LIKE '%" . $fields['descricao'] . "%'"; } if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ if( $fields['banco_id'] == -1 ){ $params[] = "(banco_id is null OR banco_id = 0)"; }else{ $params[] = "banco_id = " . $fields['banco_id']; } } if( count($params) > 0 ) $where = implode(" AND ", $params); $dbtable = new Model_DbTable_Produto(); return $dbtable->fetchAll($where, $order); } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { $dbtable = new Model_DbTable_Produto(); return $dbtable->fetchRow("id = " . $id); } public function existe($codigo, $bancoId) { $dbtable = new Model_DbTable_Produto(); return $dbtable->fetchRow("codigo = '{$codigo}' AND banco_id = '{$bancoId}'"); } public function getOrCreateProdutoCodigo($codigo, $descricao, $bancoId, $tipo) { if( empty($descricao) || empty($bancoId) || empty($tipo) ){ throw new Core_Exception("O produto deve ter uma descrição, um tipo de operação e o banco."); } $descricao = trim($descricao); $dbTable = new Model_DbTable_Produto(); $where = [ "descricao = ?" => $descricao, "(banco_id = ? OR banco_id IS NULL OR banco_id = 0)" => $bancoId, "(tipo = ? OR tipo IS NULL)" => $tipo ]; if( !empty($codigo) ){ $codigo = trim($codigo); $where['codigo = ?'] = $codigo; } $produto = $dbTable->fetchRow($where); if( is_null($produto) ){ $codigo = !empty($codigo) ? $codigo : $descricao; $produto = $dbTable->insert(array( 'codigo' => $codigo, 'descricao' => $descricao, 'banco_id' => $bancoId, 'tipo' => $tipo )); if(!$produto){ throw new Core_Exception("Não foi possível salvar o produto ({$codigo} - {$descricao}) ($tipo)"); } } elseif( !$produto['banco_id'] || !$produto['tipo'] ) { $produto->banco_id = $bancoId; $produto->tipo = $tipo; $produto->save(); $codigo = $produto->codigo; } return $codigo; } public function getProdutosSemTipoOuBanco($bancoId = 0) { $dbtable = new Model_DbTable_Produto(); $params = array(); if( $bancoId > 0 ){ $params[] = "banco_id = {$bancoId}"; }else{ $params[] = "(banco_id is null OR banco_id = 0)"; } $params[] = "(tipo is null or tipo = '')"; $where = implode(" AND ", $params); return $dbtable->fetchAll($where); } public function getTipoProdutoById($id){ $dbtable = new Model_DbTable_Produto(); $where = "id = {$id}"; return $dbtable->fetchAll($where); } public function getTetoProducaoProduto($fields = array()) { $modelContrato = new Model_Contrato(); return $modelContrato->getGraficoTetoProducaoProduto($fields); } public function alterarTipoProdutos($request) { $dbTable = new Model_DbTable_Produto(); foreach ($request['produtos'] as $produtoId ) { $result = $dbTable->update([ 'tipo' => $request['tipo'] ], ["id = ?" => $produtoId ]); if ( $result ) { $produto = $dbTable->fetchRow('id = '. $produtoId); //propaga a atualização do tipo para os contratos $dbtableContrato = new Model_DbTable_Contrato(); $update = $dbtableContrato->update([ 'tipo' => $produto['tipo'] ], [ "produto = ?" => $produto['codigo'], "banco_id = ?" => $produto['banco_id'], "tipo <> ?"=> $produto['tipo'] ]); $update == 0 ? $result = 0 : $result = 1; } } return $result; } public function buscaValorProdutoPorCodigo($codigo) { $dbTable = new Model_DbTable_Produto(); $produto = $dbTable->fetchRow(["codigo = ?" => $codigo]); return $produto['teto_producao']; } }
💾 保存文件
← 返回文件管理器