Exemple #1
0
// 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;
 }
Exemple #3
0
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);
    }
Exemple #6
0
            $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;
 }