function EquipmentOperator($sqlserverConnection, $businessPartnerCode, $equipmentCode)
 {
     // Cria os objetos de mapeamento objeto relacional
     $businessPartnerDAO = new BusinessPartnerDAO($sqlserverConnection);
     $businessPartnerDAO->showErrors = 1;
     $equipmentDAO = new EquipmentDAO($sqlserverConnection);
     $equipmentDAO->showErrors = 1;
     $contactPersonDAO = new ContactPersonDAO($sqlserverConnection);
     $contactPersonDAO->showErrors = 1;
     // Recupera os dados do parceiro de negócios
     $businessPartner = $businessPartnerDAO->RetrieveRecord($businessPartnerCode);
     if ($businessPartner != null) {
         $this->businessPartnerCode = $businessPartner->cardCode;
         $this->businessPartnerName = $businessPartner->cardName;
         $this->telephoneNumber = $businessPartner->telephoneNumber;
     }
     // Recupera os dados do equipamento
     $equipment = $equipmentDAO->RetrieveRecord($equipmentCode);
     if ($equipment != null) {
         $contactPerson = null;
         if (!empty($equipment->contactPerson)) {
             $contactPerson = $contactPersonDAO->RetrieveRecord($equipment->contactPerson);
         }
         if ($contactPerson != null) {
             $contactTel = trim($contactPerson->phoneNumber);
             if (!empty($contactTel)) {
                 $this->operatorName = $contactPerson->name;
                 $this->telephoneNumber = $contactPerson->phoneNumber;
             }
         }
         $this->equipmentCode = $equipment->insID;
         $this->serialNumber = $equipment->manufacturerSN;
         $this->equipmentStatus = $equipment->status;
     }
 }
function GetSerialNumbers($mysqlConnection, $sqlserverConnection, $subContractId)
{
    $serialNumbers = "";
    $contractItemDAO = new ContractItemDAO($mysqlConnection);
    $contractItemDAO->showErrors = 1;
    $itemArray = $contractItemDAO->RetrieveRecordArray("subContrato_id = " . $subContractId);
    foreach ($itemArray as $contractItem) {
        if (!empty($serialNumbers)) {
            $serialNumbers = $serialNumbers . ", ";
        }
        $serialNumbers = $serialNumbers . EquipmentDAO::GetSerialNumber($sqlserverConnection, $contractItem->codigoCartaoEquipamento);
    }
    return $serialNumbers;
}
Example #3
0
function GetEquipmentInfo($equipment, $contractType)
{
    $equipmentInfo = "";
    // Busca os dados do equipamento
    $modelo = "";
    $codigoModelo = "";
    $serie = "";
    $instLocation = "";
    if ($equipment != null) {
        $modelo = $equipment->itemName;
        $codigoModelo = $equipment->itemCode;
        $serie = EquipmentDAO::GetShortDescription($equipment);
        $instLocation = $equipment->instLocation;
    }
    $spacing = '   ';
    $equipmentInfo = 'Cartão Equipamento: ' . $equipment->insID . $spacing . 'Modelo: ' . $modelo . $spacing . 'Série: ' . $serie . $spacing . 'Departamento: ' . $instLocation . $spacing . 'Tipo: ' . $contractType;
    return $equipmentInfo;
}
Example #4
0
?>
</h1>
        </div>
        <div style="clear:both;">
            <br/><br/>
        </div>

        <?php 
