Esempio n. 1
0
    $subContract = $_REQUEST["subContract"];
}
// 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["gerenciamentoLeituras"]);
if ($nivelAutorizacao <= 1) {
    DisplayNotAuthorizedWarning();
    exit;
}
// Cria os objetos de mapeamento objeto-relacional
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
$counterDAO = new CounterDAO($dataConnector->mysqlConnection);
$counterDAO->showErrors = 1;
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
$equipment = $equipmentDAO->RetrieveRecord($equipmentCode);
$capacity = $equipment->capacity;
$serialNumber = $equipment->manufacturerSN . " ( " . $equipment->internalSN . " ) ";
$clientName = new Text(BusinessPartnerDAO::GetClientName($dataConnector->sqlserverConnection, $equipment->customer));
$id = 0;
$reading = new ReadingDTO();
if (isset($_REQUEST["id"]) && $_REQUEST["id"] != 0) {
    $id = $_REQUEST["id"];
    $reading = $readingDAO->RetrieveRecord($id);
}
if (isset($_GET['cutoffDate'])) {
    $cutoffDate = $_GET['cutoffDate'];
}
$origemLeitura = null;
if (isset($_GET['origemLeitura'])) {
    $origemLeitura = $_GET['origemLeitura'];
}
// 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;
}
// Traz a leitura mais recente para o cartão de equipamento em questão partindo de dataDeCorte (contadores anteriores a dataDeCorte)
$counterReading = -1;
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
$filter = "codigoCartaoEquipamento = " . $equipmentCode . " AND contador_id = " . $counterId . " AND data < '" . $cutoffDate . "'";
if (isset($origemLeitura)) {
    $filter = $filter . " AND origemLeitura_id = " . $origemLeitura;
}
$filter = $filter . " ORDER BY data DESC LIMIT 0, 1";
$readingArray = $readingDAO->RetrieveRecordArray($filter);
if (sizeof($readingArray) == 1) {
    $reading = $readingArray[0];
    $counterReading = $reading->contagem;
}
echo $counterReading;
// Fecha a conexão com o banco de dados
$dataConnector->CloseConnection();
include_once "../DataTransferObjects/CounterDTO.php";
include_once "../DataAccessObjects/ReadingDAO.php";
include_once "../DataTransferObjects/ReadingDTO.php";
include_once "../DataAccessObjects/ServiceCallDAO.php";
include_once "../DataTransferObjects/ServiceCallDTO.php";
// 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
$serviceCallDAO = new ServiceCallDAO($dataConnector->mysqlConnection);
$serviceCallDAO->showErrors = 1;
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
$counterDAO = new CounterDAO($dataConnector->mysqlConnection);
$counterDAO->showErrors = 1;
// Busca os dados do chamado
$serviceCall = $serviceCallDAO->RetrieveRecord($serviceCallId);
echo "<div style='width:50%'>";
echo "<label>Número<br />";
echo "<input type='text' style='width:90%;' value='" . str_pad($serviceCall->id, 5, '0', STR_PAD_LEFT) . "' />";
echo "</label>";
echo "</div>";
echo "<label>Defeito<br />";
echo "<input type='text' style='width:99%;' value='" . $serviceCall->defeito . "' />";
echo "</label>";
echo "<div style='width:50%; float:left'>";
echo "<label>Data de Abertura<br />";
Esempio n. 4
0
        $actionLog->tipoObjeto = "trace";
        $actionLogDAO = new ActionLogDAO($dataConnector->mysqlConnection);
        $actionLogDAO->showErrors = 1;
        $actionLogDAO->StoreRecord($actionLog);
    }
    echo "Operação efetuada com sucesso!";
}
if ($acao == "remove") {
    if (!isset($_POST['reg'])) {
        echo "Selecione os registros que deseja excluir";
        exit;
    }
    foreach ($_POST['reg'] as $key => $reg) {
        // Verifica as dependências do chamado
        $serviceCallId = str_pad($reg, 5, '0', STR_PAD_LEFT);
        $readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
        $readingDAO->showErrors = 1;
        $readingArray = $readingDAO->RetrieveRecordArray("chamadoServico_id=" . $reg);
        if (sizeof($readingArray) > 0) {
            echo "O chamado " . $serviceCallId . " não pode ser excluído pois está amarrado à leituras de contador. Exclua essas dependências primeiro.";
            exit;
        }
        $expenseDAO = new ExpenseDAO($dataConnector->mysqlConnection);
        $expenseDAO->showErrors = 1;
        $expenseArray = $expenseDAO->RetrieveRecordArray("codigoChamado = " . $reg);
        if (sizeof($expenseArray) > 0) {
            echo "O chamado " . $serviceCallId . " não pode ser excluído pois está amarrado à despesas de chamado. Exclua essas dependências primeiro.";
            exit;
        }
        $partRequestDAO = new PartRequestDAO($dataConnector->mysqlConnection);
        $partRequestDAO->showErrors = 1;
$currentDate = new UnixTime(time());
// 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 os objetos de mapeamento objeto-relacional
$businessPartnerDAO = new BusinessPartnerDAO($dataConnector->sqlserverConnection);
$businessPartnerDAO->showErrors = 1;
$equipmentModelDAO = new EquipmentModelDAO($dataConnector->mysqlConnection);
$equipmentModelDAO->showErrors = 1;
$manufacturerDAO = new ManufacturerDAO($dataConnector->sqlserverConnection);
$manufacturerDAO->showErrors = 1;
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
// Recupera os clientes cadastrados no sistema
$clientArray = $businessPartnerDAO->RetrieveRecordArray("CardName IS NOT NULL ORDER BY CardName");
// Recupera os modelos cadastrados no sistema
$modelArray = $equipmentModelDAO->RetrieveRecordArray("id > 0 ORDER BY modelo");
// Busca os fabricantes cadastrados no sistema
$manufacturerArray = array();
$tempArray = $manufacturerDAO->RetrieveRecordArray();
foreach ($tempArray as $manufacturer) {
    $manufacturerArray[$manufacturer->FirmCode] = $manufacturer->FirmName;
}
// Busca as origens de leitura cadastradas no sistema
$readingSources = $readingDAO->RetrieveReadingSources();
?>
Esempio n. 6
0
    $subContract = $_REQUEST["subContract"];
}
// 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["gerenciamentoLeituras"]);
if ($nivelAutorizacao <= 1) {
    DisplayNotAuthorizedWarning();
    exit;
}
// Cria os objetos de mapeamento objeto-relacional
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
$counterDAO = new CounterDAO($dataConnector->mysqlConnection);
$counterDAO->showErrors = 1;
// Traz a lista de leituras cadastradas
$readingArray = $readingDAO->RetrieveRecordArray("codigoCartaoEquipamento=" . $equipmentCode);
$readingSourceArray = $readingDAO->RetrieveReadingSources();
$readingKindArray = $readingDAO->RetrieveReadingKinds();
$equipmentInfo = EquipmentDAO::GetSerialNumber($dataConnector->sqlserverConnection, $equipmentCode);
?>

    <h1>Administração - Leituras <?php 
echo $equipmentInfo;
?>
</h1><br/>
    <h1><?php 
function BuildReportTable($startColumn, $startRow)
{
    global $dataConnector;
    global $objPhpExcel;
    global $serviceCallArray;
    $serviceCallDAO = new ServiceCallDAO($dataConnector->mysqlConnection);
    $serviceCallDAO->showErrors = 1;
    $equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
    $equipmentDAO->showErrors = 1;
    $equipmentModelDAO = new EquipmentModelDAO($dataConnector->mysqlConnection);
    $equipmentModelDAO->showErrors = 1;
    $manufacturerDAO = new ManufacturerDAO($dataConnector->sqlserverConnection);
    $manufacturerDAO->showErrors = 1;
    $readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
    $readingDAO->showErrors = 1;
    $counterDAO = new CounterDAO($dataConnector->mysqlConnection);
    $counterDAO->showErrors = 1;
    $employeeDAO = new EmployeeDAO($dataConnector->sqlserverConnection);
    $employeeDAO->showErrors = 1;
    // Define o titulo da tabela
    $currentRow = $startRow;
    $activeSheet = $objPhpExcel->getActiveSheet();
    $activeSheet->setCellValue($startColumn . $startRow, 'CHAMADOS');
    $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('Data Abertura', 'Nº do chamado', 'Status', 'Cliente', 'Depto.', 'Modelo', 'Série', 'Fabricante', 'Defeito', 'Data Atendimento', 'Horário/Duração', 'Sintoma', 'Causa', 'Ação', 'Observação Técnica', 'Contadores', 'Aberto Por', 'Técnico');
    $offset = 0;
    foreach ($headers as $header) {
        $activeSheet->getColumnDimension(chr($colNum + $offset))->setWidth(25);
        $offset++;
    }
    $activeSheet->getColumnDimension(chr($colNum + 3))->setWidth(50);
    $activeSheet->getColumnDimension(chr($colNum + 4))->setWidth(35);
    $activeSheet->getColumnDimension(chr($colNum + 8))->setWidth(60);
    $activeSheet->getColumnDimension(chr($colNum + 11))->setWidth(60);
    $activeSheet->getColumnDimension(chr($colNum + 12))->setWidth(60);
    $activeSheet->getColumnDimension(chr($colNum + 13))->setWidth(60);
    $activeSheet->getColumnDimension(chr($colNum + 14))->setWidth(35);
    $activeSheet->getColumnDimension(chr($colNum + 16))->setWidth(40);
    $activeSheet->getColumnDimension(chr($colNum + 17))->setWidth(40);
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    // Busca os Status de chamado cadastrados no sistema
    $statusArray = ServiceCallDAO::RetrieveServiceCallStatuses($dataConnector->sqlserverConnection);
    // Busca os fabricantes cadastrados no sistema
    $manufacturerArray = array(0 => "");
    $tempArray = $manufacturerDAO->RetrieveRecordArray();
    foreach ($tempArray as $manufacturer) {
        $manufacturerArray[$manufacturer->FirmCode] = $manufacturer->FirmName;
    }
    // Busca os modelos de equipamento cadastrados no sistema
    $modelArray = array(0 => "");
    $equipmentModelArray = $equipmentModelDAO->RetrieveRecordArray();
    foreach ($equipmentModelArray as $modelDTO) {
        $modelArray[$modelDTO->id] = $modelDTO->modelo;
    }
    $associativeList = array(0 => "");
    foreach ($equipmentModelArray as $modelDTO) {
        $associativeList[$modelDTO->id] = $manufacturerArray[$modelDTO->fabricante];
    }
    // Busca os contadores cadastrados no sistema
    $retrievedArray = $counterDAO->RetrieveRecordArray();
    $counterArray = array();
    foreach ($retrievedArray as $counter) {
        $counterArray[$counter->id] = $counter->nome;
    }
    // Busca os funcionários cadastrados no sistema
    $retrievedArray = $employeeDAO->RetrieveRecordArray("empID IS NOT NULL ORDER BY empID");
    $employeeArray = array();
    foreach ($retrievedArray as $employee) {
        $employeeArray[$employee->empID] = $employee->firstName . " " . $employee->middleName . " " . $employee->lastName;
    }
    // Cria um array para as estatísticas dos técnicos
    $statsArray = array(0 => "");
    foreach ($employeeArray as $id => $name) {
        // considera todos os funcionários como possíveis técnicos, depois filtra somente os que realizaram atendimentos
        $statsArray[$id] = new Technician($id, $name);
    }
    // Gera as linhas da tabela
    $quantChamados = 0;
    foreach ($serviceCallArray as $serviceCall) {
        $equipment = $equipmentDAO->RetrieveRecord($serviceCall->codigoCartaoEquipamento);
        if (!isset($equipment)) {
            $equipment = new EquipmentDTO();
        }
        // cria objeto vazio em caso de erro
        $readingArray = $readingDAO->RetrieveRecordArray("chamadoServico_id=" . $serviceCall->id);
        $counters = "";
        $LFCR = chr(10) . chr(13);
        foreach ($readingArray as $reading) {
            if (!empty($counters)) {
                $counters = $counters . $LFCR;
            }
            $counters = $counters . $counterArray[$reading->codigoContador] . ' ' . $reading->contagem;
        }
        $modelName = "";
        if (array_key_exists($equipment->model, $modelArray)) {
            $modelName = $modelArray[$equipment->model];
        }
        $manufacturerName = "";
        if (array_key_exists($equipment->model, $modelArray)) {
            $manufacturerName = $associativeList[$equipment->model];
        }
        $creator = " - ";
        if ($serviceCall->abertoPor > 0) {
            $creator = $employeeArray[$serviceCall->abertoPor];
        }
        $technicianName = " - ";
        if ($serviceCall->tecnico > 0) {
            $technicianName = $employeeArray[$serviceCall->tecnico];
        }
        $technicianStats = $statsArray[$serviceCall->tecnico];
        if (!isset($technicianStats->statistics)) {
            $technicianStats->statistics = array();
        }
        if (!array_key_exists($equipment->model, $technicianStats->statistics)) {
            $technicianStats->statistics[$equipment->model] = new EquipmentModelStats($equipment->model, $modelName, $manufacturerName);
        }
        $equipmentModelStat = $technicianStats->statistics[$equipment->model];
        $equipmentModelStat->serviceCallCount++;
        $parts = explode(":", $serviceCall->tempoAtendimento, 2);
        $equipmentModelStat->tempoTotalAtendimento += (int) $parts[0] + (int) $parts[1] / 60;
        $currentRow++;
        $row = array();
        $row[0] = $serviceCall->dataAbertura;
        $row[1] = str_pad($serviceCall->id, 5, '0', STR_PAD_LEFT);
        $row[2] = $statusArray[$serviceCall->status];
        $row[3] = $equipment->custmrName;
        $row[4] = $equipment->instLocation;
        $row[5] = $modelName;
        $row[6] = $equipment->manufacturerSN;
        $row[7] = $manufacturerName;
        $row[8] = $serviceCall->defeito;
        $row[9] = $serviceCall->dataAtendimento;
        $row[10] = $serviceCall->horaAtendimento . " (Duração " . $serviceCall->tempoAtendimento . ")";
        $row[11] = $serviceCall->sintoma;
        $row[12] = $serviceCall->causa;
        $row[13] = $serviceCall->acao;
        $row[14] = $serviceCall->observacaoTecnica;
        $row[15] = $counters;
        $row[16] = $creator;
        $row[17] = $technicianName;
        InsereLinhaPlanilha($currentRow, $startColumn, $row);
        $quantChamados++;
        // Faz a contagem dos chamados técnicos
    }
    $currentRow++;
    $footer = array('Quantidade de Chamados: ' . $quantChamados . ' (Depende do filtro escolhido)', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');
    InsereLinhaPlanilha($currentRow, $startColumn, $footer, '80BB80FF', 32, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $activeSheet->mergeCells(chr($colNum + 0) . $currentRow . ':' . chr($colNum + sizeof($headers) - 1) . $currentRow);
    $currentRow += 3;
    // pula 3 linhas
    // Define o titulo do quadro resumo
    $activeSheet = $objPhpExcel->getActiveSheet();
    $activeSheet->setCellValue($startColumn . $currentRow, 'QUADRO RESUMO');
    $styleArray = array('font' => array('bold' => true, 'size' => 16));
    $activeSheet->getStyle($startColumn . $currentRow . ':' . $startColumn . $currentRow)->applyFromArray($styleArray);
    // Cria o cabeçalho do quadro resumo
    $colNum = ord($startColumn);
    $headers = array('Técnico', 'Modelo', 'Fabricante', 'Quant. Chamados', 'Tempo Médio Atendimento');
    $offset = 0;
    foreach ($headers as $header) {
        $activeSheet->getColumnDimension(chr($colNum + $offset))->setWidth(25);
        $offset++;
    }
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $callCount = 0;
    $timeSum = 0;
    foreach ($statsArray as $technicianStats) {
        if (!isset($technicianStats->statistics)) {
            continue;
        }
        $valorPrevio = "";
        $serviceCallCount = 0;
        $tempoTotalAtendimento = 0;
        foreach ($technicianStats->statistics as $equipmentModelStats) {
            if ($equipmentModelStats->serviceCallCount > 0) {
                $valorAtual = $equipmentModelStats->fabricante;
                if ($valorPrevio != $valorAtual) {
                    if (!empty($valorPrevio)) {
                        $subTotal = array('', '', '', $callCount, UnixTime::ConvertToTime($timeSum / $callCount));
                        $currentRow++;
                        InsereLinhaPlanilha($currentRow, $startColumn, $subTotal, '80AAFFFF', 20, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                        $callCount = 0;
                        $timeSum = 0;
                    }
                    $valorPrevio = $valorAtual;
                }
                $currentRow++;
                $row = array();
                $row[0] = $technicianStats->name;
                $row[1] = $equipmentModelStats->model;
                $row[2] = $equipmentModelStats->fabricante;
                $row[3] = $equipmentModelStats->serviceCallCount;
                $row[4] = UnixTime::ConvertToTime($equipmentModelStats->tempoTotalAtendimento / $equipmentModelStats->serviceCallCount);
                InsereLinhaPlanilha($currentRow, $startColumn, $row);
                $callCount = $callCount + $equipmentModelStats->serviceCallCount;
                $timeSum = $timeSum + $equipmentModelStats->tempoTotalAtendimento;
                $serviceCallCount = $serviceCallCount + $equipmentModelStats->serviceCallCount;
                $tempoTotalAtendimento = $tempoTotalAtendimento + $equipmentModelStats->tempoTotalAtendimento;
            }
        }
        $subTotal = array('', '', '', $callCount, UnixTime::ConvertToTime($timeSum / $callCount));
        $currentRow++;
        InsereLinhaPlanilha($currentRow, $startColumn, $subTotal, '80AAFFFF', 20, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $callCount = 0;
        $timeSum = 0;
        $subTotal = array($technicianStats->name, '', '', $serviceCallCount, UnixTime::ConvertToTime($tempoTotalAtendimento / $serviceCallCount));
        $currentRow++;
        InsereLinhaPlanilha($currentRow, $startColumn, $subTotal, 'FFAA2040', 20, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $activeSheet->mergeCells(chr($colNum + 0) . $currentRow . ':' . chr($colNum + 2) . $currentRow);
    }
}
Esempio n. 8
0
include_once "../DataTransferObjects/EmployeeDTO.php";
$supplyRequestId = $_GET['supplyRequestId'];
// 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["solicitacaoConsumiveis"]);
if ($nivelAutorizacao <= 1) {
    DisplayNotAuthorizedWarning();
    exit;
}
// Cria os objetos de mapeamento objeto-relacional
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
$counterDAO = new CounterDAO($dataConnector->mysqlConnection);
$counterDAO->showErrors = 1;
// Busca as leituras realizadas durante o atendimento ao chamado
$readingArray = $readingDAO->RetrieveRecordArray("consumivel_id=" . $supplyRequestId);
if (sizeof($readingArray) == 0) {
    echo "<tr>";
    echo "    <td colspan='6' align='center' >Nenhum registro encontrado!</td>";
    echo "</tr>";
    exit;
}
// Busca os funcionários cadastrados no sistema
$employeeDAO = new EmployeeDAO($dataConnector->sqlserverConnection);
$employeeDAO->showErrors = 1;
$retrievedArray = $employeeDAO->RetrieveRecordArray();
Esempio n. 9
0
if ($acao == "remove") {
    if (!isset($_POST['reg'])) {
        echo "Selecione os registros que deseja excluir";
        exit;
    }
    foreach ($_POST['reg'] as $key => $reg) {
        // Verifica as dependências da solicitação ( foreign keys )
        $supplyRequestId = str_pad($reg, 5, '0', STR_PAD_LEFT);
        $requestItemDAO = new RequestItemDAO($dataConnector->mysqlConnection);
        $requestItemDAO->showErrors = 1;
        $itemArray = $requestItemDAO->RetrieveRecordArray("pedidoConsumivel_id=" . $reg);
        if (sizeof($itemArray) > 0) {
            echo "O solicitação de consumível " . $supplyRequestId . " não pode ser excluída pois possui amarrações. Exclua primeiro os itens da solicitação.";
            exit;
        }
        $readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
        $readingDAO->showErrors = 1;
        $readingArray = $readingDAO->RetrieveRecordArray("consumivel_id=" . $reg);
        if (sizeof($readingArray) > 0) {
            echo "O solicitação de consumível " . $supplyRequestId . " não pode ser excluída pois está amarrada à leituras de contador. Exclua essas dependências primeiro.";
            exit;
        }
        if (!$supplyRequestDAO->DeleteRecord($reg)) {
            echo "Não foi possivel efetuar a operação...";
            exit;
        }
    }
    echo "Operação efetuada com sucesso!";
}
// Fecha a conexão com o banco de dados
$dataConnector->CloseConnection();
Esempio n. 10
0
 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
 }
Esempio n. 11
0
include_once "../../DataAccessObjects/ReadingDAO.php";
include_once "../../DataTransferObjects/ReadingDTO.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
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
if ($acao == "store") {
    if (!isset($_REQUEST["contagem"]) || empty($_REQUEST["contagem"])) {
        echo "Erro de preenchimento. É necessário preencher a leitura do contador!";
        exit;
    }
    $id = 0;
    $reading = new ReadingDTO();
    if (isset($_REQUEST["id"]) && $_REQUEST["id"] != 0) {
        $id = $_REQUEST["id"];
        $reading = $readingDAO->RetrieveRecord($id);
    }
    if (isset($_REQUEST["equipmentCode"])) {
        $reading->codigoCartaoEquipamento = $_REQUEST["equipmentCode"];
    }
Esempio n. 12
0
if (isset($_GET['sendToPrinter'])) {
    $sendToPrinter = $_GET['sendToPrinter'];
}
// 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 os objetos de mapeamento objeto-relacional
$serviceCallDAO = new ServiceCallDAO($dataConnector->mysqlConnection);
$serviceCallDAO->showErrors = 1;
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
$readingDAO = new ReadingDAO($dataConnector->mysqlConnection);
$readingDAO->showErrors = 1;
$counterDAO = new CounterDAO($dataConnector->mysqlConnection);
$counterDAO->showErrors = 1;
// Busca os dados do chamado
$serviceCall = $serviceCallDAO->RetrieveRecord($serviceCallId);
// Recupera dados do cartão de equipamento
$equipment = $equipmentDAO->RetrieveRecord($serviceCall->codigoCartaoEquipamento);
function GetTechnicianName($sqlserverConnection, $technicianId)
{
    $technicianName = "";
    $employeeDAO = new EmployeeDAO($sqlserverConnection);
    $employeeDAO->showErrors = 1;
    $employee = $employeeDAO->RetrieveRecord($technicianId);
    if ($employee != null) {
        $technicianName = $employee->firstName . " " . $employee->middleName . " " . $employee->lastName;