✏️ 正在编辑: RecebimentoContrato.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/models/DbTable/RecebimentoContrato.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_DbTable_RecebimentoContrato extends Core_DbTable { protected $_primary = 'id'; protected $_name = 'tb_recebimento_contratos'; protected $_referenceMap = array( 'Tipos' => array( 'columns' => array( 'natureza' ), 'refTableClass' => 'Model_DbTable_Tipos', 'refColumns' => array( 'id' ) ) ); public function receberComissao($data) { if( !$data['contrato_id'] ){ throw new Core_Exception('O contrato não foi identificado.'); } if(!$data['data_saldo'] ){ throw new Core_Exception('A data do saldo não foi identificada.'); } $permitidoBaixarZerado = false; $acl = (new Zend_Session_Namespace())->acl; if ($acl) { $permitidoBaixarZerado = $acl->isAllowed(\Yuppie_Auth::getIdentity()->grupo, 'comissionamento', 'receber-comissao-zerada'); } if (!$permitidoBaixarZerado && !$data['comissao_empresa'] && !$data['valor_lancamento']){ \Yuppie_Log::write('O valor do lançamento e a comissão da empresa não foram identificados.' . print_r($data, true), $this); throw new Core_Exception('O valor do lançamento e a comissão da empresa não foram identificados.'); } $where = array("contrato_id = {$data['contrato_id']}"); if( !empty($data['valor_lancamento']) ){ $where[] = "valor_lancamento = '{$data['valor_lancamento']}'"; } if( !empty($data['data_saldo']) ){ $where[] = "data_saldo = '{$data['data_saldo']}'"; } if( !empty($data['parcelas']) ){ $where[] = "parcelas = '{$data['parcelas']}'"; } if( !empty($data['natureza']) ){ $where[] = "natureza = '{$data['natureza']}'"; } if( !is_null($this->fetchRow($where)) ){ \Yuppie_Log::write('Contrato já possui saldo nesta data.' . print_r($data, true), $this); throw new Core_Exception('Contrato já possui saldo nesta data.'); } $result = parent::insert($data); \Yuppie_Log::write("Tentativa de inserção do recebimento de comissão dos dados " . print_r($data, true), $this); //grava alteracao no log if( $result > 0 ){ $log = new Model_DbTable_Log(); $log->save($this, $data, 'insert'); } return $result; } public function adiantamentoComissao($data) { if( !$data['contrato_id'] || !$data['data_saldo'] ){ return null; } $result = parent::insert($data); //grava alteracao no log if( $result > 0 ){ $log = new Model_DbTable_Log(); $log->save($this, $data, 'insert'); } return $result; } public function fetchAllDependents($where = null, $order = null) { $select = $this->getAdapter()->select()->from(array( 'recebimento_contratos' => "tb_recebimento_contratos" ), array( 'recebimento_contratos.*' )) ->joinLeft(array( 'naturezas' => 'tb_tipos' ), "naturezas.codigo = recebimento_contratos.natureza AND naturezas.tipo = 'NATUREZA_COMISSAO'", array( 'natureza_descricao' => 'descricao' )) ->joinLeft(array( 'tipos_remuneracao' => 'tb_tipos' ), "tipos_remuneracao.codigo = recebimento_contratos.tipo_remuneracao AND tipos_remuneracao.tipo = 'TIPO_REMUNERACAO'", array( 'tipo_remuneracao_descricao' => 'descricao' )) ->where('recebimento_contratos.excluido <> 1'); if( $where != null ){ $select->where($where); } if( $order != null ){ $select->order($order); } return $this->getAdapter()->fetchAll($select); } public function maxParcelaContrato($contratoId) { $select = $this->getAdapter()->select() ->from(array( 'recebimento_contratos' => 'tb_recebimento_contratos' ), array( 'parcelas' => 'IFNULL (MAX(parcelas),0)' )) ->where('contrato_id = ?', $contratoId) ->where('excluido = 0'); return $this->getAdapter()->fetchRow($select); } public function baixarRecebimentoComissaoEmpresaManual(array $contratos) { $contrato = new Model_Contrato(); $contSuccess = $contErrors = $contNotSelect = 0; $msgs = array(); foreach ( $contratos as $idContrato => $dadosContrato ) { $cleanDados = array_filter($dadosContrato); if( !$cleanDados ){ $contNotSelect++; continue; } $objContrato = $contrato->exibir($idContrato); $data = Core_Util::convertDate($dadosContrato['data_saldo']); $dadosContrato['parcelas'] = 0; $dadosContrato['comissao_empresa'] = str_replace(array( '.', ',' ), array( '', '.' ), $dadosContrato['comissao_empresa']); $valorBase = $dadosContrato['base_comissao_empresa'] == 'VALOR_LIQUIDO' ? $objContrato['valor_liquido'] : $objContrato['valor_bruto']; switch ( $dadosContrato['tipo_remuneracao'] ) { case 2: $parcelas = $this->maxParcelaContrato($idContrato); $dadosContrato['parcelas'] = $parcelas['parcelas'] + 1; $dadosContrato['valor_lancamento'] = $valorBase / $objContrato['prazo'] * $dadosContrato['comissao_empresa'] / 100; break; case 3: case 4: $dadosContrato['valor_lancamento'] = $valorBase * $dadosContrato['comissao_empresa'] / 100; break; default: $dadosContrato['valor_lancamento'] = $objContrato['valor_fixo_empresa'] + ($valorBase * $dadosContrato['comissao_empresa'] / 100); } $dadosContrato['contrato_id'] = $idContrato; $dadosContrato['valor_comissao_empresa'] = $objContrato['base_comissao_empresa_valor'] + $objContrato['valor_fixo_empresa']; $dadosContrato['data_recebimento_comissao'] = $data; $dadosContrato['data_saldo'] = $data; $dadosContrato['importacao_manual'] = 1; //verifica se a comissão da empresa não está setada para poder atualizar if ((empty($objContrato->data_recebimento_comissao) || $objContrato->data_recebimento_comissao == '0000-00-00') && !empty($dadosContrato['valor_lancamento'])) { $objContrato->id = $objContrato->id; $objContrato->data_recebimento_comissao = $dadosContrato['data_recebimento_comissao']; $objContrato->save(); } try { unset($dadosContrato['base_comissao_empresa']); $this->receberComissao($dadosContrato); $contSuccess++; } catch ( Exception $exc ) { $contErrors++; $msgs[] = $exc->getMessage(); continue; } } return array( 'cont_success' => $contSuccess, 'cont_errors' => $contErrors, 'cont_not_select' => $contNotSelect, 'msgs' => $msgs ); } }
💾 保存文件
← 返回文件管理器