foreach ($subContractArray as $subContract) {
    $subContractItems = ContractItemDAO::GetItemsByOwner($dataConnector->mysqlConnection, $subContract->id);
    $serialNumbers = '';
    foreach ($subContractItems as $contractItem) {
        if (!empty($serialNumbers)) {
            $serialNumbers .= ', ';
        }
        $serialNumbers .= EquipmentDAO::GetSerialNumber($dataConnector->sqlserverConnection, $contractItem->codigoCartaoEquipamento);
    }
    if (empty($serialNumbers)) {
        $serialNumbers = 'Nenhum item encontrado';
    }
    $chargeArray = $contractChargeDAO->RetrieveRecordArray("subContrato_id = " . $subContract->id);
    $bonusArray = $contractBonusDAO->RetrieveRecordArray("subcontrato_id = " . $subContract->id . " ORDER BY de, ate");
    echo '<fieldset style="width:650px;" >';
    echo '    <legend>' . ContractTypeDAO::GetAlias($dataConnector->mysqlConnection, $subContract->codigoTipoContrato) . '</legend>';
    echo '    Itens:<br/>';
    echo '    - ' . $serialNumbers;
    echo '    <br/><br/>';
    echo '    Cobrança:<br/>';
    foreach ($chargeArray as $charge) {
        $counterName = CounterDAO::GetCounterName($dataConnector->mysqlConnection, $charge->codigoContador);
        $fixoReajustado = $charge->fixo * (1 + $adjustmentRate->aliquota / 100);
    if (!empty($codigoInsumo)) {
        $productionInput = $productionInputDAO->RetrieveRecord($codigoInsumo);
        $inputType = $inputTypeArray[$productionInput->tipoInsumo];
        $numeroChamado = str_pad($expense->codigoChamado, 4, '0', STR_PAD_LEFT);
        $descricao = "<a href='Frontend/chamados/editar.php?id=" . $expense->codigoChamado . "'>" . $inputType . " ( Número do Chamado: " . $numeroChamado . " )</a>";
    }
    echo '<tr>';
    echo '    <td>' . $serviceCall->dataAbertura . '</td>';
    echo '    <td>' . $serieEquipamento . '</td>';
    echo '    <td>' . $descricao . '</td>';
    echo '    <td>' . number_format($expense->totalDespesa, 2, ',', '.') . '</td>';
    echo '</tr>';
    $somaTotais += $expense->totalDespesa;
}
foreach ($supplyRequestArray as $supplyRequest) {
    $equipmentSN = EquipmentDAO::GetSerialNumber($dataConnector->sqlserverConnection, $supplyRequest->codigoCartaoEquipamento);
    $requestItemArray = $requestItemDAO->RetrieveRecordArray("pedidoConsumivel_id=" . $supplyRequest->id);
    foreach ($requestItemArray as $requestItem) {
        $description = $requestItem->quantidade . ' ' . $requestItem->nomeItem;
        echo '<tr>';
        echo '    <td>' . $supplyRequest->data . '</td>';
        echo '    <td>' . $equipmentSN . '</td>';
        echo '    <td>' . $description . '</td>';
        echo '    <td>' . number_format($requestItem->total, 2, ',', '.') . '</td>';
        echo '</tr>';
        $somaTotais += $requestItem->total;
    }
}
foreach ($indirectCostArray as $indirectCost) {
    $serviceCallArray = $indirectCostDAO->GetDistributedExpenses($indirectCost->id);
    $serviceCallCount = sizeof($serviceCallArray);
Example #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["gerenciamentoEquipmtPecas"]);
if ($nivelAutorizacao <= 1) {
    DisplayNotAuthorizedWarning();
    exit;
}
// Cria o objeto de mapeamento objeto-relacional
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
$equipment = new EquipmentDTO();
$equipmentArray = array();
// Histórico do equipamento (cartões de equipamento com este número de série)
if ($equipmentCode != 0) {
    $equipment = $equipmentDAO->RetrieveRecord($equipmentCode);
    $equipmentArray = $equipmentDAO->RetrieveRecordArray("manufSN='" . $equipment->manufacturerSN . "'");
}
if ($serial != '') {
    $serial = urldecode($serial);
    $equipmentArray = $equipmentDAO->RetrieveRecordArray("manufSN='" . $serial . "'");
    if (sizeof($equipmentArray) > 0) {
        $equipment = $equipmentArray[0];
        $equipmentCode = $equipment->insID;
    }
$serviceCallId = $_GET['serviceCallId'];
$sendToPrinter = null;
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;
// Busca os dados do chamado
$serviceCall = $serviceCallDAO->RetrieveRecord($serviceCallId);
// Recupera dados do cartão de equipamento
$equipment = $equipmentDAO->RetrieveRecord($serviceCall->codigoCartaoEquipamento);
// Busca os dados do cliente
$clientName = BusinessPartnerDAO::GetClientName($dataConnector->sqlserverConnection, $serviceCall->businessPartnerCode);
?>

    <script type='text/javascript'>
        $(document).ready(function() {
            <?php 
if (isset($sendToPrinter)) {
    echo 'window.print();';
}
Example #8
0
$acao = $_REQUEST["acao"];
if (!isset($_REQUEST["cartaoEquipamento"]) && $acao == "store") {
    echo "Favor informar o equipamento a que se refere o chamado.";
    exit;
}
// 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;
$equipmentModelDAO = new EquipmentModelDAO($dataConnector->mysqlConnection);
$equipmentModelDAO->showErrors = 1;
if ($acao == "store") {
    $id = 0;
    $serviceCall = new ServiceCallDTO();
    if (isset($_REQUEST["id"]) && $_REQUEST["id"] != 0) {
        $id = $_REQUEST["id"];
        $serviceCall = $serviceCallDAO->RetrieveRecord($id);
    }
    $equipment = $equipmentDAO->RetrieveRecord($_REQUEST["cartaoEquipamento"]);
    $equipmentModel = $equipmentModelDAO->RetrieveRecord($equipment->model);
    if (!isset($equipmentModel)) {
        echo 'O equipamento ' . $equipment->manufacturerSN . ' possui um erro de cadastro.  Favor corrigir o modelo do equipamento.';
        exit;
/logo_datacopy.png" alt="Datacopy Trade" style="width:150px; height:50px; margin-top:10px; margin-left: 10px; margin-right: 10px; float:left;" />
            <div style="height:50px; margin-top:10px; margin-left: 50px; float:left;">
            <h3 style="border:0; margin:0;" >TEMPO EM ATENDIMENTO</h3><br/>
            <h3 style="border:0; margin:0;" >Data inicial: <?php 
echo $startDate;
?>
&nbsp;&nbsp;&nbsp;Data final: <?php 
echo $endDate;
?>
</h3>
            </div>
            <div style="clear:both;"><br/><br/></div>
            <table>
            <?php 
// Busca os dados dos equipamentos
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
$equipmentArray = $equipmentDAO->RetrieveRecordArray("InsId IN (" . $equipmentList . ")");
foreach ($equipmentArray as $equipment) {
    $equipmentModel = $equipment->itemName;
    $serialNumber = EquipmentDAO::GetShortDescription($equipment);
    $salesPersonName = SalesPersonDAO::GetSalesPersonName($dataConnector->sqlserverConnection, $equipment->salesPerson);
    $spacing = '&nbsp;&nbsp;&nbsp;';
    echo '<tr bgcolor=LIGHTGRAY ><td colspan=5 >Cartão Equipamento: ' . $equipment->insID . $spacing . 'Modelo: ' . $equipmentModel . $spacing . 'Série: ' . $serialNumber . $spacing . 'Departamento: ' . $equipment->instLocation . $spacing . 'Vendedor: ' . $salesPersonName . '</td></tr>';
    $serviceCallDAO = new ServiceCallDAO($dataConnector->mysqlConnection);
    $serviceCallDAO->showErrors = 1;
    $query = "cartaoEquipamento = " . $equipment->insID . " AND dataAbertura >= '" . $startDate . " 00:00' AND dataAbertura <= '" . $endDate . " 23:59' ";
    $serviceCallArray = $serviceCallDAO->RetrieveRecordArray($query);
    $tempoTotalAtendimento = 0;
    if (sizeof($serviceCallArray) > 0) {
        echo '<tr bgcolor=WHITE ><td>Chamado</td><td>Defeito</td><td>Data Abertura</td><td>Técnico</td><td>Tempo Atendimento</td></tr>';
Example #10
0
 static function GetShortDescription($equipment)
 {
     $serialNumber = $equipment->manufacturerSN . " (" . $equipment->internalSN . ") ";
     $status = EquipmentDAO::GetStatusDescription($equipment->status);
     return $serialNumber . $status;
 }
// 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
$contractItemDAO = new ContractItemDAO($dataConnector->mysqlConnection);
$contractItemDAO->showErrors = 1;
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
//localiza os itens do subcontrato
$itemArray = $contractItemDAO->RetrieveRecordArray("subcontrato_id=" . $subContractId);
if (sizeof($itemArray) == 0) {
    echo '<tr><td colspan="7" align="center" >Nenhum registro encontrado!</td></tr>';
}
foreach ($itemArray as $contractItem) {
    $shortDescription = '<span style="color: CadetBlue;">(Equipamento não encontrado)</span>';
    $sla = "";
    $comments = "";
    $equipment = $equipmentDAO->RetrieveRecord($contractItem->codigoCartaoEquipamento);
    if ($equipment != null) {
        $shortDescription = '<span style="color: CadetBlue;">' . EquipmentDAO::GetShortDescription($equipment) . '</span>';
        if (!empty($equipment->sla)) {
            $sla = $equipment->sla . ' horas';
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;
    }
}
include_once "../DataTransferObjects/EquipmentDTO.php";
include_once "../DataAccessObjects/ConfigDAO.php";
include_once "../DataTransferObjects/ConfigDTO.php";
$businessPartnerCode = $_GET['businessPartnerCode'];
$equipmentCode = $_GET['equipmentCode'];
// 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;
}
// Recupera a configuração de ordenação dos equipamentos
$ordenarPorSerieFabrica = ConfigDAO::GetConfigurationParam($dataConnector->mysqlConnection, 'ordenarPorSerieFabrica');
// Busca os equipamentos cadastrados para o parceiro de negócios
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
if ($ordenarPorSerieFabrica == 'true') {
    $orderBy = "ORDER BY manufSN";
} else {
    $orderBy = "ORDER BY internalSN";
}
$equipmentArray = $equipmentDAO->RetrieveRecordArray("Customer = '" . $businessPartnerCode . "' " . $orderBy);
foreach ($equipmentArray as $equipment) {
    $attributes = "";
    if ($equipment->insID == $equipmentCode) {
        $attributes = "selected='selected'";
    }
    if ($ordenarPorSerieFabrica == 'true') {
        $serialNumber = $equipment->manufacturerSN . " (" . $equipment->internalSN . ") ";
    } else {
$dataConnector->OpenConnection();
if ($dataConnector->mysqlConnection == null || $dataConnector->sqlserverConnection == null) {
    echo 'Não foi possível se connectar ao bando de dados!';
    exit;
}
// Busca os dados da solicitação de consumível
$supplyRequestDAO = new SupplyRequestDAO($dataConnector->mysqlConnection);
$supplyRequestDAO->showErrors = 1;
$supplyRequest = $supplyRequestDAO->RetrieveRecord($supplyRequestId);
// Traz as informações do equipamento
$shortDescription = '';
$model = '';
$businessPartnerCode = '';
$address = '';
$instLocation = '';
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
$equipment = $equipmentDAO->RetrieveRecord($supplyRequest->codigoCartaoEquipamento);
if ($equipment != null) {
    $shortDescription = EquipmentDAO::GetShortDescription($equipment);
    $model = $equipment->itemName;
    $businessPartnerCode = $equipment->customer;
    $address = $equipment->addressType . " " . $equipment->street . " " . $equipment->streetNo . " " . $equipment->building . "   CEP: " . $equipment->zip;
    $address = $address . "   " . "Bairro: " . $equipment->block . "   " . $equipment->city . " " . $equipment->state . " " . $equipment->country;
    $instLocation = $equipment->instLocation;
}
// Recupera os itens da solicitação
$itens = "";
$requestItemDAO = new RequestItemDAO($dataConnector->mysqlConnection);
$requestItemDAO->showErrors = 1;
$requestItemArray = $requestItemDAO->RetrieveRecordArray("pedidoConsumivel_id=" . $supplyRequest->id);
function BuildReportTable($startColumn, $startRow)
{
    global $dataConnector;
    global $objPhpExcel;
    global $invoiceArray;
    global $salesPerson;
    global $model;
    global $equipmentCode;
    global $searchMethod;
    $billingItemDAO = new BillingItemDAO($dataConnector->mysqlConnection);
    $billingItemDAO->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, 'FATURAS');
    $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º do documento', 'Data', 'Cliente', 'Observações', 'Detalhes', 'Vencimento', 'Total Nota (R$)', 'Nº Demonstrativo');
    $offset = 0;
    foreach ($headers as $header) {
        $activeSheet->getColumnDimension(chr($colNum + $offset))->setWidth(25);
        $offset++;
    }
    $activeSheet->getColumnDimension(chr($colNum + 2))->setWidth(60);
    $activeSheet->getColumnDimension(chr($colNum + 4))->setWidth(60);
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    // Busca os vendedores cadastrados no sistema
    $retrievedArray = $salesPersonDAO->RetrieveRecordArray();
    $salesPersonArray = array();
    foreach ($retrievedArray as $salesPersonDTO) {
        $salesPersonArray[$salesPersonDTO->slpCode] = $salesPersonDTO->slpName;
    }
    // Busca os modelos cadastrados no sistema
    $modelArray = array(0 => "");
    $equipmentModelArray = $equipmentModelDAO->RetrieveRecordArray();
    foreach ($equipmentModelArray as $modelDTO) {
        $modelArray[$modelDTO->id] = $modelDTO->modelo;
    }
    // Gera as linhas da tabela
    $grandTotal = 0;
    $LFCR = chr(10) . chr(13);
    foreach ($invoiceArray as $invoice) {
        $docDate = empty($invoice->docDate) ? '' : $invoice->docDate->format('d/m/Y');
        $docDueDate = empty($invoice->docDueDate) ? '' : $invoice->docDueDate->format('d/m/Y');
        $docTotal = number_format($invoice->docTotal, 2, ',', '.');
        $details = "";
        $salesPersons = array();
        $itemNames = "";
        $equipmentIds = array();
        $billingItemArray = $billingItemDAO->RetrieveRecordArray("codigoFaturamento=" . $invoice->demFaturamento);
        foreach ($billingItemArray as $billingItem) {
            $equipment = $equipmentDAO->RetrieveRecord($billingItem->codigoCartaoEquipamento);
            $equipmentSerial = $equipment->manufacturerSN;
            $salesPersonCode = $equipment->salesPerson;
            if (empty($salesPersonCode)) {
                $salesPersonCode = -1;
            }
            $salesPersonName = $salesPersonArray[$salesPersonCode];
            $details .= $equipmentSerial . ' ' . $salesPersonName . $LFCR;
            if ($salesPersonCode > 0) {
                array_push($salesPersons, $salesPersonCode);
            }
            $itemNames .= $equipment->itemName;
            if ($equipment->insID > 0) {
                array_push($equipmentIds, $equipment->insID);
            }
        }
        if ($salesPerson > 0) {
            if (!in_array($salesPerson, $salesPersons)) {
                continue;
            }
        }
        if ($searchMethod == 1 || $searchMethod == 2) {
            if (!empty($model)) {
                $modelMatched = false;
                if (strpos($itemNames, $model)) {
                    $modelMatched = true;
                }
                if (!$modelMatched) {
                    continue;
                }
            }
        }
        if ($searchMethod == 3) {
            if (!in_array($equipmentCode, $equipmentIds)) {
                continue;
            }
        }
        $currentRow++;
        $row = array();
        $row[0] = $invoice->docNum;
        $row[1] = $docDate;
        $row[2] = $invoice->cardName;
        $row[3] = $invoice->comments;
        $row[4] = $details;
        $row[5] = $docDueDate;
        $row[6] = $docTotal;
        $row[7] = $invoice->demFaturamento;
        InsereLinhaPlanilha($currentRow, $startColumn, $row);
        $grandTotal += $invoice->docTotal;
    }
    $currentRow++;
    $total = array('Total Geral: ' . number_format($grandTotal, 2, ',', '.'), '0', '0', '0', '0', '0', '0', '0');
    InsereLinhaPlanilha($currentRow, $startColumn, $total, '80BB80FF', 45, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $activeSheet->mergeCells(chr($colNum + 0) . $currentRow . ':' . chr($colNum + sizeof($headers) - 1) . $currentRow);
}
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);
    }
}
Example #17
0
if ($nivelAutorizacao <= 1) {
    DisplayNotAuthorizedWarning();
    exit;
}
// Cria o objeto de mapeamento objeto-relacional
$supplyRequestDAO = new SupplyRequestDAO($dataConnector->mysqlConnection);
$supplyRequestDAO->showErrors = 1;
$id = 0;
$supplyRequest = new SupplyRequestDTO();
if (isset($_REQUEST["id"]) && $_REQUEST["id"] != 0) {
    $id = $_REQUEST["id"];
    $supplyRequest = $supplyRequestDAO->RetrieveRecord($id);
    $equipmentCode = $supplyRequest->codigoCartaoEquipamento;
    // sobrescreve o parâmetro recebido na url caso a solicitação esteja sendo alterada/editada
}
$equipmentInfo = EquipmentDAO::GetSerialNumber($dataConnector->sqlserverConnection, $equipmentCode);
$defaultEmailAddress = ConfigDAO::GetConfigurationParam($dataConnector->mysqlConnection, "emailPadrao");
?>

    <h1>Solicitação de Consumível <?php 
echo $equipmentInfo;
?>
</h1><br/>
    <h1><?php 
echo str_pad('_', 60, '_', STR_PAD_LEFT);
?>
</h1>
    <div style="clear:both;">
        <br/><br/>
    </div>
Example #18
0
<?php

include_once "../defines.php";
include_once "../ClassLibrary/DataConnector.php";
include_once "../DataAccessObjects/EquipmentDAO.php";
include_once "../DataTransferObjects/EquipmentDTO.php";
// Abre a conexao com o banco de dados
$dataConnector = new DataConnector('sqlServer');
$dataConnector->OpenConnection();
if ($dataConnector->sqlserverConnection == null) {
    echo 'Não foi possível se connectar ao bando de dados!';
    exit;
}
// Traz os equipamentos duplicados ( mesmo equipamento ativo em clientes diferentes )
$duplicates = EquipmentDAO::GetDuplicates($dataConnector->sqlserverConnection);
if (sizeof($duplicates) == 0) {
    echo '<tr><td colspan="2" align="center">Nenhum registro encontrado!</td></tr>';
    exit;
}
foreach ($duplicates as $serial => $quantidade) {
    ?>
        <tr>
            <td>
                <a href="Frontend/equipamentos/editar.php?serial=<?php 
    echo $serial;
    ?>
" >
                    <?php 
    echo $serial;
    ?>
                </a>
}
// 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
$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;
// Busca os contratos que se enquadram no filtro aplicado
$contractArray = array();
if ($searchMethod == 0 || $searchMethod == 2) {
    $filter = "contrato.pn='" . $businessPartnerCode . "' AND contrato.encerramento >= '" . $startDate . " 00:00' AND contrato.encerramento <= '" . $endDate . " 23:59'";
    if ($contractType > 0) {
        $filter = $filter . " AND subcontrato.tipoContrato_id=" . $contractType;
    }
    if (!empty($contractStatus)) {
        $filter = $filter . " AND contrato.status IN (" . $contractStatus . ")";
    }
Example #20
0
include_once "../../DataAccessObjects/EquipmentDAO.php";
include_once "../../DataTransferObjects/EquipmentDTO.php";
// 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["gerenciamentoEquipmtPecas"]);
if ($nivelAutorizacao <= 1) {
    DisplayNotAuthorizedWarning();
    exit;
}
// Cria os objetos de mapeamento objeto-relacional
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
// Traz a lista de equipamentos
$cutoffDate = ConfigDAO::GetConfigurationParam($dataConnector->mysqlConnection, "limiteListaEquipamentos");
$equipmentArray = $equipmentDAO->RetrieveRecordArray("(status = 'A' OR status = 'L') AND U_InstallationDate > '" . $cutoffDate . "' ORDER BY manufSN");
?>

    <h1>Equipamentos (instalados a partir de <?php 
echo $cutoffDate;
?>
)</h1>

    <script type="text/javascript" >

        // Traz a lista de equipamentos selecionados pelo usuário (checkboxes marcados)
        function ObterListaEquipamentos()
$indirectCostDAO = new IndirectCostDAO($dataConnector->mysqlConnection);
$indirectCostDAO->showErrors = 1;
$serviceCallDAO = new ServiceCallDAO($dataConnector->mysqlConnection);
$serviceCallDAO->showErrors = 1;
// Busca os chamados relacionados ao custo indireto
$serviceCallArray = $indirectCostDAO->GetDistributedExpenses($indirectCostId);
if (sizeof($serviceCallArray) == 0) {
    echo "<tr>";
    echo "    <td colspan='5' align='center' >Nenhum registro encontrado!</td>";
    echo "</tr>";
    exit;
}
foreach ($serviceCallArray as $serviceCallId) {
    $serviceCall = $serviceCallDAO->RetrieveRecord($serviceCallId);
    $subject = new Text($serviceCall->defeito);
    $serialNumber = EquipmentDAO::GetSerialNumber($dataConnector->sqlserverConnection, $serviceCall->codigoCartaoEquipamento);
    ?>
        <tr>
            <td >
                <?php 
    echo str_pad($serviceCall->id, 5, '0', STR_PAD_LEFT);
    ?>
            </td>
            <td >
                <?php 
    echo $subject->Truncate(34);
    ?>
            </td>
            <td >
                <?php 
    echo $serialNumber;
$searchMethod = $_GET['searchMethod'];
$sendToPrinter = null;
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
$billingItemDAO = new BillingItemDAO($dataConnector->mysqlConnection);
$billingItemDAO->showErrors = 1;
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
$counterDAO = new CounterDAO($dataConnector->mysqlConnection);
$counterDAO->showErrors = 1;
$salesPersonDAO = new SalesPersonDAO($dataConnector->sqlserverConnection);
$salesPersonDAO->showErrors = 1;
// Busca os faturamentos que se enquadram no filtro aplicado
$billingItemArray = array();
if ($searchMethod == 0 || $searchMethod == 2) {
    $filter = "businessPartnerCode='" . $businessPartnerCode . "' AND mesReferencia = " . $billingMonth . " AND anoReferencia = " . $billingYear . " AND incluirRelatorio=1";
    $joins = "JOIN faturamento ON item.codigoFaturamento = faturamento.id";
    $billingItemArray = $billingItemDAO->RetrieveRecordArray2($filter, $joins);
}
if ($searchMethod == 1) {
    $filter = "mesReferencia = " . $billingMonth . " AND anoReferencia = " . $billingYear . " AND incluirRelatorio=1";
    $joins = "JOIN faturamento ON item.codigoFaturamento = faturamento.id";
$searchMethod = $_GET['searchMethod'];
$sendToPrinter = null;
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;
$employeeDAO = new EmployeeDAO($dataConnector->sqlserverConnection);
$employeeDAO->showErrors = 1;
// Busca os chamados que se enquadram no filtro aplicado
if ($searchMethod == 0) {
    $filter = "businessPartnerCode='" . $businessPartnerCode . "'";
    if (empty($businessPartnerCode)) {
        $filter = "businessPartnerCode <> ''";
    }
    // qualquer cliente
}
function BuildReportTable($startColumn, $startRow)
{
    global $root;
    global $dataConnector;
    global $objPhpExcel;
    global $billingItemArray;
    $businessPartnerDAO = new BusinessPartnerDAO($dataConnector->sqlserverConnection);
    $businessPartnerDAO->showErrors = 1;
    $industryDAO = new IndustryDAO($dataConnector->sqlserverConnection);
    $industryDAO->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;
    $contractDAO = new ContractDAO($dataConnector->mysqlConnection);
    $contractDAO->showErrors = 1;
    $inventoryItemDAO = new InventoryItemDAO($dataConnector->sqlserverConnection);
    $inventoryItemDAO->showErrors = 1;
    $counterDAO = new CounterDAO($dataConnector->mysqlConnection);
    $counterDAO->showErrors = 1;
    $salesPersonDAO = new SalesPersonDAO($dataConnector->sqlserverConnection);
    $salesPersonDAO->showErrors = 1;
    // Busca os segmentos/ramos de atividade cadastrados no sistema
    $industryArray = array(0 => "");
    $tempArray = $industryDAO->RetrieveRecordArray();
    foreach ($tempArray as $industry) {
        $industryArray[$industry->id] = $industry->name;
    }
    // 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;
    }
    // Cria um array para as estatísticas dos equipamentos (por modelo)
    $statsArray = array();
    $equipmentModelArray = $equipmentModelDAO->RetrieveRecordArray("id > 0 ORDER BY fabricante, modelo");
    foreach ($equipmentModelArray as $modelDTO) {
        $statsArray[$modelDTO->id] = new EquipmentModelStats($modelDTO->id, $modelDTO->modelo, $modelDTO->fabricante);
    }
    // Cria um array para as receitas de cada equipamento
    $equipRevenueArray = array();
    // Cria um array para as receitas provenientes de cada cliente
    $customerRevenueArray = array();
    $associativeList = array(0 => "");
    foreach ($equipmentModelArray as $model) {
        $associativeList[$model->id] = $manufacturerArray[$model->fabricante];
    }
    // Busca os contadores cadastrados no sistema
    $retrievedArray = $counterDAO->RetrieveRecordArray();
    $counterArray = array();
    foreach ($retrievedArray as $counter) {
        $counterArray[$counter->id] = $counter->nome;
    }
    // Busca os vendedores cadastrados no sistema
    $retrievedArray = $salesPersonDAO->RetrieveRecordArray();
    $salesPersonArray = array();
    foreach ($retrievedArray as $salesPersonDTO) {
        $salesPersonArray[$salesPersonDTO->slpCode] = $salesPersonDTO->slpName;
    }
    // Define o titulo da tabela
    $currentRow = $startRow;
    $activeSheet = $objPhpExcel->getActiveSheet();
    $activeSheet->setCellValue($startColumn . $startRow, 'SÍNTESE POR EQUIPAMENTO');
    $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) - 65;
    // startColumn é uma letra no intervalo A-Z
    $headers = array('Cliente', 'Segmento', 'Modelo', 'Fabricante', 'Série Fabricante', 'Nosso Núm. Série', 'Obs. Item', 'Data Instalação', 'Inicio Atendimento', 'Fim Atendimento', 'Parcela Atual', 'Vendedor', 'Medidor', 'Data Leitura', 'Medição Final', 'Medição Inicial', 'Ajuste Medição(Acrésc/Desc)', 'Consumo', 'Franquia', 'Excedente (Págs.)', 'Tarifa sobre exced.', 'Valor Fixo (R$)', 'Valor Variável (R$)', 'Acrésc/Desc (R$)', 'Valor Total (R$)', 'Custo Aquisição', 'Vida Útil', 'Custo Pág. do Equip.', 'Custo Pág. Peças/Mat.', 'Custo Pág. Total', 'Custo/Receita', 'Despesas');
    $offset = 0;
    foreach ($headers as $header) {
        $activeSheet->getColumnDimension(GetNameFromNumber($colNum + $offset))->setWidth(30);
        $offset++;
    }
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    // Gera as linhas da tabela
    $totalFixo = 0;
    $totalVariavel = 0;
    $totalAcrescDesc = 0;
    $grandTotal = 0;
    foreach ($billingItemArray as $billingItem) {
        $equipment = $equipmentDAO->RetrieveRecord($billingItem->codigoCartaoEquipamento);
        $businessPartner = $businessPartnerDAO->RetrieveRecord($equipment->customer);
        $contractCoveragePeriod = ContractDAO::GetContractCoveragePeriod($dataConnector->mysqlConnection, $billingItem->contrato_id);
        $installationDate = empty($equipment->installationDate) ? '' : $equipment->installationDate->format('d/m/Y');
        $inicioAtendimento = isset($contractCoveragePeriod) ? $contractCoveragePeriod["inicioAtendimento"] : '';
        $fimAtendimento = isset($contractCoveragePeriod) ? $contractCoveragePeriod["fimAtendimento"] : '';
        $parcelaAtual = isset($contractCoveragePeriod) ? $contractCoveragePeriod["parcelaAtual"] : '';
        $receitaTotal = $billingItem->total + $billingItem->acrescimoDesconto;
        $inventoryItem = $inventoryItemDAO->RetrieveRecord($equipment->itemCode);
        $obsItem = $inventoryItem->userText;
        $custoAquisicao = $inventoryItem->avgPrice;
        $custoPagPecas = $inventoryItem->expenses;
        $vidaUtil = $inventoryItem->durability;
        if (empty($vidaUtil)) {
            $custoPagEquip = 0;
            $custoTotal = 0;
            $custoSobreReceita = 0;
        } else {
            $custoPagEquip = $custoAquisicao / $vidaUtil * 1.4;
            $custoTotal = ($custoPagEquip + $custoPagPecas) * $billingItem->consumo;
            $custoSobreReceita = 0;
            if ($receitaTotal != 0) {
                $custoSobreReceita = $custoTotal / $receitaTotal;
            }
        }
        // Busca os dados do vendedor
        $salesPersonCode = $equipment->salesPerson;
        if (empty($salesPersonCode)) {
            $salesPersonCode = -1;
        }
        $salesPersonName = $salesPersonArray[$salesPersonCode];
        // Busca os dados do segmento/ramo de atividade
        $industryCode = $businessPartner->industry;
        if (empty($industryCode)) {
            $industryCode = 0;
        }
        $industryName = $industryArray[$industryCode];
        // Busca o modelo e fabricante do equipamento
        $modelName = "";
        if (array_key_exists($equipment->model, $modelArray)) {
            $modelName = $modelArray[$equipment->model];
        }
        $manufacturerName = "";
        if (array_key_exists($equipment->model, $modelArray)) {
            $manufacturerName = $associativeList[$equipment->model];
        }
        if (!array_key_exists($equipment->manufacturerSN, $equipRevenueArray)) {
            $equipRevenueArray[$equipment->manufacturerSN] = new EquipmentRevenue($equipment->manufacturerSN, $equipment->model, $modelName, $manufacturerName, 0);
        }
        $equipRevenue = $equipRevenueArray[$equipment->manufacturerSN];
        $equipRevenue->revenue += $receitaTotal;
        if (!array_key_exists($equipment->customer, $customerRevenueArray)) {
            $customerRevenueArray[$equipment->customer] = new CustomerRevenue($equipment->customer, 0);
        }
        $customerRevenue = $customerRevenueArray[$equipment->customer];
        $customerRevenue->revenue += $receitaTotal;
        $row = array();
        $row[0] = $businessPartner->cardName . ' (' . $businessPartner->cardCode . ')';
        $row[1] = $industryName;
        $row[2] = $modelName;
        $row[3] = $manufacturerName;
        $row[4] = $equipment->manufacturerSN;
        $row[5] = $equipment->internalSN;
        $row[6] = $obsItem;
        $row[7] = $installationDate;
        $row[8] = $inicioAtendimento;
        $row[9] = $fimAtendimento;
        $row[10] = $parcelaAtual;
        $row[11] = $salesPersonName;
        $row[12] = $counterArray[$billingItem->counterId];
        // Recupera o nome do medidor/contador
        $row[13] = $billingItem->dataLeitura;
        $row[14] = $billingItem->medicaoFinal;
        $row[15] = $billingItem->medicaoInicial;
        $row[16] = $billingItem->ajuste;
        $row[17] = $billingItem->consumo;
        $row[18] = $billingItem->franquia;
        $row[19] = $billingItem->excedente;
        $row[20] = formatDecimal($billingItem->tarifaSobreExcedente, null);
        $row[21] = formatBrCurrency($billingItem->fixo, 2);
        $row[22] = formatBrCurrency($billingItem->variavel, 2);
        $row[23] = formatBrCurrency($billingItem->acrescimoDesconto, 2);
        $row[24] = formatBrCurrency($receitaTotal, 2);
        $row[25] = formatBrCurrency($custoAquisicao, 2);
        $row[26] = $vidaUtil;
        $row[27] = formatDecimal($custoPagEquip, 6);
        $row[28] = formatDecimal($custoPagPecas, 6);
        $row[29] = formatBrCurrency($custoTotal, 2);
        $row[30] = formatDecimal($custoSobreReceita, 6);
        $row[31] = 'http://datadb/contratos/AjaxCalls/GetEquipmentExpenses.php?equipmentCode=' . $equipment->insID . '&billingId=' . $billingItem->codigoFaturamento . '&showDetails=true';
        $currentRow++;
        InsereLinhaPlanilha($currentRow, $startColumn, $row);
        $totalFixo += $billingItem->fixo;
        // Soma os valores fixos dos equipamentos
        $totalVariavel += $billingItem->variavel;
        // Soma os valores variáveis dos equipamentos
        $totalAcrescDesc += $billingItem->acrescimoDesconto;
        // Soma os acrescimos descontos dos equipamentos
        $grandTotal += $receitaTotal;
        // Soma a receita total dos equipamentos ( fixo mais variável )
    }
    $currentRow++;
    $summary = array('Quant. Clientes: ' . sizeof($customerRevenueArray), '', '', '', 'Quant. Equipamentos: ' . sizeof($equipRevenueArray), '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Total Fixo: ' . number_format($totalFixo, 2, ',', '.'), 'Total Variável: ' . number_format($totalVariavel, 2, ',', '.'), 'Total Acrésc/Desc: ' . number_format($totalAcrescDesc, 2, ',', '.'), 'Total Receita: ' . number_format($grandTotal, 2, ',', '.'), '', '', '', '', '', '', '');
    InsereLinhaPlanilha($currentRow, $startColumn, $summary, '80BB80FF', 32, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    foreach ($equipRevenueArray as $equipRevenue) {
        if (array_key_exists($equipRevenue->modelId, $statsArray)) {
            $modelStats = $statsArray[$equipRevenue->modelId];
            $modelStats->revenue += $equipRevenue->revenue;
            $modelStats->equipmentCount += 1;
        }
    }
    $currentRow += 3;
    // pula 3 linhas
    $startColumn = 'G';
    // fixa o quadro resumo na setima coluna da planilha
    // 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('Modelo', 'Fabricante', 'Quantidade', 'Receita');
    $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);
    $valorPrevio = "";
    $equipCount = 0;
    $somaReceita = 0;
    foreach ($statsArray as $equipmentModelStats) {
        if ($equipmentModelStats->equipmentCount > 0) {
            $manufacturerName = $manufacturerArray[$equipmentModelStats->fabricante];
            $valorAtual = $manufacturerName;
            if ($valorPrevio != $valorAtual) {
                if (!empty($valorPrevio)) {
                    $subTotal = array('', '', $equipCount, number_format($somaReceita, 2, ',', '.'));
                    $currentRow++;
                    InsereLinhaPlanilha($currentRow, $startColumn, $subTotal, '80AAFFFF', 20, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                    $equipCount = 0;
                    $somaReceita = 0;
                }
                $valorPrevio = $valorAtual;
            }
            $currentRow++;
            $row = array();
            $row[0] = $equipmentModelStats->model;
            $row[1] = $manufacturerName;
            $row[2] = $equipmentModelStats->equipmentCount;
            $row[3] = number_format($equipmentModelStats->revenue, 2, ',', '.');
            InsereLinhaPlanilha($currentRow, $startColumn, $row);
            $equipCount = $equipCount + $equipmentModelStats->equipmentCount;
            $somaReceita = $somaReceita + $equipmentModelStats->revenue;
        }
    }
    $subTotal = array('', '', $equipCount, number_format($somaReceita, 2, ',', '.'));
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $subTotal, '80AAFFFF', 20, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
Example #25
0
include_once "../../DataAccessObjects/EquipmentDAO.php";
include_once "../../DataTransferObjects/EquipmentDTO.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('sqlServer');
$dataConnector->OpenConnection();
if ($dataConnector->sqlserverConnection == null) {
    echo 'Não foi possível se connectar ao bando de dados!';
    exit;
}
// Cria o objeto de mapeamento objeto-relacional
$equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
$equipmentDAO->showErrors = 1;
if ($acao == "store") {
    if (isset($_REQUEST["equipmentCode"]) && $_REQUEST["equipmentCode"] != "") {
        $equipmentCode = $_REQUEST["equipmentCode"];
        $equipment = $equipmentDAO->RetrieveRecord($equipmentCode);
    }
    $equipment->installationDate = $_REQUEST["installationDate"];
    $equipment->installationDocNum = $_REQUEST["installationDocNum"];
    $equipment->counterInitialVal = $_REQUEST["counterInitialVal"];
    $equipment->removalDate = $_REQUEST["removalDate"];
    $equipment->removalDocNum = $_REQUEST["removalDocNum"];
    $equipment->counterFinalVal = $_REQUEST["counterFinalVal"];
    $equipment->technician = $_REQUEST["technician"];
    $equipment->model = $_REQUEST["model"];
    $equipment->capacity = $_REQUEST["capacity"];
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 $billingItemArray;
    global $salesPerson;
    global $model;
    global $searchMethod;
    $billingItemDAO = new BillingItemDAO($dataConnector->mysqlConnection);
    $billingItemDAO->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;
    $counterDAO = new CounterDAO($dataConnector->mysqlConnection);
    $counterDAO->showErrors = 1;
    $salesPersonDAO = new SalesPersonDAO($dataConnector->sqlserverConnection);
    $salesPersonDAO->showErrors = 1;
    // Define o titulo da tabela
    $currentRow = $startRow;
    $activeSheet = $objPhpExcel->getActiveSheet();
    $activeSheet->setCellValue($startColumn . $startRow, 'ITENS DE FATURAMENTO');
    $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) - 65;
    // startColumn é uma letra no intervalo A-Z
    $headers = array('Cliente', 'Descrição Equipamento', 'Modelo', 'Fabricante', 'Série Fabricante', 'Nosso Núm. Série', 'Data Instalação', 'Inicio Atendimento', 'Fim Atendimento', 'Medidor', 'Data Leitura', 'Medição Final', 'Medição Inicial', 'Ajuste Medição(Acrésc/Desc)', 'Consumo', 'Franquia', 'Excedente', 'Tarifa sobre exced.', 'Fixo (R$)', 'Variável (R$)', 'Acrésc/Desc (R$)', 'Total (R$)', 'Parcela Atual', 'Vendedor');
    $offset = 0;
    foreach ($headers as $header) {
        $activeSheet->getColumnDimension(GetNameFromNumber($colNum + $offset))->setWidth(30);
        $offset++;
    }
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    // 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 vendedores cadastrados no sistema
    $retrievedArray = $salesPersonDAO->RetrieveRecordArray();
    $salesPersonArray = array();
    foreach ($retrievedArray as $salesPersonDTO) {
        $salesPersonArray[$salesPersonDTO->slpCode] = $salesPersonDTO->slpName;
    }
    // Gera as linhas da tabela
    $grandTotal = 0;
    foreach ($billingItemArray as $billingItem) {
        $equipment = $equipmentDAO->RetrieveRecord($billingItem->codigoCartaoEquipamento);
        $contractCoveragePeriod = ContractDAO::GetContractCoveragePeriod($dataConnector->mysqlConnection, $billingItem->contrato_id);
        $inicioAtendimento = isset($contractCoveragePeriod) ? $contractCoveragePeriod["inicioAtendimento"] : '';
        $fimAtendimento = isset($contractCoveragePeriod) ? $contractCoveragePeriod["fimAtendimento"] : '';
        $parcelaAtual = isset($contractCoveragePeriod) ? $contractCoveragePeriod["parcelaAtual"] : '';
        $receitaTotal = $billingItem->total + $billingItem->acrescimoDesconto;
        if ($salesPerson > 0) {
            if ($equipment->salesPerson != $salesPerson) {
                continue;
            }
        }
        if ($searchMethod == 1 || $searchMethod == 2) {
            if (!empty($model)) {
                $modelMatched = false;
                if (strpos($equipment->itemName, $model)) {
                    $modelMatched = true;
                }
                if (!$modelMatched) {
                    continue;
                }
            }
        }
        $installationDate = empty($equipment->installationDate) ? '' : $equipment->installationDate->format('d/m/Y');
        $salesPersonCode = $equipment->salesPerson;
        if (empty($salesPersonCode)) {
            $salesPersonCode = -1;
        }
        $salesPersonName = $salesPersonArray[$salesPersonCode];
        $currentRow++;
        $row = array();
        $row[0] = $equipment->custmrName;
        $row[1] = $equipment->itemName;
        $row[2] = $modelArray[$equipment->model];
        $row[3] = $associativeList[$equipment->model];
        // Recupera o fabricante do modelo de equipamento
        $row[4] = $equipment->manufacturerSN;
        $row[5] = $equipment->internalSN;
        $row[6] = $installationDate;
        $row[7] = $inicioAtendimento;
        $row[8] = $fimAtendimento;
        $row[9] = $counterArray[$billingItem->counterId];
        $row[10] = $billingItem->dataLeitura;
        $row[11] = $billingItem->medicaoFinal;
        $row[12] = $billingItem->medicaoInicial;
        $row[13] = $billingItem->ajuste;
        $row[14] = $billingItem->consumo;
        $row[15] = $billingItem->franquia;
        $row[16] = $billingItem->excedente;
        $row[17] = number_format($billingItem->tarifaSobreExcedente, 6, ',', '.');
        $row[18] = number_format($billingItem->fixo, 2, ',', '.');
        $row[19] = number_format($billingItem->variavel, 2, ',', '.');
        $row[20] = number_format($billingItem->acrescimoDesconto, 2, ',', '.');
        $row[21] = number_format($receitaTotal, 2, ',', '.');
        $row[22] = $parcelaAtual;
        $row[23] = $salesPersonName;
        InsereLinhaPlanilha($currentRow, $startColumn, $row);
        $grandTotal += $receitaTotal;
        // Soma a receita total do equipamento ( fixo mais variável )
    }
    $currentRow++;
    $total = array('Total da Receita: ' . number_format($grandTotal, 2, ',', '.'), '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');
    InsereLinhaPlanilha($currentRow, $startColumn, $total, '80BB80FF', 45, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $activeSheet->mergeCells(GetNameFromNumber($colNum + 0) . $currentRow . ':' . GetNameFromNumber($colNum + sizeof($headers) - 1) . $currentRow);
}
// Busca os respectivos subcontratos
$subContractEnumeration = SubContractDAO::GetSubcontractsByOwner($dataConnector->mysqlConnection, $contractEnumeration);
// Busca os respectivos equipamentos (itens de contrato)
$itemArray = ContractItemDAO::GetItemsByOwner($dataConnector->mysqlConnection, $subContractEnumeration);
// Verifica se o array está vazio no final, juntamente com $rowCount
$rowCount = 0;
foreach ($itemArray as $contractItem) {
    // Verifica se o equipamento já possui leitura nos últimos 5 dias
    $filter = "codigoCartaoEquipamento=" . $contractItem->codigoCartaoEquipamento . " AND contador_id=" . $counterId . " AND origemLeitura_id=2 AND data > DATE_SUB( NOW(), INTERVAL 5 DAY)";
    $readingArray = $readingDAO->RetrieveRecordArray($filter);
    if (sizeof($readingArray) == 0) {
        // Nenhuma leitura do equipamento hoje
        $equipmentOperator = new EquipmentOperator($dataConnector->sqlserverConnection, $contractItem->businessPartnerCode, $contractItem->codigoCartaoEquipamento);
        if ($equipmentOperator->equipmentStatus == 'A' || $equipmentOperator->equipmentStatus == 'L') {
            $serialNumber = '<a rel="' . $equipmentOperator->equipmentCode . '" class="itemInfo" >' . $equipmentOperator->serialNumber . '</a>';
            $equipmentStatus = EquipmentDAO::GetStatusDescription($equipmentOperator->equipmentStatus);
            $telephoneNumber = $equipmentOperator->telephoneNumber;
            $reading = '<a href="Frontend/_leitura/editar.php?equipmentCode=' . $equipmentOperator->equipmentCode . '&subContract=0" ><span class="ui-icon ui-icon-alert"></span></a>';
            echo '<tr><td>' . $serialNumber . ' (' . $equipmentStatus . ')</td><td>' . $telephoneNumber . '</td><td>' . $reading . '</td></tr>';
            $rowCount++;
        }
    }
}
if (sizeof($itemArray) == 0 || $rowCount == 0) {
    // Todas as leituras de hoje foram completadas
    echo '<tr><td colspan="3" align="center" >Nenhum registro encontrado!</td></tr>';
}
// Fecha a conexão com o banco de dados
$dataConnector->CloseConnection();
?>
Example #29
0
$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);
}
?>

    <h1>Administração - Leitura - <?php 
echo $serialNumber;
function BuildReportTable($startColumn, $startRow)
{
    global $dataConnector;
    global $objPhpExcel;
    global $invoicePaymentArray;
    $salesPersonDAO = new SalesPersonDAO($dataConnector->sqlserverConnection);
    $salesPersonDAO->showErrors = 1;
    $equipmentDAO = new EquipmentDAO($dataConnector->sqlserverConnection);
    $equipmentDAO->showErrors = 1;
    $businessPartnerDAO = new BusinessPartnerDAO($dataConnector->sqlserverConnection);
    $businessPartnerDAO->showErrors = 1;
    $industryDAO = new IndustryDAO($dataConnector->sqlserverConnection);
    $industryDAO->showErrors = 1;
    $contractDAO = new ContractDAO($dataConnector->mysqlConnection);
    $contractDAO->showErrors = 1;
    $billingDAO = new BillingDAO($dataConnector->mysqlConnection);
    $billingDAO->showErrors = 1;
    $billingItemDAO = new BillingItemDAO($dataConnector->mysqlConnection);
    $billingItemDAO->showErrors = 1;
    $commissionPerSignatureDAO = new CommissionPerSignatureDAO($dataConnector->mysqlConnection);
    $commissionPerSignatureDAO->showErrors = 1;
    // Define o titulo da tabela
    $currentRow = $startRow;
    $activeSheet = $objPhpExcel->getActiveSheet();
    $activeSheet->setCellValue($startColumn . $startRow, 'PAGAMENTOS');
    $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º NF', 'Tipo', 'Cliente', 'Segmento', 'Nº Boleto', 'Valor Cobrado', 'Valor Recebido', 'Data Pagamento', 'Demonstrativo Fat.', 'Descritivo Faturamento');
    $offset = 0;
    foreach ($headers as $header) {
        $activeSheet->getColumnDimension(chr($colNum + $offset))->setWidth(25);
        $offset++;
    }
    $activeSheet->getColumnDimension(chr($colNum + $offset - 1))->setWidth(50);
    $currentRow++;
    InsereLinhaPlanilha($currentRow, $startColumn, $headers, PHPExcel_Style_Color::COLOR_YELLOW, 30, PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    // Cria um array para as estatísticas dos vendedores
    $statsArray = array();
    $salesPersonArray = $salesPersonDAO->RetrieveRecordArray();
    foreach ($salesPersonArray as $salesPerson) {
        $statsArray[$salesPerson->slpCode] = new SalesPerson($salesPerson->slpCode, $salesPerson->slpName);
    }
    // Cria um array para as regras de comissão
    $rulesArray = array(0 => new CommissionRule(0, "", "", 0));
    $commissionRuleArray = $commissionPerSignatureDAO->RetrieveRecordArray();
    foreach ($commissionRuleArray as $commissionRuleDTO) {
        $rulesArray[$commissionRuleDTO->id] = new CommissionRule($commissionRuleDTO->segmento, $commissionRuleDTO->dataAssinaturaDe, $commissionRuleDTO->dataAssinaturaAte, $commissionRuleDTO->comissao);
    }
    // Busca os segmentos/ramos de atividade cadastrados no sistema
    $industryArray = array(-1 => "- Nenhum Segmento -");
    $tempArray = $industryDAO->RetrieveRecordArray();
    foreach ($tempArray as $industry) {
        $industryArray[$industry->id] = $industry->name;
    }
    foreach ($invoicePaymentArray as $payment) {
        $billingDescription = "";
        $billing = new BillingDTO();
        if ($payment->demFaturamento >= 1) {
            $billing = $billingDAO->RetrieveRecord($payment->demFaturamento);
            if (!isset($billing)) {
                $billing = new BillingDTO();
            }
        }
        $industry = -1;
        // Busca os itens de faturamento
        $billingItemArray = $billingItemDAO->RetrieveRecordArray("codigoFaturamento = '" . $billing->id . "'");
        $quantidadeItens = sizeof($billingItemArray);
        if ($quantidadeItens < 1) {
            $quantidadeItens = 1;
        }
        $multaRecisoria = $billing->multaRecisoria / $quantidadeItens;
        foreach ($billingItemArray as $billingItem) {
            $equipment = $equipmentDAO->RetrieveRecord($billingItem->codigoCartaoEquipamento);
            $businessPartner = $businessPartnerDAO->RetrieveRecord($payment->cardCode);
            if (isset($businessPartner->industry)) {
                $industry = $businessPartner->industry;
            }
            if ($equipment->salesPerson > 0) {
                $contract = $contractDAO->RetrieveRecord($billingItem->contrato_id);
                $salesPersonStats = $statsArray[$equipment->salesPerson];
                if (!isset($salesPersonStats->statistics)) {
                    $salesPersonStats->statistics = array();
                }
                $ruleKey = 0;
                $comissao = 0;
                $commissionRuleArray = $commissionPerSignatureDAO->RetrieveRecordArray("(segmento = 0 OR segmento = " . $industry . ") AND dataAssinaturaDe <= '" . $contract->dataAssinatura . "' AND dataAssinaturaAte >= '" . $contract->dataAssinatura . "' ORDER BY segmento DESC, comissao DESC");
                if (sizeof($commissionRuleArray) > 0) {
                    $rule = $commissionRuleArray[0];
                    $ruleKey = $rule->id;
                    $comissao = $rule->comissao;
                }
                if (!array_key_exists($ruleKey, $salesPersonStats->statistics)) {
                    $salesPersonStats->statistics[$ruleKey] = new SalesPersonStats($ruleKey);
                }
                $ruleStats = $salesPersonStats->statistics[$ruleKey];
                $ruleStats->comissionRate = $comissao;
                $ruleStats->revenue += $billingItem->total + $billingItem->acrescimoDesconto - $multaRecisoria;
                if (!IsContractAdded($contract, $ruleStats)) {
                    $ruleStats->contractCount++;
                    if (!isset($ruleStats->contractArray)) {
                        $ruleStats->contractArray = array();
                    }
                    $ruleStats->contractArray[$contract->id] = $contract->id;
                }
            }
            $LFCR = chr(10) . chr(13);
            $salesPersonName = SalesPersonDAO::GetSalesPersonName($dataConnector->sqlserverConnection, $equipment->salesPerson);
            $billingDescription .= $salesPersonName . ' Serial ' . $equipment->manufacturerSN . ' R$ ' . $billingItem->total . $LFCR;
        }
        $currentRow++;
        $row = array();
        $row[0] = $payment->serial;
        $row[1] = GetInvoiceTypeAsText($payment->tipo);
        $row[2] = $payment->cardName;
        $row[3] = $industryArray[$industry];
        $row[4] = GetBOENumber($payment);
        $row[5] = GetDocTotal($payment);
        $row[6] = GetReceivedAmount($payment);
        $row[7] = empty($payment->date) ? '' : $payment->date->format('d/m/Y');
        $row[8] = empty($billing->id) ? ' - ' : str_pad($billing->id, 5, '0', STR_PAD_LEFT);
        $row[9] = $billingDescription;
        InsereLinhaPlanilha($currentRow, $startColumn, $row);
    }
    $currentRow += 3;
    // pula 3 linhas
    // Define o titulo do quadro resumo
    $activeSheet = $objPhpExcel->getActiveSheet();
    $activeSheet->setCellValue($startColumn . $currentRow, 'COMISSÕES');
    $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('Vendedor', 'Segmento', 'Data de Assinatura', 'Quantidade de Contratos', 'Faturamento (R$)', 'Comissão (%)', 'Comissão (R$)');
    $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);
    foreach ($statsArray as $salesPersonStats) {
        if (isset($salesPersonStats->statistics)) {
            $statistics = $salesPersonStats->statistics;
            foreach ($statistics as $stat) {
                $commissionRule = $rulesArray[$stat->index];
                $industryName = "Todos";
                if ($commissionRule->segmento > 0) {
                    $industryName = $industryArray[$commissionRule->segmento];
                }
                $period = "";
                if ($commissionRule->comissao > 0) {
                    $period = $commissionRule->dataAssinaturaDe . ' até ' . $commissionRule->dataAssinaturaAte;
                }
                $comissionPercentage = $stat->comissionRate;
                $comissionValue = $stat->comissionRate / 100 * $stat->revenue;
                $currentRow++;
                $row = array();
                $row[0] = $salesPersonStats->name;
                $row[1] = $industryName;
                $row[2] = $period;
                $row[3] = $stat->contractCount;
                $row[4] = number_format($stat->revenue, 2, ',', '.');
                $row[5] = $comissionPercentage;
                $row[6] = number_format($comissionValue, 2, ',', '.');
                InsereLinhaPlanilha($currentRow, $startColumn, $row);
            }
        }
    }
}