$subContractId = $_REQUEST["subContractId"]; } // Abre a conexao com o banco de dados $dataConnector = new DataConnector('mySql'); $dataConnector->OpenConnection(); if ($dataConnector->mysqlConnection == null) { echo 'Não foi possível se connectar ao bando de dados!'; exit; } $nivelAutorizacao = GetAuthorizationLevel($dataConnector->mysqlConnection, $functionalities["gerenciamentoContratos"]); if ($nivelAutorizacao <= 1) { DisplayNotAuthorizedWarning(); exit; } // Cria os objetos de mapeamento objeto-relacional $contractBonusDAO = new ContractBonusDAO($dataConnector->mysqlConnection); $contractBonusDAO->showErrors = 1; $counterDAO = new CounterDAO($dataConnector->mysqlConnection); $counterDAO->showErrors = 1; // Busca os bonus associados ao subContrato $bonusArray = $contractBonusDAO->RetrieveRecordArray("subcontrato_id = " . $subContractId . " ORDER BY de, ate"); if (sizeof($bonusArray) == 0) { echo '<tr><td colspan="5" align="center" >Nenhum registro encontrado!</td></tr>'; } foreach ($bonusArray as $contractBonus) { $counter = $counterDAO->RetrieveRecord($contractBonus->codigoContador); ?> <tr> <td > <?php echo $counter->nome;
include_once "../../../DataTransferObjects/ActionLogDTO.php"; if (!isset($_REQUEST["acao"]) || !isset($_REQUEST["contractId"])) { echo "Erro no processamento da requisição."; exit; } $acao = $_REQUEST["acao"]; $contractId = $_REQUEST['contractId']; // Abre a conexao com o banco de dados $dataConnector = new DataConnector('mySql'); $dataConnector->OpenConnection(); if ($dataConnector->mysqlConnection == null) { echo 'Não foi possível se connectar ao bando de dados!'; exit; } // Cria os objetos de mapeamento objeto-relacional $contractBonusDAO = new ContractBonusDAO($dataConnector->mysqlConnection); $contractBonusDAO->showErrors = 1; $actionLogDAO = new ActionLogDAO($dataConnector->mysqlConnection); $actionLogDAO->showErrors = 1; if ($acao == "store") { $id = 0; $transactionType = 'INSERT'; $contractBonus = new ContractBonusDTO(); if (isset($_REQUEST["id"]) && $_REQUEST["id"] != 0) { $id = $_REQUEST["id"]; $transactionType = 'UPDATE'; $contractBonus = $contractBonusDAO->RetrieveRecord($id); } $contractBonus->codigoContrato = $_REQUEST["contractId"]; $contractBonus->codigoSubContrato = $_REQUEST["subContractId"]; $contractBonus->codigoContador = $_REQUEST["counterId"];
function BillingEngine($dataConnector, $listaSubContratos, $itemArray, $startDate = null, $endDate = null) { $this->listaSubContratos = $listaSubContratos; $this->arrayItens = $itemArray; $this->consumos = array(); $this->franquias = array(); // Busca os contadores cadastrados no sistema $counterDAO = new CounterDAO($dataConnector->mysqlConnection); $counterDAO->showErrors = 1; $counterArray = $counterDAO->RetrieveRecordArray(); $this->contadores = array(); foreach ($counterArray as $counter) { $this->contadores[$counter->id] = $counter->nome; } // Busca os tipos de contrato cadastrados no sistema $contractTypeDAO = new ContractTypeDAO($dataConnector->mysqlConnection); $contractTypeDAO->showErrors = 1; $contractTypeArray = $contractTypeDAO->RetrieveRecordArray(); $this->tiposContrato = array(); foreach ($contractTypeArray as $contractType) { $this->tiposContrato[$contractType->id] = $contractType->nome . ' (' . $contractType->sigla . ')'; } // Busca as formas de cobrança cadastradas nos subcontratos $contractChargeDAO = new ContractChargeDAO($dataConnector->mysqlConnection); $contractChargeDAO->showErrors = 1; $chargeArray = $contractChargeDAO->RetrieveRecordArray("subContrato_id IN (" . $listaSubContratos . ")"); $this->formasCobranca = array(); foreach ($chargeArray as $contractCharge) { $key = $contractCharge->codigoSubContrato . '-' . $contractCharge->codigoContador; $this->formasCobranca[$key] = new ChargeFormula($contractCharge->modalidadeMedicao, $contractCharge->fixo, $contractCharge->variavel, $contractCharge->franquia, $contractCharge->individual); if (!array_key_exists($contractCharge->codigoContador, $this->franquias)) { $this->franquias[$contractCharge->codigoContador] = 0; } $this->franquias[$contractCharge->codigoContador] += $contractCharge->franquia; } // Busca os preços por faixa de consumo $contractBonusDAO = new ContractBonusDAO($dataConnector->mysqlConnection); $contractBonusDAO->showErrors = 1; $bonusArray = $contractBonusDAO->RetrieveRecordArray("subContrato_id IN (" . $listaSubContratos . ")"); $this->precosFaixaConsumo = array(); foreach ($bonusArray as $bonus) { $this->precosFaixaConsumo[$bonus->id] = new PriceByVolume($bonus->codigoSubContrato, $bonus->codigoContador, $bonus->de, $bonus->ate, $bonus->valor); } // Busca o consumo para os contadores de cada equipamento $readingDAO = new ReadingDAO($dataConnector->mysqlConnection); $readingDAO->showErrors = 1; foreach ($itemArray as $contractItem) { $equipamento_id = $contractItem->codigoCartaoEquipamento; $keys = array_keys($this->contadores); foreach ($keys as $contador_id) { $ajusteReset = 0; $readingArray = array(); $arrLen = 0; if ($startDate != null && $endDate != null) { // Recupera as leituras no período, desconsiderando resets de contador como leitura final $query = "codigoCartaoEquipamento=" . $equipamento_id . " AND contador_id=" . $contador_id . " AND data >= '" . $startDate . " 00:00' AND data <= '" . $endDate . " 23:59' AND origemLeitura_id=2 ORDER BY leitura.data DESC"; $tempArray = $readingDAO->RetrieveRecordArray($query); $firstReading = null; $lastReading = null; foreach ($tempArray as $dto) { if ($arrLen == 1 && $dto->reset) { // procura a leitura inicial, depois de ter adicionado a final $firstReading = $dto; array_push($readingArray, $dto); $arrLen++; } if ($arrLen == 0 && !$dto->reset) { // procura a leitura final $lastReading = $dto; array_push($readingArray, $dto); $arrLen++; } } if ($lastReading != null) { // Completa a faixa de leituras $tempLen = sizeof($tempArray); $firstReadingBeforeReset = $tempArray[$tempLen - 1]; if ($firstReading != null && $firstReading->data != $firstReadingBeforeReset->data) { $lastReadingBeforeReset = null; foreach (array_reverse($tempArray) as $dto) { if ($dto->reset) { break; } $lastReadingBeforeReset = $dto; } $ajusteReset = $lastReadingBeforeReset->contagem - $firstReadingBeforeReset->contagem; } if ($firstReading == null) { array_push($readingArray, $firstReadingBeforeReset); $arrLen++; } } } else { // Recupera as duas últimas leituras, desconsiderando resets de contador como leitura final $query = "codigoCartaoEquipamento=" . $equipamento_id . " AND contador_id=" . $contador_id . " AND origemLeitura_id=2 ORDER BY leitura.data DESC LIMIT 0, 10"; $tempArray = $readingDAO->RetrieveRecordArray($query); foreach ($tempArray as $dto) { if ($arrLen == 1) { // procura a leitura inicial, depois de ter adicionado a final array_push($readingArray, $dto); $arrLen++; } if ($arrLen == 0 && !$dto->reset) { // procura a leitura final array_push($readingArray, $dto); $arrLen++; } } } if ($arrLen == 1) { // caso tenha apenas uma leitura $reading = $readingArray[0]; $dataLeitura = strtotime($reading->data); $medicaoInicial = 0; $medicaoFinal = $reading->contagem; $key = $equipamento_id . '-' . $contador_id; $this->consumos[$key] = new ConsumptionMeasure($equipamento_id, $contador_id, $dataLeitura, $medicaoInicial, $medicaoFinal); $this->consumos[$key]->ajusteMedicaoInicial = 0; $this->consumos[$key]->ajusteMedicaoFinal = $reading->ajusteContagem; } if ($arrLen > 1) { // caso tenha mais de uma leitura (ordenação decrescente) $initialReading = $readingArray[$arrLen - 1]; $finalReading = $readingArray[0]; $dataLeitura = strtotime($finalReading->data); $medicaoInicial = $initialReading->contagem; $medicaoFinal = $finalReading->contagem; $key = $equipamento_id . '-' . $contador_id; $this->consumos[$key] = new ConsumptionMeasure($equipamento_id, $contador_id, $dataLeitura, $medicaoInicial, $medicaoFinal); $this->consumos[$key]->ajusteMedicaoInicial = $initialReading->ajusteContagem; $this->consumos[$key]->ajusteMedicaoFinal = $finalReading->ajusteContagem; } if ($arrLen > 0) { // adiciona o total (consumo) caso exista alguma leitura $formaCobranca = $this->GetFormaCobranca($contractItem->codigoSubContrato, $contador_id); if ($formaCobranca != null && $formaCobranca->modalidadeMedicao == 2) { // Leitura simples (apenas a final) $this->consumos[$key]->medicaoInicial = 0; } // o ajuste na medição inicial foi computado no faturamento anterior $ajuste = $this->consumos[$key]->ajusteMedicaoFinal + $ajusteReset; $this->consumos[$key]->total = $this->consumos[$key]->medicaoFinal + $ajuste - $this->consumos[$key]->medicaoInicial; $this->consumos[$key]->ajusteTotal = $ajuste; } } // foreach de contadores } // foreach de itens }
$updatedCharge->fixo = $_REQUEST["fixoReajustado" . $contractCharge->id]; $updatedCharge->variavel = $_REQUEST["variavelReajustado" . $contractCharge->id]; $updatedCharge->franquia = $contractCharge->franquia; $updatedCharge->individual = $contractCharge->individual; $chargeId = $contractChargeDAO->StoreRecord($updatedCharge); if ($chargeId == null) { echo "Não foi possivel efetuar a operação..."; exit; } $actionLog = new ActionLogDTO($transactionType, 'cobranca', $chargeId); $actionLog->tipoAgregacao = 'contrato'; $actionLog->idAgregacao = $id; $actionLogDAO->StoreRecord($actionLog); } } $contractBonusDAO = new ContractBonusDAO($dataConnector->mysqlConnection); $contractBonusDAO->showErrors = 1; $contractBonusArray = $contractBonusDAO->RetrieveRecordArray("contrato_id=" . $id); foreach ($contractBonusArray as $contractBonus) { if (isset($_REQUEST["valorReajustado" . $contractBonus->id])) { if (!$contractBonusDAO->DeleteRecord($contractBonus->id)) { echo "Não foi possivel efetuar a operação..."; exit; } $updatedBonus = new ContractBonusDTO(); $updatedBonus->codigoContrato = $contractBonus->codigoContrato; $updatedBonus->codigoSubContrato = $contractBonus->codigoSubContrato; $updatedBonus->codigoContador = $contractBonus->codigoContador; $updatedBonus->de = $contractBonus->de; $updatedBonus->ate = $contractBonus->ate; $updatedBonus->valor = $_REQUEST["valorReajustado" . $contractBonus->id];
if ($dataConnector->mysqlConnection == null || $dataConnector->sqlserverConnection == null) { echo 'Não foi possível se connectar ao bando de dados!'; exit; } // Cria os objetos de mapeamento objeto-relacional $actionLogDAO = new ActionLogDAO($dataConnector->mysqlConnection); $actionLogDAO->showErrors = 1; $loginDAO = new LoginDAO($dataConnector->mysqlConnection); $loginDAO->showErrors = 1; $contractDAO = new ContractDAO($dataConnector->mysqlConnection); $contractDAO->showErrors = 1; $subContractDAO = new SubContractDAO($dataConnector->mysqlConnection); $subContractDAO->showErrors = 1; $contractChargeDAO = new ContractChargeDAO($dataConnector->mysqlConnection); $contractChargeDAO->showErrors = 1; $contractBonusDAO = new ContractBonusDAO($dataConnector->mysqlConnection); $contractBonusDAO->showErrors = 1; // Traz os dados do contrato $contract = $contractDAO->RetrieveRecord($contractId); // Traz o nome do cliente $clientName = new Text(BusinessPartnerDAO::GetClientName($dataConnector->sqlserverConnection, $contract->pn)); // Traz o historico para o contrato $actionLogArray = $actionLogDAO->RetrieveRecordArray("(tipoObjeto = 'contrato' AND idObjeto = " . $contractId . ") OR (tipoAgregacao = 'contrato' AND idAgregacao = " . $contractId . ")"); function BuildRowContents($data, $usuario, $acao) { echo '<tr>'; echo ' <td>' . $data . '</td>'; echo ' <td>' . $usuario . '</td>'; echo ' <td>' . $acao . '</td>'; echo '</tr>'; }