PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

221 lines
9.1 KiB

<?php
$tpLayout = 1;
$nomeTpl = 'cadastros/tarifacao/cadPrePagoConta.htm';
$msgErro = '';
$conta = $_REQUEST['conta'];
$saldo = $_REQUEST['saldo'];
$nome = $_REQUEST['nome'];
$estorno = isset($_REQUEST['acao']) ? 1 : 0;
$statusConta = $_REQUEST['statusConta'];
$saldoAnterior = 0;
$org_id = GetOrganizacao();
$dataIni = '';
$dataFim = '';
$dataIniP = '';
$dataFimP = '';
$linha = ' <tr>
<td align="center">%s</td>
<td align="left">%s</td>
<td align="center">%s</td>
<td align="left">%s</td>
<td align="center">%s</td>
<td align="right">%s</td>
<td align="center">%s</td>
</tr>';
if (IsPostBack() || $estorno) {
$dataIniP = $_REQUEST['dataIni'];
$dataFimP = $_REQUEST['dataFim'];
$dataIni = isset($_REQUEST['dataIni']) && is_date($_REQUEST['dataIni']) ? FormatDtMssql($_REQUEST['dataIni']) : '';
$dataFim = isset($_REQUEST['dataFim']) && is_date($_REQUEST['dataFim']) ? FormatDtMssql($_REQUEST['dataFim']) : '';
if (isset($_POST['btLancamento'])) {
if (!$_POST['operacao_ramal']) {
$jsStartup[] = "alert('Selecione um tipo de operação!');";
} else {
$habRamal = $_REQUEST['operacao_ramal'] == 1;
$valor = isset($_REQUEST['credito_ramal']) ? $_REQUEST['credito_ramal'] : 0.0;
$valor = FormataValorBd($valor);
$usuario = GetLogin();
if ((!$habRamal) && ((!$valor) || ($valor <= 0))) {
$jsStartup[] = "alert('Para realizar esta operação é necessário informar um valor!');";
} else {
$msg = '';
$queryRamal = 'begin';
$result = pg_query($dbcon, $queryRamal);
$numConta = $conta;
$hab = ($statusConta ? '0' : '1');
if ($habRamal) {
$queryRamal = sprintf("UPDATE pbx_cs_usuarios SET habilita_prepago = '%s' WHERE matricula = '%s' \n", $hab, $numConta);
if ($result) {
$result = pg_query($dbcon, $queryRamal);
}
if ($result) {
$statusConta = $hab;
}
} else {
if (!$statusConta) {
$msg = 'Não é permitido realizar lançamentos para "Contas Desabilitadas"!';
$result = false;
} else {
$queryRamal = "INSERT INTO pbx_prepago_movimento (prm_ramal_conta, prm_conta_senha, trr_id, prm_valor_minuto, prm_tempo, prm_destino, prm_valor, prm_data, prm_data_lanc, prm_tipo_lancamento, prm_historico, usuario, org_id)
VALUES('$numConta', '1','0','0','0','0', '$valor', now()::date, now(), 'C', 'Inclusao de Credito', '$usuario', $org_id)";
if ($result) {
$result = pg_query($dbcon, $queryRamal);
}
if ($result) {
$saldo += $valor;
}
}
}
if ($result) {
$queryRamal = 'commit';
pg_query($dbcon, $queryRamal);
$jsStartup[] = "alert('Operação realizada com sucesso!');";
} else {
$queryRamal = 'rollback';
pg_query($dbcon, $queryRamal);
$msg = $msg ? $msg : 'Não foi possível realizar a operação!';
$jsStartup[] = "alert('$msg');";
}
}
}
}
if ($estorno) {
$numConta = $_SESSION["SSContaEstorno"];
$valor = - ($_SESSION["SSValorEstorno"]);
$idEst = $_SESSION["SSidEstorno"];
$usuario = GetLogin();
$queryRamal = 'begin';
$result = pg_query($dbcon, $queryRamal);
$queryRamal = "INSERT INTO pbx_prepago_movimento (prm_ramal_conta, prm_conta_senha, trr_id, prm_valor_minuto, prm_tempo, prm_destino, prm_valor, prm_data, prm_data_lanc, prm_tipo_lancamento, prm_historico, usuario, org_id)
VALUES('$numConta','1', '0', '0', '0', '0', '$valor', now()::date, now(), 'E', 'Estorno lancamento: $idEst', '$usuario', $org_id)";
if ($result) {
$result = pg_query($dbcon, $queryRamal);
}
if ($result) {
$saldo += $valor;
}
if ($result) {
$queryRamal = 'commit';
pg_query($dbcon, $queryRamal);
$jsStartup[] = "alert('Operação realizada com sucesso!');";
} else {
$queryRamal = 'rollback';
pg_query($dbcon, $queryRamal);
$jsStartup[] = "alert('Não foi possível realizar a operação!');";
}
}
} else {
$dataFimP = date("d/m/Y");
$dataIniP = date("d/m/Y", strtotime("-1 month"));
$dataIni = FormatDtMssql($dataIniP);
$dataFim = FormatDtMssql($dataFimP);
}
if ($dataIni && $dataFim) {
$query = "SELECT sum(prm_valor) as saldo_anterior
FROM pbx_prepago_movimento
WHERE prm_conta_senha = 1
AND prm_ramal_conta = '$conta' and prm_data < '$dataIni' \n";
$result = pg_query($dbcon, $query);
if (pg_num_rows($result)) {
$dados = pg_fetch_array($result);
$saldoAnterior = $dados['saldo_anterior'];
}
}
/*
* Ultimo lançamento de credito
*/
$idUltCredito = -1;
$query = "SELECT max(prm_id) FROM pbx_prepago_movimento WHERE prm_conta_senha = 1 AND prm_tipo_lancamento = 'C' and prm_ramal_conta = '$conta'";
$result = pg_query($dbcon, $query);
if (pg_num_rows($result)) {
$row = pg_fetch_row($result);
$idUltCredito = $row[0];
}
$imgLancNormal = '<img src="imgSite/bulletCirc.gif" alt="Lancamento!" title="Lancamento!" width="5" height="5" border="0">';
$imgEstorna = '<img src="imgSite/transbordando.png" alt="Estornar!" title="Estornar!" width="12" height="12" border="0">';
$query = "SELECT prm_id, prm_ramal_conta, prm_conta_senha, trr_id,
prm_valor_minuto, prm_tempo, prm_destino, prm_valor, prm_data,
prm_data_lanc, prm_tipo_lancamento, prm_historico, usuario
FROM pbx_prepago_movimento
WHERE prm_conta_senha = 1
AND prm_ramal_conta = '$conta' AND org_id = $org_id \n";
if ($dataIni && $dataFim) {
$query .= "AND prm_data >= '$dataIni' and prm_data <= '$dataFim' ";
}
$query .= " ORDER BY prm_data_lanc desc \n";
$result = pg_query($dbcon, $query);
$linhas = sprintf('<tr><td align="center">%s</td><td align="center">-</td><td align="center">-</td><td align="left">Saldo Anterior</td><td align="center">-</td><td align="right">%s</td><td align="center">%s</td></tr>', $dataIniP, FormataValor($saldoAnterior), $imgLancNormal);
$linhaTemp = '';
$imp = 0;
$saldoRamal = 0;
while ($dados = pg_fetch_array($result)) {
$data = FormataDBDataHora($dados['prm_data_lanc']);
$destino = !$dados['prm_destino'] ? '-' : $dados['prm_destino'];
$duracao = SecondToStrTime($dados['prm_tempo']);
$valor = FormataValor($dados['prm_valor']);
$saldoRamal += $dados['prm_valor'];
$lanc = $dados['prm_tipo_lancamento'];
$hist = $dados['prm_historico'];
$id = $dados['prm_id'];
$estornar = ($idUltCredito == $id) && ($saldo >= $valor);
$imgEstorna = $estornar ? $imgEstorna : $imgLancNormal;
if ($estornar) {
$_SESSION["SSidEstorno"] = $id;
$_SESSION["SSContaEstorno"] = $conta;
$_SESSION["SSValorEstorno"] = $valor;
}
$lkEstorna = $estornar ? sprintf('<a href="index.php?idProg=215&acao=estorno&dataIni=%s&$dataFimP=%s&conta=%s&saldo=%s&nome=%s&statusConta=%s">%s</a>', $dataIniP, $dataFimP, $conta, $saldo, $nome, $statusConta, $imgEstorna) : $imgEstorna;
$linhaTemp = sprintf($linha, $data, $destino, $duracao, $hist, $lanc, $valor, $lkEstorna);
$linhas .= $linhaTemp;
$imp++;
}
$saldoRamal += $saldoAnterior;
$linhas .= sprintf(' <tr>
<th align="center">%s</th>
<th align="center">-</th>
<th align="center">-</th>
<th align="left">Saldo Atual</th>
<th align="center">-</th>
<th align="right">%s</th>
<th align="center">&nbsp;</th>
</tr>', date('d/m/Y'), FormataValor($saldoRamal));
$status = $statusConta ? '<img src="imgSite/button_ok16.png" alt="Habilitado!" width="16" height="16" border="0">' : '<img src="imgSite/fecha16.png" alt="Desabilitado!" width="16" height="16" border="0">';
$smarty->assign('conta', $conta);
$smarty->assign('nome', $nome);
$smarty->assign('saldo', FormataValor($saldo));
$smarty->assign('statusConta', $statusConta);
$smarty->assign('status', $status);
$smarty->assign('dataIni', $dataIniP);
$smarty->assign('dataFim', $dataFimP);
$smarty->assign('linhas', $linhas);
$smarty->assign('msgErro', $msgErro);
GetTemplate($smarty, $nomeTpl);