// Abre a conexao com o banco de dados $dataConnector = new DataConnector('both'); $dataConnector->OpenConnection(); if ($dataConnector->mysqlConnection == null || $dataConnector->sqlserverConnection == 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 $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; $adjustmentRateDAO = new AdjustmentRateDAO($dataConnector->mysqlConnection); $adjustmentRateDAO->showErrors = 1; // Busca os dados do contrato $contract = $contractDAO->RetrieveRecord($id); // Busca o índice de reajuste $adjustmentRate = $adjustmentRateDAO->RetrieveRecord($contract->indiceReajuste); // Busca todos os subcontratos pertencentes ao contrato $subContractArray = $subContractDAO->RetrieveRecordArray("contrato_id = " . $id); ?>
static function GetSubcontractsByOwner($mysqlConnection, $contractEnumeration) { $subContractDAO = new SubContractDAO($mysqlConnection); $subContractDAO->showErrors = 1; $subContractArray = $subContractDAO->RetrieveRecordArray("contrato_id IN (" . $contractEnumeration . ")"); $subContractEnumeration = ""; foreach ($subContractArray as $subContract) { if (!empty($subContractEnumeration)) { $subContractEnumeration = $subContractEnumeration . ", "; } $subContractEnumeration = $subContractEnumeration . $subContract->id; } // Coloca 0 (zero) como item da enumeração caso a lista esteja vazia, de maneira que ela possa ser usada // em uma subquery com IN. Exemplos: WHERE subContractId IN (1, 2, 3) WHERE subContractId IN (0) if (empty($subContractEnumeration)) { $subContractEnumeration = "0"; } return $subContractEnumeration; }
include_once "../../../DataAccessObjects/ContractItemDAO.php"; include_once "../../../DataTransferObjects/ContractItemDTO.php"; if (!isset($_REQUEST["acao"])) { echo "Erro no processamento da requisição."; exit; } $acao = $_REQUEST["acao"]; // 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 o objeto de mapeamento objeto-relacional $subContractDAO = new SubContractDAO($dataConnector->mysqlConnection); $subContractDAO->showErrors = 1; if ($acao == "store") { $id = 0; $subContract = new SubContractDTO(); if (isset($_REQUEST["id"]) && $_REQUEST["id"] != 0) { $id = $_REQUEST["id"]; $subContract = $subContractDAO->RetrieveRecord($id); } $subContract->codigoContrato = $_REQUEST["contractId"]; $subContract->codigoTipoContrato = $_REQUEST["contractTypeId"]; $recordId = $subContractDAO->StoreRecord($subContract); if ($recordId == null) { echo "Não foi possivel efetuar a operação..."; exit; }
$subContractId = 0; if (isset($_REQUEST["subContractId"]) && $_REQUEST["subContractId"] != 0) { $subContractId = $_REQUEST["subContractId"]; } // Abre a conexao com o banco de dados $dataConnector = new DataConnector('both'); $dataConnector->OpenConnection(); if ($dataConnector->mysqlConnection == null || $dataConnector->sqlserverConnection == null) { echo 'Não foi possível se connectar ao bando de dados!'; exit; } // Cria o objeto de mapeamento objeto-relacional $contractItem = new ContractItemDTO(); // Busca o código do Parceiro de Negócios $businessPartnerCode = ""; $subContractDAO = new SubContractDAO($dataConnector->mysqlConnection); $subContractDAO->showErrors = 1; $subContract = $subContractDAO->RetrieveRecord($subContractId); if ($subContract != null) { $contractDAO = new ContractDAO($dataConnector->mysqlConnection); $contractDAO->showErrors = 1; $contract = $contractDAO->RetrieveRecord($subContract->codigoContrato); $businessPartnerCode = $contract->pn; } ?> <script type="text/javascript" > function GetEquipmentInfo() { var equipmentCode = $("select[name=equipmentCode]").val(); if (!equipmentCode) equipmentCode = 0;
include_once "../DataTransferObjects/ContractItemDTO.php"; $businessPartnerCode = $_GET['businessPartnerCode']; $contractId = $_GET['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 $contractDAO = new ContractDAO($dataConnector->mysqlConnection); $contractDAO->showErrors = 1; $contractItemDAO = new ContractItemDAO($dataConnector->mysqlConnection); $contractItemDAO->showErrors = 1; $subContractDAO = new SubContractDAO($dataConnector->mysqlConnection); $subContractDAO->showErrors = 1; // Busca os contratos pertencentes ao parceiro de negócios $contractArray = $contractDAO->RetrieveRecordArray("pn='" . $businessPartnerCode . "'"); // Busca os items de contrato pertencentes ao parceiro de negócios $itemArray = $contractItemDAO->RetrieveRecordArray("businessPartnerCode = '" . $businessPartnerCode . "'"); echo '<option value="0" >Agrupar equips. do cliente(independente do contrato)</option>'; $contractIdArray = array(); foreach ($contractArray as $contract) { array_push($contractIdArray, $contract->id); } foreach ($itemArray as $contractItem) { $subContract = $subContractDAO->RetrieveRecord($contractItem->codigoSubContrato); if (!in_array($subContract->codigoContrato, $contractIdArray)) { array_push($contractIdArray, $subContract->codigoContrato); }
$actionLog = new ActionLogDTO($transactionType, 'bonus', $bonusId); $actionLog->tipoAgregacao = 'contrato'; $actionLog->idAgregacao = $id; $actionLogDAO->StoreRecord($actionLog); } } echo 'Operação efetuada com sucesso!'; } if ($acao == "remove") { $transactionType = "DELETE"; if (!isset($_POST['reg'])) { echo "Selecione os registros que deseja excluir"; exit; } foreach ($_POST['reg'] as $key => $reg) { $subContractEnumeration = SubContractDAO::GetSubcontractsByOwner($dataConnector->mysqlConnection, $reg); $itemArray = ContractItemDAO::GetItemsByOwner($dataConnector->mysqlConnection, $subContractEnumeration); $itemCount = sizeof($itemArray); if ($itemCount != 0) { echo "É necessário excluir os itens de contrato antes de prosseguir."; exit; } if (!$contractDAO->DeleteRecord($reg)) { echo "Não foi possivel efetuar a operação..."; exit; } } echo "Operação efetuada com sucesso!"; } // Grava no histórico a ação if ($transactionType == "INSERT") {
function BuildRows($valuesOnly) { global $dataConnector; global $itemArray; global $calculoFaturamento; global $totalContadores; // Cria os objetos de mapeamento objeto-relacional $subContractDAO = new SubContractDAO($dataConnector->mysqlConnection); $subContractDAO->showErrors = 1; $businessPartnerDAO = new BusinessPartnerDAO($dataConnector->sqlserverConnection); $businessPartnerDAO->showErrors = 1; $equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection); $equipmentDAO->showErrors = 1; $inventoryItemDAO = new InventoryItemDAO($dataConnector->sqlserverConnection); $inventoryItemDAO->showErrors = 1; // Para cada equipamento monta os dados de faturamento foreach ($itemArray as $contractItem) { $equipmentId = $contractItem->codigoCartaoEquipamento; $subContract = $subContractDAO->RetrieveRecord($contractItem->codigoSubContrato); $contractType = $subContract->codigoTipoContrato; $contractDTO = $calculoFaturamento->GetContract($dataConnector->mysqlConnection, $subContract->id); $divisor = $calculoFaturamento->GetDivisor($dataConnector->mysqlConnection, $contractDTO, $subContract); // divisor para calculo da média (no caso de contrato global) // Caso o status do contrato seja finalizado ou cancelado não fatura, passa para o proximo equipamento if ($contractDTO->status == 3 || $contractDTO->status == 4) { continue; } $equipmentDTO = $equipmentDAO->RetrieveRecord($equipmentId); $inventoryItem = $inventoryItemDAO->RetrieveRecord($equipmentDTO->itemCode); $contractTypeInfo = $calculoFaturamento->GetTipoContratoAsText($contractType); $equipmentInfo = GetEquipmentInfo($equipmentDTO, $contractTypeInfo); echo '<tr bgcolor="LIGHTGRAY" ><td colspan="11" >' . $equipmentInfo . '</td></tr>'; $counterIdArray = array_keys($calculoFaturamento->GetContadores()); foreach ($counterIdArray as $counterId) { $billingSummary = $totalContadores[$counterId]; $formaCobranca = $calculoFaturamento->GetFormaCobranca($subContract->id, $counterId); $consumo = $calculoFaturamento->GetConsumo($equipmentId, $counterId); $consumoGlobal = 0; $excedenteGlobal = 0; if ($contractDTO->global) { $consumoGlobal = $calculoFaturamento->GetConsumoGlobal($dataConnector->mysqlConnection, $contractDTO->id, $counterId); $franquiaGlobal = $calculoFaturamento->GetFranquiaGlobal($dataConnector->mysqlConnection, $counterId); $excedenteGlobal = $consumoGlobal > $franquiaGlobal ? $consumoGlobal - $franquiaGlobal : 0; if ($franquiaGlobal == 0) { $excedenteGlobal = 0; } } $modalidadeMedicao = 0; $fixo = 0.0; $variavelDefault = 0.0; $franquia = 0; $individualPorCapacidade = 0; if ($formaCobranca != null) { $modalidadeMedicao = $formaCobranca->modalidadeMedicao; $fixo = $formaCobranca->fixo / $divisor; $variavelDefault = $formaCobranca->variavel; $franquia = $formaCobranca->franquia / $divisor; $individualPorCapacidade = $formaCobranca->individual; if ($individualPorCapacidade) { $franquia = $equipmentDTO->capacity; } } if ($modalidadeMedicao == 1) { // Sem leituras $rowData = '<td>' . $calculoFaturamento->GetContadorAsText($counterId) . '</td><td>Sem leitura</td><td>Sem leitura</td><td>Sem leitura</td><td>0</td><td>0</td><td>0</td><td>0</td><td>' . formatBrCurrency($fixo, 2) . '</td><td>0</td><td>' . formatBrCurrency($fixo, 2) . '</td>'; if ($valuesOnly) { $rowData = '<td>' . $equipmentId . '</td><td>' . $contractTypeInfo . '</td><td>' . $counterId . '</td><td>Sem leitura</td><td>Sem leitura</td><td>Sem leitura</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>' . $fixo . '</td><td>0</td><td>' . $fixo . '</td>'; } echo '<tr bgcolor="WHITE" >' . $rowData . '</tr>'; $billingSummary->valorFixo += $fixo; $billingSummary->excedente += 0; $billingSummary->valorTotal += $fixo; } if ($consumo != null && $modalidadeMedicao != 1) { $dataLeitura = $consumo->dataLeitura; $medicaoInicial = $consumo->medicaoInicial; $medicaoFinal = $consumo->medicaoFinal; $consumoMedido = $consumo->total; $ajuste = $consumo->ajusteTotal; $excedente = $consumoMedido > $franquia ? $consumoMedido - $franquia : 0; if ($contractDTO->global && !$individualPorCapacidade) { $excedente = $excedenteGlobal / sizeof($itemArray); } if ($franquia == 0) { $excedente = 0; } $tarifaExcedente = $calculoFaturamento->GetCustoVariavel($subContract->id, $counterId, $consumoMedido, $variavelDefault); if ($contractDTO->global && !$individualPorCapacidade) { $tarifaExcedente = $calculoFaturamento->GetCustoVariavel($subContract->id, $counterId, $consumoGlobal, $variavelDefault); } $valorFixo = $fixo; $valorVariavel = $franquia != 0 ? $excedente * $tarifaExcedente : $consumoMedido * $tarifaExcedente; $valorTotal = $valorFixo + $valorVariavel; $rowData = '<td>' . $calculoFaturamento->GetContadorAsText($counterId) . '</td><td>' . date("d/m/Y", $dataLeitura) . '</td><td>' . $medicaoFinal . '</td><td>' . $medicaoInicial . '</td><td>' . $consumoMedido . '<br/>(Acrésc/Desc = ' . $ajuste . ')' . '</td><td>' . formatDecimal($franquia, 2) . '</td><td>' . round($excedente) . '</td><td>' . formatDecimal($tarifaExcedente, null) . '</td><td>' . formatBrCurrency($valorFixo, 2) . '</td><td>' . formatBrCurrency($valorVariavel, 2) . '</td><td>' . formatBrCurrency($valorTotal, 2) . '</td>'; if ($valuesOnly) { $rowData = '<td>' . $equipmentId . '</td><td>' . $contractTypeInfo . '</td><td>' . $counterId . '</td><td>' . date("Y-m-d", $dataLeitura) . '</td><td>' . $medicaoFinal . '</td><td>' . $medicaoInicial . '</td><td>' . $consumoMedido . '</td><td>' . $ajuste . '</td><td>' . $franquia . '</td><td>' . $excedente . '</td><td>' . $tarifaExcedente . '</td><td>' . $valorFixo . '</td><td>' . $valorVariavel . '</td><td>' . $valorTotal . '</td>'; } echo '<tr bgcolor="WHITE" >' . $rowData . '</tr>'; $billingSummary->consumo += $consumoMedido; $billingSummary->franquia += $franquia; $billingSummary->excedente += $excedente; $billingSummary->valorFixo += $valorFixo; $billingSummary->valorVariavel += $valorVariavel; $billingSummary->valorTotal += $valorTotal; } } // foreach de tipos de contador } // foreach de itens de faturamento (equipamentos) }
function BuildReportTable($startColumn, $startRow) { global $dataConnector; global $objPhpExcel; global $contractArray; global $model; global $searchMethod; $contractDAO = new ContractDAO($dataConnector->mysqlConnection); $contractDAO->showErrors = 1; $subContractDAO = new SubContractDAO($dataConnector->mysqlConnection); $subContractDAO->showErrors = 1; $contractItemDAO = new ContractItemDAO($dataConnector->mysqlConnection); $contractItemDAO->showErrors = 1; $equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection); $equipmentDAO->showErrors = 1; $equipmentModelDAO = new EquipmentModelDAO($dataConnector->mysqlConnection); $equipmentModelDAO->showErrors = 1; $salesPersonDAO = new SalesPersonDAO($dataConnector->sqlserverConnection); $salesPersonDAO->showErrors = 1; // Define o titulo da tabela $currentRow = $startRow; $activeSheet = $objPhpExcel->getActiveSheet(); $activeSheet->setCellValue($startColumn . $startRow, 'CONTRATOS'); $styleArray = array('font' => array('bold' => true, 'size' => 16)); $activeSheet->getStyle($startColumn . $startRow . ':' . $startColumn . $startRow)->applyFromArray($styleArray); // Cria o cabeçalho da tabela $colNum = ord($startColumn); $headers = array('Número', 'Cliente', 'Detalhes', 'Assinatura', 'Encerramento', 'Inicio do Atendimento', 'Fim do Atendimento', 'Parcela', 'Vendedor', 'Status', 'Global(S OU N)'); $offset = 0; foreach ($headers as $header) { $activeSheet->getColumnDimension(chr($colNum + $offset))->setWidth(25); $offset++; } $activeSheet->getColumnDimension(chr($colNum + 1))->setWidth(50); $activeSheet->getColumnDimension(chr($colNum + 2))->setWidth(50); $currentRow++; InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // Busca os modelos de equipamento cadastrados no sistema $modelArray = array(0 => ""); $equipmentModelArray = $equipmentModelDAO->RetrieveRecordArray(); foreach ($equipmentModelArray as $modelDTO) { $modelArray[$modelDTO->id] = $modelDTO->modelo; } // Busca os vendedores cadastrados no sistema $retrievedArray = $salesPersonDAO->RetrieveRecordArray(); $salesPersonArray = array(); foreach ($retrievedArray as $salesPersonDTO) { $salesPersonArray[$salesPersonDTO->slpCode] = $salesPersonDTO->slpName; } // Gera as linhas da tabela $identifierArray = array(); $LFCR = chr(10) . chr(13); foreach ($contractArray as $contract) { if (array_key_exists($contract->id, $identifierArray)) { continue; } // contrato repetido, pula para o próximo registro $clientName = BusinessPartnerDAO::GetClientName($dataConnector->sqlserverConnection, $contract->pn); $salesPersonName = $salesPersonArray[$contract->vendedor]; $details = ""; $subContractArray = $subContractDAO->RetrieveRecordArray("contrato_id=" . $contract->id); foreach ($subContractArray as $subContract) { if (!empty($details)) { $details = $details . $LFCR; } $details = $details . $subContract->siglaTipoContrato; $itemArray = $contractItemDAO->RetrieveRecordArray("subContrato_id=" . $subContract->id); foreach ($itemArray as $contractItem) { $equipment = $equipmentDAO->RetrieveRecord($contractItem->codigoCartaoEquipamento); $installationDate = empty($equipment->installationDate) ? '' : $equipment->installationDate->format('d/m/Y'); // filtra apenas os items ativos e emprestados if ($equipment->status == 'A' || $equipment->status == 'L') { if (!empty($details)) { $details = $details . $LFCR; } $equipmentModel = ""; if (array_key_exists($equipment->model, $modelArray)) { $equipmentModel = $modelArray[$equipment->model]; } $details = $details . $equipmentModel . ' Série ' . $equipment->manufacturerSN . ' Data Instalação ' . $installationDate; } } } if ($searchMethod == 1 || $searchMethod == 2) { if (!empty($model)) { $modelMatched = false; if (strpos($details, $model)) { $modelMatched = true; } if (!$modelMatched) { continue; } } } $currentRow++; $row = array(); $row[0] = str_pad($contract->numero, 5, '0', STR_PAD_LEFT); $row[1] = $clientName; $row[2] = $details; $row[3] = $contract->dataAssinatura; $row[4] = $contract->dataEncerramento; $row[5] = $contract->inicioAtendimento; $row[6] = $contract->fimAtendimento; $row[7] = $contract->parcelaAtual . '/' . $contract->quantidadeParcelas; $row[8] = $salesPersonName; $row[9] = $contractDAO->GetStatusAsText($contract->status); $row[10] = $contract->global == 0 ? 'N' : 'S'; InsereLinhaPlanilha($currentRow, $startColumn, $row); $identifierArray[$contract->id] = $contract->numero; } }
function GetContract($mysqlConnection, $subContractId) { // Cria os objetos de mapeamento objeto-relacional $contractDAO = new ContractDAO($mysqlConnection); $contractDAO->showErrors = 1; $subContractDAO = new SubContractDAO($mysqlConnection); $subContractDAO->showErrors = 1; // Busca o contrato a que pertence $subContract = $subContractDAO->RetrieveRecord($subContractId); $contract = $contractDAO->RetrieveRecord($subContract->codigoContrato); return $contract; }