✏️ 正在编辑: ProtocoloPagamento.php
路径:
/srv/systems_dir/yuppiecred/application/models/ProtocoloPagamento.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_ProtocoloPagamento { private $_id; private $_dataBaixa; //datahora da baixa private $_dataPagamento; private $_comentario; private $_desconto; private $_acrescimo; private $_corretorId; private $_contaId; private $_formaPagamentoId; private $_descontarTaxaTransf; private $_banco; private $_agencia; private $_conta; private $_tipoConta; private $_chavePix; private $_taxaTransferenciaBanco; private $_countSucesso = 0; private $_countErro = 0; private $_countQuitado = 0; private $_countRecente = 0; private $_idsExcluidos = []; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getCorretorId() { return $this->_corretorId; } public function setCorretorId($corretorId) { $this->_corretorId = $corretorId; } public function getDataPagamento() { return $this->_dataPagamento; } public function setDataPagamento($dataPagamento) { if( !empty($dataPagamento) ){ try { $data = new Zend_Date($dataPagamento, Zend_Date::DATES, 'pt'); $dataPagamento = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataPagamento = null; } } else { $dataPagamento = null; } $this->_dataPagamento = $dataPagamento; } public function getComentario() { return $this->_comentario; } public function setComentario($comentario) { $this->_comentario = $comentario; } public function getDesconto() { return $this->_desconto; } public function setDesconto($desconto) { $this->_desconto = str_replace(array( '.', ',' ), array( '', '.' ), $desconto); } public function getAcrescimo() { return $this->_acrescimo; } public function setAcrescimo($acrescimo) { $this->_acrescimo = str_replace(array( '.', ',' ), array( '', '.' ), $acrescimo); } public function getFormaPagamentoId() { return $this->_formaPagamentoId; } public function setFormaPagamentoId($formaPagamentoId) { $this->_formaPagamentoId = $formaPagamentoId; } public function getContaId() { return $this->_contaId; } public function setContaId($contaId) { $this->_contaId = $contaId; } public function getDescontarTaxaTransf() { return $this->_descontarTaxaTransf; } public function setDescontarTaxaTransf($descontarTaxaTransf) { $this->_descontarTaxaTransf = $descontarTaxaTransf; } public function getBanco() { return $this->_banco; } public function setBanco($banco) { $this->_banco = $banco; } public function getAgencia() { return $this->_agencia; } public function setAgencia($agencia) { $this->_agencia = $agencia; } public function getConta() { return $this->_conta; } public function setConta($conta) { $this->_conta = $conta; } public function getTipoConta() { return $this->_tipoConta; } public function setTipoConta($tipoConta) { $this->_tipoConta = $tipoConta; } public function getChavePix() { return $this->_chavePix; } public function setChavePix($chavePix): void { $this->_chavePix = $chavePix; } public function getTaxaTransferenciaBanco() { return $this->_taxaTransferenciaBanco; } public function setTaxaTransferenciaBanco($taxaTransferenciaBanco) { $this->_taxaTransferenciaBanco = $taxaTransferenciaBanco; } 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_ProtocoloPagamento(); $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_ProtocoloPagamento $protocolo */ public function salvar(Model_ProtocoloPagamento $protocolo) { $dbtable = new Model_DbTable_ProtocoloPagamento(); if( $protocolo->getId() > 0 ){ $dbtable->update($protocolo->_toArray(), "id = " . $protocolo->getId()); return $protocolo->getId(); } else { return $dbtable->insert($protocolo->_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_ProtocoloPagamento(); return $dbtable->excluirProtocolo($id); } return null; } /** * 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_ProtocoloPagamento(); return $dbtable->fetchRow( ["id = ?" => $id] ); } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($where = null, $order = null, $count = null, $offset = null) { $dbtable = new Model_DbTable_ProtocoloPagamento(); return $dbtable->fetchAll($where, $order, $count, $offset); } public function listarProtocolosGeradosParaLiberacao($where = null) { $dbtable = new Model_DbTable_ProtocoloPagamento(); $selectCreditoCorretor = $dbtable->getAdapter()->select()->from('tb_lancamentos', array( 'tipo', 'id', 'valor_credito_corretor' => 'SUM(valor_pago)', 'corretor_id' )) ->joinInner(array( 'tb_corretores' ), 'tb_lancamentos.corretor_id = tb_corretores.id', array( '' )) ->where("tb_lancamentos.excluido <> 1 AND tb_lancamentos.tipo = 'CREDITO_CORRETOR'") ->group('corretor_id'); $selectDebitoCorretor = $dbtable->getAdapter()->select()->from('tb_lancamentos', array( 'tipo', 'id', 'valor_debito_corretor' => 'SUM(valor_pago)', 'corretor_id' )) ->joinInner(array( 'tb_corretores' ), 'tb_lancamentos.corretor_id = tb_corretores.id', array( '' )) ->where("tb_lancamentos.excluido <> 1 AND tb_lancamentos.tipo = 'DEBITO_CORRETOR'") ->group('corretor_id'); $select = $dbtable->getAdapter()->select()->from(array( 'protocolos_pagamentos' => 'tb_protocolo_pagamento' ), array( 'protocolo_pagamento' => 'protocolos_pagamentos.id', 'data_pagamento' , 'descontar_taxa_transf','acrescimo', 'desconto' )) ->joinInner(array( 'corretores' => 'tb_corretores' ), 'corretores.id = protocolos_pagamentos.corretor_id', array( '' )) ->joinLeft(array( 'forma_pagamento' => 'tb_tipos' ), 'forma_pagamento.id = protocolos_pagamentos.forma_pagamento_id', array( 'forma_pagamento' => 'descricao' )) ->joinLeft(array( 'debitos_corretores' => $selectDebitoCorretor ), "debitos_corretores.corretor_id = corretores.id", array( 'valor_debito_corretor' )) ->joinLeft(array( 'creditos_corretores' => $selectCreditoCorretor ), "creditos_corretores.corretor_id = corretores.id", array( 'valor_credito_corretor' )) ->joinLeft(array( 'bancos' => 'tb_bancos_febraban' ), 'bancos.codigo = protocolos_pagamentos.banco', array( 'taxa_transf', 'banco_pagamento' => 'nome' )) ->where($where); $protocolos = $dbtable->getAdapter()->fetchAll($select); foreach ( $protocolos as &$protocolo ) { $protocoloContrato = new Model_ProtocoloContrato(); $contratos = $protocoloContrato->getContratosPorProtocolo($protocolo['protocolo_pagamento']); $protocolo['total_comissao'] = 0; foreach ( $contratos as $c ) { $dadosContratoProtocolo = Model_ProtocoloContrato::getDadosProtocoloContrato($c['id'], $protocolo['protocolo_pagamento']); if( !$dadosContratoProtocolo ){ $protocolo['total_comissao'] += (($c['base_comissao_valor'] * ($c['comissao_corretor'] / 100)) + ($c['base_comissao_bonus'] * ($c['bonus_corretor'] / 100))); } else { $protocolo['total_comissao'] += $dadosContratoProtocolo['valor']; } } } return $protocolos; } public function liberarProtocoloPagamento(array $protocolos, array $fields = null) { if( count($protocolos) <= 0 ){ throw new Zend_Exception('Erro: Nenhum protocolo para liberar.'); } $fields['liberado_pagamento'] = 1; $dbtable = new Model_DbTable_ProtocoloPagamento(); return $dbtable->update($fields, "id IN (" . implode(",", $protocolos) . ")"); } public function listarProtocolosParaLiberar($fields = null) { $params = array( "protocolos.liberado_pagamento <> 1", "(protocolos.data_quitacao IS NULL OR protocolos.data_quitacao = '0000-00-00')" ); if( !empty($fields['banco_pagamento']) ){ $params[] = "corretores.banco = '{$fields['banco_pagamento']}'"; } $where = $this->prepareFilter($fields, $params); return $this->listarProtocolos($where, !empty($fields['banco_id']) ? $fields['banco_id']: null); } public function listarProtocolosParaQuitar($fields = null) { $params = array( "protocolos.liberado_pagamento = 1", "(protocolos.data_quitacao IS NULL OR protocolos.data_quitacao = '0000-00-00')" ); $where = $this->prepareFilter($fields, $params); return $this->listarProtocolos($where, !empty($fields['banco_id']) ? $fields['banco_id']: null); } public function listarProtocolosQuitados($fields = null) { $params = array("(protocolos.data_quitacao IS NOT NULL AND protocolos.data_quitacao <> '0000-00-00')"); if( !empty($fields['banco_pagamento']) ){ $params[] = "protocolos.banco = '{$fields['banco_pagamento']}'"; } $where = $this->prepareFilter($fields, $params); return $this->listarProtocolos($where, !empty($fields['banco_id']) ? $fields['banco_id']: null); } public function prepareFilter($fields, $params = array()){ $equalsTo = array( 'protocolos' => array('protocolo_pagamento_id' => 'id', 'corretor_id', 'forma_pagamento_id', 'conta_id'), 'corretores' => array('empresa_id', 'rota_id'), 'rota' => array('gerente_id') ); foreach($equalsTo as $table => $columns){ foreach($columns as $key => $column){ $field = is_numeric($key) ? $column : $key; if(!empty($fields[$field])){ if( is_array($fields[$field]) ){ $params[] = "$table.$column IN (" . implode(",", $fields[$field]) . ")"; }else{ $params[] = "$table.$column = '$fields[$field]'"; } } } } if( !empty($fields['data_pagamento_de']) ){ $params[] = "protocolos.data_pagamento >= STR_TO_DATE('{$fields['data_pagamento_de']}', '%d/%m/%Y')"; } if( !empty($fields['data_pagamento_a']) ){ $params[] = "protocolos.data_pagamento <= STR_TO_DATE('{$fields['data_pagamento_a']}', '%d/%m/%Y')"; } if( !empty($fields['data_quitacao_de']) ){ $params[] = "protocolos.data_quitacao >= STR_TO_DATE('{$fields['data_quitacao_de']}', '%d/%m/%Y')"; } if( !empty($fields['data_quitacao_a']) ){ $params[] = "protocolos.data_quitacao <= STR_TO_DATE('{$fields['data_quitacao_a']}', '%d/%m/%Y')"; } if( !empty($fields['banco_pagamento']) ){ $params[] = "corretores.banco = '{$fields['banco_pagamento']}'"; } $params[] = "protocolos.excluido<>1"; return implode(" AND ", $params); } public function listarProtocolos($where, $bancoContrato = null) { $dbtable = new Model_DbTable_ProtocoloPagamento(); $selectSaldoCorretor = $dbtable->getAdapter()->select()->from('tb_lancamentos', array( 'valor_saldo_corretor' => "SUM(CASE WHEN tb_lancamentos.tipo = 'CREDITO_CORRETOR' THEN valor_pago WHEN tb_lancamentos.tipo = 'DEBITO_CORRETOR' THEN -(valor_pago) ELSE 0 END)", 'corretor_id' )) ->where("tb_lancamentos.excluido <> 1 AND (tb_lancamentos.tipo = 'CREDITO_CORRETOR' OR tb_lancamentos.tipo = 'DEBITO_CORRETOR')") ->group('corretor_id'); $dbtableRecuperados = new Model_DbTable_ProtocoloValorRecuperado(); $recuperados = $dbtableRecuperados->getAdapter()->select() ->from(array("recuperado" => "tb_protocolo_valor_recuperado"), array("recuperado_protocolo_id" => "protocolo_id", "recuperado" => "SUM(recuperado.valor)")) ->where("recuperado.excluido <> 1") ->group(array("recuperado.protocolo_id")); $selectProtocoloContrato = $dbtable->getAdapter()->select() ->from(array( 'protocolo_contrato' => 'tb_protocolo_contrato' ), array( 'protocolo_id', 'valor' )) ->joinInner(array( 'contratos' => 'tb_contratos' ), 'protocolo_contrato.contrato_id = contratos.id', array()) ->where("protocolo_contrato.excluido<>1 AND contratos.excluido<>1") ->order(array( 'protocolo_contrato.valor DESC' )); $selectValorEstornadoContrato = $dbtable->getAdapter()->select() ->from(array( 'estornado' => 'tb_protocolo_contrato' ), array( 'protocolo_id', 'valor_estornado' => 'SUM(valor)' )) ->joinInner(array( 'contratos' => 'tb_contratos' ), 'estornado.contrato_id = contratos.id', array()) ->where("estornado.excluido<>1 AND contratos.excluido<>1 AND estornado.valor < 0") ->group(array( 'estornado.protocolo_id')); $select = $dbtable->getAdapter()->select() ->from(array( 'protocolos' => 'tb_protocolo_pagamento' ), array('*')) ->joinInner(array( 'corretores' => 'tb_corretores' ), 'protocolos.corretor_id = corretores.id', [ 'nome', 'titular', 'cpf_titular', 'corretor_descontar_taxa_transf' => 'descontar_taxa_transf', 'chave_pix', 'tipo_pix', 'dados_banco_alterado', 'endereco_titular' => 'endereco', 'numero_titular' => 'numero', 'complemento_titular' => 'complemento', 'bairro_titular' => 'bairro', 'cidade_titular' => 'cidade', 'uf_titular' => 'uf', 'cep_titular' => 'cep', ]) ->joinInner(array( 'protocolo_contrato' => 'tb_protocolo_contrato'), "protocolo_contrato.protocolo_id = protocolos.id AND protocolo_contrato.excluido<>1", array('total_comissao' => 'SUM(valor)')) ->joinInner(array( 'contratos' => 'tb_contratos'), "protocolo_contrato.contrato_id = contratos.id AND contratos.excluido<>1", []) ->joinLeft(array( 'estornado' => $selectValorEstornadoContrato), "estornado.protocolo_id = protocolos.id", array('total_estornado' => 'valor_estornado')) ->joinLeft(array( 'recuperado' => $recuperados ), 'recuperado.recuperado_protocolo_id = protocolos.id', array( 'recuperado' )) ->joinLeft(array( 'saldos_corretores' => $selectSaldoCorretor ), "saldos_corretores.corretor_id = corretores.id", array( 'valor_saldo_corretor' )) ->joinLeft(array( 'tipos' => 'tb_tipos' ), 'tipos.id = protocolos.forma_pagamento_id', array( 'forma_pagamento' => 'descricao' )) ->joinLeft(array( 'bancos' => 'tb_bancos_febraban' ), 'bancos.codigo = protocolos.banco', array( 'taxa_transf', 'banco_pagamento' => 'nome', 'codigo_banco' => 'codigo' )) ->joinLeft(array( 'rota' => 'tb_rotas' ), 'corretores.rota_id = rota.id', array( 'rota' => 'nome', 'gerente_id' )) ->where($where) ->order('corretores.nome') ->group(array( 'protocolos.id', 'corretores.id' )); if ($bancoContrato) { $select->where("contratos.banco_id = $bancoContrato"); } $ns = new Zend_Session_Namespace(); if( Yuppie_Auth::getIdentity()->grupo == 'Supervisor' ){ $select->where('rota.gerente_id = ' . Yuppie_Auth::getIdentity()->id); } elseif( Yuppie_Auth::getIdentity()->grupo == 'Gerente Regional' ){ $select->joinLeft(array( 'supervisores' => 'tb_gerente_rota' ), 'supervisores.id = rota.gerente_id', array()) ->where('supervisores.gerente_id = ' . Yuppie_Auth::getIdentity()->id); } elseif( Yuppie_Auth::getIdentity()->grupo == 'Corretor' ){ $select->where('corretores.id = ' . Yuppie_Auth::getIdentity()->id); } elseif( Yuppie_Auth::getIdentity()->corretor_id > 0 && !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-corretores-callcenter') ){ //caso não tenha a permissao de visualizar-corretores-callcenter exibira os clientes do usuário que tenha corretor no seu cadastro $select->where('corretores.id = ' . Yuppie_Auth::getIdentity()->corretor_id); } return $dbtable->getAdapter()->fetchAll($select); } public function quitar($dataQuitacao, $protocoloId, $anexo = null) { if( !empty($dataQuitacao) ){ try { $data = new Zend_Date($dataQuitacao, Zend_Date::DATES, 'pt'); $dataQuitacao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataQuitacao = null; } } if( $protocoloId > 0 && !empty($dataQuitacao)){ $this->setarDadosBancoAlterado($protocoloId); $dbtable = new Model_DbTable_ProtocoloPagamento(); return $dbtable->update(array( 'data_quitacao' => $dataQuitacao, 'comprovante_pagamento' => $anexo ? $anexo : null ), "id = $protocoloId"); } return null; } public function anexarComprovantePagamento($protocoloId, $anexo) { if( $protocoloId > 0 && $anexo != null ){ $dbtable = new Model_DbTable_ProtocoloPagamento(); return $dbtable->update([ 'comprovante_pagamento' => $anexo ],"id = $protocoloId"); } return null; } /** * Desconta as taxa de transferência dos protocolos * @param type $protocolos * @return type * @throws Exception */ public function descontarTaxaTransf($protocolos = array()) { if( empty($protocolos) ){ throw new Exception("Atenção! Protocolo(s) não identificado(s)!"); } $dbtable = new Model_DbTable_ProtocoloPagamento(); $result = array( 'descontada' => 0, 'retirada' => 0, 'nao_alterado' => 0 ); foreach ( $protocolos as $protocoloId ) { $dadosProtocolo = $this->exibir($protocoloId); if( $dadosProtocolo ){ if( $dadosProtocolo['forma_pagamento_id'] != 7 ){ $result['nao_alterado']++; } elseif( $dadosProtocolo['descontar_taxa_transf'] == 0 ){ if($dbtable->update(array( 'descontar_taxa_transf' => 1 ), "id = $protocoloId")){ $result['descontada']++; } } elseif( $dadosProtocolo['descontar_taxa_transf'] == 1 ) { if($dbtable->update(array( 'descontar_taxa_transf' => 0 ), "id = $protocoloId")){ $result['retirada']++; } } } } return $result; } public function getTotaisPorProtocolo($protocolo, $contratos){ $totais = array( "totalComissao" => 0, "totalEstorno" => 0, "totalRecuperado" => 0 ); foreach ($contratos as $c) { $dadosContratoProtocolo = Model_ProtocoloContrato::getDadosProtocoloContrato($c['id'], $protocolo->id); if (!$dadosContratoProtocolo) { $valor = (($c['base_comissao_valor'] * ($c['comissao_corretor'] / 100)) + ($c['base_comissao_bonus'] * ($c['bonus_corretor'] / 100))); $valor -= $c['rco'] - $c['outras_despesas']; } else { $valor = $dadosContratoProtocolo['valor']; } if ($valor > 0) { $totais['totalComissao'] += $valor; } else { $totais['totalEstorno'] += $valor; } } $recuperados = $protocolo->findDependentRowset('Model_DbTable_ProtocoloValorRecuperado'); if ($recuperados) { $valoresRecuperados = array_map(function ($element) { return $element['valor']; }, $recuperados->toArray()); $totais['totalRecuperado'] = array_sum($valoresRecuperados); } $totais['taxaTransf'] = $this->getTaxaTransf($protocolo, $totais['totalComissao'] - $totais['totalEstorno']); $totais['totalRecibo'] = $totais['totalComissao'] + $protocolo['acrescimo'] - ($protocolo['desconto'] - $totais['totalEstorno']) - $totais['taxaTransf'] - $totais['totalRecuperado']; return $totais; } public function getTaxaTransf($protocolo, $vlProtocolo){ $model = new Model_FormaPagamento(); $formaPagamento = $model->exibir($protocolo['forma_pagamento_id']); if (($formaPagamento->descricao != 'PIX' && $formaPagamento->id != 7) || $vlProtocolo == 0 ) return 0; $banco = $protocolo->findParentRow('Model_DbTable_BancoFebraban'); return isset($banco->taxa_transf) && $protocolo['descontar_taxa_transf'] == 1 ? $banco->taxa_transf : null; } public function listarProtocolosMesmoContrato($protocoloId, $contratoId = null){ $dbtable = new Model_DbTable_ProtocoloPagamento(); $select = $dbtable->getAdapter()->select() ->from(array('protocolos' => 'tb_protocolo_contrato'), array("*")) ->where("contrato_id IN (SELECT contrato_id FROM tb_protocolo_contrato WHERE protocolo_id = $protocoloId AND excluido <> 1)") ->where("protocolo_id > $protocoloId") ->where("excluido <> 1"); if($contratoId){ $select->where("contrato_id = $contratoId"); } return $dbtable->getAdapter()->fetchRow($select); } public function getContratos($protocoloId){ $dbtable = new Model_DbTable_ProtocoloContrato(); $select = $dbtable->getAdapter()->select()->from(['protocolo_contrato' => 'tb_protocolo_contrato'], ['protocolo_id']) ->joinInner(['protocolos_pagamentos' => 'tb_protocolo_pagamento'], 'protocolo_contrato.protocolo_id = protocolos_pagamentos.id AND protocolos_pagamentos.excluido<>1', []) ->joinInner(['contratos' => 'tb_contratos'], "protocolo_contrato.contrato_id = contratos.id", ['id', 'cliente_id', 'numero_contrato', 'valor_liquido', 'data_liberacao', 'protocolo_recebimento_fisico', 'data_recebimento_fisico', 'data_envio_fisico', 'prazo']) ->joinInner(['clientes' => 'tb_clientes'], "contratos.cliente_id = clientes.id", ['cliente' => 'nome', 'cpf']) ->joinInner(['corretores' => 'tb_corretores'], "corretores.id = contratos.corretor_id", ['corretor' => 'nome']) ->joinLeft(['status_propostas' => 'tb_tipos'], 'contratos.status_proposta = status_propostas.id', ['status_proposta_nome' => 'descricao']) ->where("protocolos_pagamentos.id = ?", $protocoloId) ->order(['data_liberacao','clientes.nome']); return $dbtable->getAdapter()->fetchAll($select); } public function listarProtocolosGerados($fields) { $where = $this->prepareFilter($fields); return $this->listarProtocolos($where, !empty($fields['banco_id']) ? $fields['banco_id']: null); } public function excluirLoteProtocoloPagamento($protocolo, $key) { $protocolosMaisRecentes = $this->listarProtocolosMesmoContrato($protocolo['id']); $ns = new Zend_Session_Namespace(); $acl = $ns->acl; if( !$acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'excluir-protocolos-quitados') ){ if ( !empty($protocolo['quitado']) ) { $this->_countQuitado++; } elseif ( $protocolosMaisRecentes ) { $this->_countRecente++; } else { $this->validaExclusao($protocolo['id'], $key); } }else{ $this->validaExclusao($protocolo['id'], $key); } } public function excluirProtocolos($protocolos) { $dbTable = new Model_DbTable_ProtocoloPagamento(); $dadosProtocolo = $dbTable->getProtocolosExclusao($protocolos); foreach ($dadosProtocolo as $key => $protocolo) { if(key_exists("data_quitacao", $protocolo)){ $protocolo['quitado'] = $protocolo['data_quitacao'] && $protocolo['data_quitacao'] != '0000-00-00'; } $this->excluirLoteProtocoloPagamento($protocolo, $key); } return [ 'sucesso' => $this->_countSucesso, 'erro' => $this->_countErro, 'quitado' => $this->_countQuitado, 'recente' => $this->_countRecente, 'excluidos' => $this->_idsExcluidos ]; } private function validaExclusao($id, $key) { $result = $this->excluir($id); if ( !empty($result) ) { $this->_countSucesso++; $this->_idsExcluidos[$key] = $id; } else { $this->_countErro++; } } /** * @param $protocoloId * @throws Core_Exception * @throws Zend_Db_Table_Exception */ public function setarDadosBancoAlterado($protocoloId): void { $dbTable = new Model_DbTable_ProtocoloPagamento(); $protocolo = $dbTable->fetchRow(['id = ? ' => $protocoloId]); if (empty($protocolo->corretor_id)) { return; } $corretores = new Model_DbTable_Corretor(); $corretores->update([ 'dados_banco_alterado' => 0 ], 'id = ' . $protocolo->corretor_id . ' AND dados_banco_alterado <> 0'); } public function exportarProtocolosAquitar(array $fields) { $protocolos = $this->listarProtocolosParaQuitar($fields); $dadosCsv = []; $dadosCsv[] = implode(";", [ 'Corretor', 'Rota', 'Banco', 'Agência', 'Conta', 'Titular', 'CPF', 'Tipo de Conta', 'Chave PIX', 'Nº Protocolo', 'Data Protocolo', 'Taxa Transferência', 'Descontos', 'Acréscimos', 'Recuperado', 'Estornado', 'Valor', 'Valor Pagto.', ]); foreach ($protocolos as $protocolo) { $taxaTransf = isset($protocolo['taxa_transferencia_banco']) && $protocolo['descontar_taxa_transf'] == 1 ? $protocolo['taxa_transferencia_banco'] : 0; $dadosCsv[] = implode(";", array( $protocolo['nome'], $protocolo['rota'], $protocolo['codigo_banco'] . " - " . $protocolo['banco_pagamento'], $protocolo['agencia'], $protocolo['conta'], $protocolo['titular'], String_Refatorar::resetCpf($protocolo['cpf_titular']), $protocolo['tipo_conta'], $protocolo['chave_pix'], $protocolo['id'], (new Zend_Date($protocolo['data_pagamento']))->get('dd/MM/yyyy'), $taxaTransf, number_format((float) $protocolo['desconto'], 2, ",", "."), number_format((float) $protocolo['acrescimo'], 2, ",", "."), number_format((float) $protocolo['recuperado'], 2, ",", "."), number_format((float) $protocolo['total_estornado'], 2, ",", "."), number_format((float) $protocolo['total_comissao'], 2, ",", "."), number_format((float) ($protocolo['total_comissao'] + $protocolo['acrescimo'] - $protocolo['desconto'] - $taxaTransf - $protocolo['recuperado']), 2, ',', '.') )); } $exportCsv = utf8_decode(implode("\n", $dadosCsv)); $name = "YUPPIE_PROTOCOLOS_A_QUITAR-" . date('dmY-His') . ".csv"; $fileName = getcwd() . "/downloads/" . $name; $fp = fopen($fileName, "w+"); fwrite($fp, $exportCsv); fclose($fp); return $name; } public function quitarVarios($dataQuitacao, $protocolos) { if (empty($protocolos)) { return false; } foreach ($protocolos as $id => $protocolo) { $this->quitar($dataQuitacao, $id); } } }
💾 保存文件
← 返回文件管理器