| Server IP : 162.214.74.102 / Your IP : 216.73.217.103 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/public_html/lrsys_apps/leve/application/plugins/modulo_fiscal/controllers/ |
Upload File : |
<?php
_auth();
$ui->assign('_application_menu', 'modulo_fiscal');
$ui->assign('_title', $_L['Fiscal Module'] . ' - ' . $config['CompanyName']);
$ui->assign('_st', $_L['Fiscal Module']);
$action = $routes['2'];
$user = User::_info();
$ui->assign('user', $user);
$dir = "application/plugins/modulo_fiscal";
switch ($action) {
case 'list':
$listaConfigApp = ORM::for_table('app_fiscal_config')->find_many();
foreach ($listaConfigApp as $da) {
$dataCompany[$da['key']] = $da['value'];
}
if (sizeof($listaConfigApp) < 1) {
$ui->assign('status', 'semConfig');
$ui->assign('_include', 'semConfigUpNfe');
$ui->display('wrapper.tpl');
break;
}
if (empty($dataCompany['note_environment']) ||
empty($dataCompany['company_cnpj']) ||
empty($dataCompany['certificate'])) {
$ui->assign('status', 'configInvalid');
$ui->assign('_include', 'semConfigUpNfe');
$ui->display('wrapper.tpl');
break;
}
if (!file_exists('application/plugins/modulo_fiscal/empresa/certs/' . $dataCompany['certificate'])) {
$ui->assign('status', 'semCert');
$ui->assign('_include', 'semConfigUpNfe');
$ui->display('wrapper.tpl');
break;
}
$ui->assign('xheader', '<link rel="stylesheet" type="text/css" href="' . $dir . '/assets/css/default.css"><link rel="stylesheet" type="text/css" href="ui/lib/dropzone/dropzone.css">');
$ui->assign('xfooter', '<script type="text/javascript" src="' . $dir . '/assets/js/default.js"></script><script type="text/javascript" src="ui/lib/dropzone/dropzone.js"></script>');
$ui->assign('_include', 'importar-list');
$ui->display('wrapper.tpl');
break;
case 'import_nfe_xml':
require_once $dir . '/controllers/loadXML.php';
break;
case 'import-manual-post':
$msg = "";
$d['crm_account_id'] = _post('payee');
if (empty($d['crm_account_id'])) {
$msg.=$_L['Payee'] . " " . $_L['is required'];
}
if (!isset($_POST['product'])) {
$msg.=$_L['module_fiscal Input one Item'];
}
if (empty($msg)) {
$d['type'] = _post('type_note');
$d['key'] = _post('key');
$d['number'] = _post('number_note');
$d['series'] = _post('series_note');
//$sales_price = Finance::amount_fix(_post('sales_price'));
$valida = ORM::for_table('app_fiscal_nfe_imported')
->select('*')
->where('key', $d['key'])
->where('crm_account_id', $d['crm_account_id'])
->where('type', $d['type'])
->where('number', $d['number'])
->where('series', $d['series'])
->find_many();
if (sizeof($valida) > 0) {
echo $_L['module_fiscal This note already imported'];
return;
}
$d['emission_date'] = _postDate('emission_date', $_c);
$d['input_date'] = _postDate('input_date', $_c);
$d['extra_expense'] = Finance::amount_fix(_post('extra_expense'));
$d['total'] = Finance::amount_fix(_post('total'));
$d['number_itens'] = count($_POST['product']);
$d['notes'] = _post('notes');
$d['total_freight'] = Finance::amount_fix(_post('total_freight'));
$d['total_safe'] = Finance::amount_fix(_post('total_safe'));
$d['total_other_expense'] = Finance::amount_fix(_post('total_other_expensetal'));
$d['total_discount'] = Finance::amount_fix(_post('total_discount'));
$d['total_icms'] = Finance::amount_fix(_post('total_icms'));
$d['total_icms_st'] = Finance::amount_fix(_post('total_icms_st'));
$d['total_ipi'] = Finance::amount_fix(_post('total_ipi'));
$d['total_products'] = Finance::amount_fix(_post('total_products'));
$d['total_pis'] = Finance::amount_fix(_post('total_pis'));
$d['total_cofins'] = Finance::amount_fix(_post('total_cofins'));
$d['total_icms_uf_dest'] = Finance::amount_fix(_post('total_icms_uf_dest'));
$d['total_icms_uf_rem'] = Finance::amount_fix(_post('total_icms_uf_rem'));
$d['total_fcp'] = Finance::amount_fix(_post('total_fcp'));
$d['total_ii'] = Finance::amount_fix(_post('total_ii'));
require_once $dir . '/controllers/criaDataXML.php';
$dataXml = new criaDataXML();
$ncm = $_POST['ncm'];
$unit_sale = $_POST['unit_sale'];
$unit_buy = $_POST['unit_buy'];
$itens_carton = $_POST['itens_carton'];
$cfop = $_POST['cfop'];
$cst_dest = $_POST['cst_dest'];
$freight = $_POST['freight'];
$safe = $_POST['safe'];
$other_expense = $_POST['other_expense'];
$aliq_ipi = $_POST['aliq_ipi'];
$value_ipi = $_POST['value_ipi'];
$bbc_icms_value = $_POST['bbc_icms_value'];
$bbc_icms = $_POST['bbc_icms'];
$value_icms = $_POST['value_icms'];
$aliq_icms = $_POST['aliq_icms'];
$value_icms_st = $_POST['value_icms_st'];
$imp_federal = $_POST['imp_federal'];
$aliq_pis = $_POST['aliq_pis'];
$aliq_cofins = $_POST['aliq_cofins'];
$product_code = $_POST['product_code'];
$products = $_POST['product'];
$qty = $_POST['qty'];
$amount = $_POST['amount'];
$item_discount = $_POST['item_discount'];
$cost_per_item = $_POST['cost_per_item'];
$margem_lucro = $_POST['margem_lucro'];
$preco_atual = $_POST['preco_atual'];
$i = '0';
foreach ($products as $product) {
$data['xProd'] = $product;
$data['NCM'] = preg_replace('/\D/', '', $ncm[$i]);
// $data['unit_prod']=$unit_sale[$i];
$data['vUnCom'] = Finance::amount_fix($amount[$i]);
$data['cProd'] = $product_code[$i];
if ($unit_sale[$i] != $unit_buy[$i]) {
$data['qCom'] = Finance::amount_fix($qty[$i] * $itens_carton[$i]);
} else {
$data['qCom'] = Finance::amount_fix($qty[$i]);
}
$unit_prod = ORM::for_table('sys_items_unit')
->find_one($unit_sale[$i]);
$data['uCom'] = $unit_prod['initials'];
$dataXml->gravaOPeracao($data, $_L['Input by Invoice manual']);
//////////////////
$d['products'][$i]['ncm'] = $ncm[$i];
$d['products'][$i]['unit_sale'] = $unit_sale[$i];
$d['products'][$i]['unit_buy'] = $unit_buy[$i];
$d['products'][$i]['itens_carton'] = $itens_carton[$i];
$d['products'][$i]['cfop'] = $cfop[$i];
$d['products'][$i]['cst_dest'] = $cst_dest[$i];
$d['products'][$i]['freight'] = $freight[$i];
$d['products'][$i]['safe'] = $safe[$i];
$d['products'][$i]['other_expense'] = $other_expense[$i];
$d['products'][$i]['aliq_ipi'] = $aliq_ipi[$i];
$d['products'][$i]['value_ipi'] = $value_ipi[$i];
$d['products'][$i]['bbc_icms_value'] = $bbc_icms_value[$i];
$d['products'][$i]['bbc_icms'] = $bbc_icms[$i];
$d['products'][$i]['value_icms'] = $value_icms[$i];
$d['products'][$i]['aliq_icms'] = $aliq_icms[$i];
$d['products'][$i]['value_icms_st'] = $value_icms_st[$i];
$d['products'][$i]['imp_federal'] = $imp_federal[$i];
$d['products'][$i]['aliq_pis'] = $aliq_pis[$i];
$d['products'][$i]['aliq_cofins'] = $aliq_cofins[$i];
$d['products'][$i]['product_code'] = $product_code[$i];
$d['products'][$i]['products'] = $products[$i];
$d['products'][$i]['qty'] = $qty[$i];
$d['products'][$i]['amount'] = $amount[$i];
$d['products'][$i]['item_discount'] = $item_discount[$i];
$d['products'][$i]['cost_per_item'] = $cost_per_item[$i];
$d['products'][$i]['margem_lucro'] = $margem_lucro[$i];
$d['products'][$i]['preco_atual'] = $preco_atual[$i];
$i++;
}
$controle_nfe = ORM::for_table('app_fiscal_nfe_imported')
->create();
$controle_nfe->key = $d['key'];
$controle_nfe->crm_account_id = $d['crm_account_id'];
$controle_nfe->type = $d['type'];
$controle_nfe->number = $d['number'];
$controle_nfe->series = $d['series'];
$controle_nfe->input_date = $d['input_date'];
$controle_nfe->emission_date = $d['emission_date'];
$controle_nfe->json = json_encode($d);
$controle_nfe->save();
_notify($_L['Input by Invoice manual'] . " " . $_L['Add Successfull'], 's');
echo 'OK';
} else {
echo $msg;
}
break;
case 'import_note_manual':
$css_arr = array('s2/css/select2.min', 'modal', 'dp/dist/datepicker.min', 'redactor/redactor');
$js_arr = array('redactor/redactor.min', 's2/js/select2.min', 's2/js/i18n/' . lan(), 'dp/dist/datepicker.min', 'dp/i18n/' . $config['language'], 'numeric', 'modal');
// $ui->assign('xheader', '<link rel="stylesheet" type="text/css" href="' . $dir . '/assets/css/import-manual.css">');
$ui->assign('xheader', Asset::css($css_arr));
$ui->assign('xfooter', Asset::js($js_arr) . Asset::js_external(APP_URL . "/application/plugins/modulo_fiscal/assets/js/import-manual.js"));
$ui->assign('jsvar', '
_L[\'are_you_sure\'] = \'' . $_L['are_you_sure'] . '\';
_L[\'Save\'] = \'' . $_L['Save'] . '\';
_L[\'module_fiscal items in the carton\'] = \'' . $_L['module_fiscal items in the carton'] . '\';
_L[\'module_fiscal Select unit buy\'] = \'' . $_L['module_fiscal Select unit buy'] . '\';
_L[\'module_fiscal Select unit sale\'] = \'' . $_L['module_fiscal Select unit sale'] . '\';
_L[\'is required\'] = \'' . $_L['is required'] . '\';
_L[\'module_fiscal Qty\'] = \'' . $_L['module_fiscal Qty'] . '\';
_L[\'Item Note\'] = \'' . $_L['Item Note'] . '\';
_L[\'Price\'] = \'' . $_L['Price'] . '\';
_L[\'module_fiscal Select one Item\'] = \'' . $_L['module_fiscal Select one Item'] . '\';
_L[\'Select\'] = \'' . $_L['Select'] . '\';
_L[\'Cancel\'] = \'' . $_L['Cancel'] . '\';
_L[\'Name\'] = \'' . $_L['Name'] . '\';
_L[\'NCM\'] = \'' . $_L['NCM'] . '\';
_L[\'Add New\'] = \'' . $_L['Add New'] . '\';
_L[\'Select Payee\'] = \'' . $_L['Select Payee'] . '\';
_L[\'Select the item first.\'] = \'' . $_L['Select the item first.'] . '\';
_L[\'Select\'] = \'' . $_L['Select'] . '\';
_L[\'There are no items to add\'] = \'' . $_L['There are no items to add'] . '\';
');
$cfop = ORM::for_table('cfop')->order_by_asc('id')->find_many();
$ui->assign('cfop', $cfop);
$ui->assign('_include', 'import-manual');
$ui->display('wrapper.tpl');
break;
case 'import_nfe_gov_cnpj':
require_once $dir . '/nfephp/bootstrap.php';
require_once $dir . '/controllers/config_nota.php';
require_once $dir . '/controllers/criaDataXML.php';
$listaConfigApp = ORM::for_table('app_fiscal_config')->find_many();
foreach ($listaConfigApp as $da) {
$dataCompany[$da['key']] = $da['value'];
}
$nfe = new NFePHP\NFe\ToolsNFe(geraConfig($dataCompany, 'Nfe'));
$nfe->setModelo('55');
$cnpj = str_replace('/', '', str_replace('-', '', str_replace('.', '', $dataCompany['company_cnpj'])));
$aResposta = array();
// $tpAmb = ($dataCompany['note_environment'] == 'homologacao') ? 2 : 1;
// $aResposta = array();
$ultNSU = 0; // se estiver como zero irá retornar os dados dos ultimos 15 dias até o limite de 50 registros
// se for diferente de zero irá retornar a partir desse numero os dados dos
// últimos 15 dias até o limite de 50 registros
$numNSU = 0; // se estiver como zero irá usar o ultNSU
// se for diferente de zero não importa o que está contido em ultNSU será retornado apenas
// os dados deste NSU em particular
$tpAmb = '1';// esses dados somente existirão em ambiente de produção pois em ambiente de testes
// não existem dados de eventos, nem de NFe emitidas para o seu CNPJ
$cnpj = ''; // deixando vazio irá pegar o CNPJ default do config
// se for colocado um CNPJ tenha certeza que o certificado está autorizado a
// baixar os dados desse CNPJ pois se não estiver autorizado haverá uma
// mensagem de erro da SEFAZ
//array que irá conter os dados de retorno da SEFAZ
$aResposta = array();
//essa rotina deve rá ser repetida a cada hora até que o maxNSU retornado esteja contido no NSU da mensagem
//se estiver já foram baixadas todas as referencias a NFe, CTe e outros eventos da NFe e não a mais nada a buscar
//outro detalhe é que não adianta tentar buscar dados muito antigos o sistema irá informar que
//nada foi encontrado, porque a SEFAZ não mantêm os NSU em base de dados por muito tempo, em
//geral são mantidos apenas os dados dos últimos 15 dias.
//Os dados são retornados em formato ZIP dento do xml, mas no array os dados
//já são retornados descompactados para serem lidos
$xml = $nfe->sefazDistDFe('AN', $tpAmb, $cnpj, $ultNSU, $numNSU, $aResposta);
var_dump($xml);exit;
break;
case 'import_nfe_gov':
$chNFe = $routes['3'];
$validaNfe = ORM::for_table('app_fiscal_nfe_imported')
->select('*')
->where('key', $chNFe)
->find_many();
if (sizeof($validaNfe) > 0) {
echo "<br><br><div class='alert alert-danger'>Esta nota já foi importada!</div>";
return;
}
require_once $dir . '/nfephp/bootstrap.php';
require_once $dir . '/controllers/config_nota.php';
require_once $dir . '/controllers/criaDataXML.php';
$listaConfigApp = ORM::for_table('app_fiscal_config')->find_many();
foreach ($listaConfigApp as $da) {
$dataCompany[$da['key']] = $da['value'];
}
$nfe = new NFePHP\NFe\ToolsNFe(geraConfig($dataCompany, 'Nfe'));
$nfe->setModelo('55');
$cnpj = str_replace('/', '', str_replace('-', '', str_replace('.', '', $dataCompany['company_cnpj'])));
$aResposta = array();
$tpAmb = ($dataCompany['note_environment'] == 'homologacao') ? 2 : 1;
$aResposta = array();
$resp = $nfe->sefazDownload($chNFe, $tpAmb, $cnpj, $aResposta);
$xml_Nfe = new criaDataXML();
$retorno = $xml_Nfe->trataRetorno($aResposta);
// $make->insDadosXML();
if ($retorno == "Manifest") {
$xJust = '';
$tpEvento = '210210'; //ciencia da operação
$xml = $nfe->sefazManifesta($chNFe, $tpAmb, $xJust = '', $tpEvento, $aResposta);
$resp = $nfe->sefazDownload($chNFe, $tpAmb, $cnpj, $aResposta);
$retorno = trataRetorno($aResposta);
}
echo $retorno . "<br><br>";
if (strpos($retorno, "sucesso")) {
if (sizeof($xml_Nfe->product_inseted) > 0) {
echo "<div class='alert alert-success'>Produtos inseridos:<br><br>";
$i = 1;
echo "<ul>";
while ($i <= sizeof($xml_Nfe->product_inseted)) {
echo "<li>" . $xml_Nfe->product_inseted[$i] . "</li>";
$i++;
}
echo "<ul></div>";
} else {
echo "<div class='alert alert-success'>Todos os produtos presentes na nota já haviam no sistema, não houveram inserções, mas o estoque foi atualizado de acordo com as quantidades presentes na nota.</div>";
}
$controle_nfe = ORM::for_table('app_fiscal_nfe_imported')
->create();
$controle_nfe->key = $chNFe;
$controle_nfe->save();
}
break;
case 'add':
// Include list.tpl file from views/add.tpl
$ui->assign('_include', 'add');
// Wrap the Contents & Display The Page
$ui->display('wrapper.tpl');
break;
case 'add_post':
// Grab the data from Previous Page
$title = _post('title');
$contents = _post('contents');
if ($title == '') {
r2(U . 'notes/init/add/', 'e', 'Note Title is Required');
}
// We want to store data to app_notes table
$note = ORM::for_table('app_notes')->create();
// Set data for title column
$note->title = $title;
// Set data for contents column
$note->contents = $contents;
// Finally Store the data
$note->save();
// All done, Let's redirect the user to list notes
r2(U . 'notes/init/list/', 's', 'Note Added Successfully');
break;
case 'edit':
// Get note id from the URL
$id = $routes['3'];
// Find note by id
$note = ORM::for_table('app_notes')->find_one($id);
// Assign Note for views
$ui->assign('note', $note);
// Include edit.tpl file from views/edit.tpl
$ui->assign('_include', 'edit');
// Wrap the Contents & Display The Page
$ui->display('wrapper.tpl');
break;
case 'edit_post':
// Grab the data from Previous Page
$id = _post('id');
// Find the note by id
$note = ORM::for_table('app_notes')->find_one($id);
if (!$note) {
r2(U . 'notes/init/list/', 'e', 'Note Not Found');
}
$title = _post('title');
$contents = _post('contents');
if ($title == '') {
r2(U . 'notes/init/edit/' . $id . '/', 'e', 'Note Title is Required');
}
// Set New data for note title
$note->title = $title;
// Set data for note contents
$note->contents = $contents;
// Finally Store the data
$note->save();
// All done, Let's redirect the user and show that Note Updated
r2(U . 'notes/init/edit/' . $id . '/', 's', 'Note Edited Successfully');
break;
case 'delete':
// Get note id from the URL
$id = $routes['3'];
// Find note by id
$note = ORM::for_table('app_notes')->find_one($id);
// Delete Note
if ($note) {
$note->delete();
}
// Done, Let's Redirect the User to the List Notes
r2(U . 'notes/init/list/', 's', 'Note Deleted Successfully');
break;
default:
echo 'action not defined';
}