<?php
	define('_VALID_PHP', true);
	header('Content-Type: text/html; charset=utf-8');

	require('init.php');
	require_once __DIR__ . '/vendor/autoload.php';
	use Ramsey\Uuid\Uuid;

	$id_venda = intval(get('id_venda'));
	$row_vendas = Core::getRowById("vendas", $id_venda);

	if (!empty($row_vendas->uuid)) {
		$uuid_venda = $row_vendas->uuid;
	} else {
		$uuid_venda = Uuid::uuid4();
		$data = array(
			'uuid' => $uuid_venda,
		);
		$db->update("vendas", $data, "id=" . $id);
	}

	$id_caixa = intval(get('id_caixa'));
	$historico = intval(get('historico'));

	$total_dinheiro = get('total_dinheiro');

	$dentroPrazoCancelamento = !(strtotime($row_vendas->data_emissao . ' +30 minutes') < strtotime(date('Y-m-d H:i:s')));;

	if (!$dentroPrazoCancelamento) {
		Filter::$msgs['prazo_cancelamento'] = lang('MSG_ERRO_CANCELAR_NFCE');
	}

	if ($id_caixa == 0 and $total_dinheiro > 0) {
		if (empty($GET['id_banco']))
            Filter::$msgs['id_banco'] = lang('MSG_ERRO_BANCO');
	}

	if ($row_vendas->venda_agrupamento==0) {
		Filter::$msgs['venda_agrupamento'] = "ERRO! Falha na tentativa de concelamento da NFC-e Agrupamento/Lote";
	}

	if (empty(Filter::$msgs)) {
		$NFCe_cancelado = false;
		$row_empresa = Core::getRowById("empresa", $row_vendas->id_empresa);
		$cnpj_emissor = $row_empresa->cnpj;

		if ($core->emissor_producao) {
			$ambiente = 'Producao'; //'Producao' ou 'Homologacao'
			$idExterno = ($row_empresa->versao_emissao == 0) ? 'nfce-' . $id_venda : 'nfce' . $row_empresa->versao_emissao . '-' . $id_venda;
		} else {
			echo "</br>--- --- --- --- AMBIENTE DE HOMOLOGAÇÃO --- --- --- ---</br>";
			$ambiente = 'Homologacao'; //'Producao' ou 'Homologacao'
			$idExterno = ($row_empresa->versao_emissao == 0) ? 'Hnfce-' . $id_venda : 'Hnfce' . $row_empresa->versao_emissao . '-' . $id_venda;
		}

		try {
			$cupom_cancelado = getCancelarNFC($cnpj_emissor, $idExterno, $uuid_venda);

			if ($cupom_cancelado['sucesso']) {
		        $NFCe_cancelado = $cadastro->atualizarCupom_Sigesis($id_venda, $cnpj_emissor, $idExterno);
			} else {
				$retorno = $cupom_cancelado['errors'];
				foreach ($retorno['estado_emissao'] as $erro) {
					echo $erro . "<br>";
				}

				$data = array(
					'uuid' => Uuid::uuid4(),
				);
				$db->update("vendas", $data, "id=" . $id_venda);

				$retorno_consulta = $cadastro->getConsultarNFC($cnpj_emissor,$idExterno);
				$dados_emissao = $retorno_consulta['data'];

				if ($dados_emissao['estado_emissao'] == "cancelado"){
					$NFCe_cancelado = $cadastro->atualizarCupom_Sigesis($id_venda, $cnpj_emissor, $idExterno);
				}
			}
		} catch (Exception $e) {
			// NF0001 - Código de cupom já status cancelado
			if ($e->errors[0]->codigo == 'NF0001') {
				echo lang('CADASTRO_APAGAR_VENDA_FISCAL_OK');
				$NFCe_cancelado = $cadastro->atualizarCupom_Sigesis($id_venda, $cnpj_emissor, $idExterno);
			} else {
				echo $e->getMessage();

				$data = array(
					'uuid' => Uuid::uuid4(),
				);
				$db->update("vendas", $data, "id=" . $id_venda);
			}
		}

		if ($NFCe_cancelado) {
			$data_geral = array(
					'inativo' => 1,
					'usuario' => session('nomeusuario'),
					'data' => "NOW()"
			);
			$db->update("vendas", $data_geral, "id=".$id_venda);

			$data_vendas_agrupadas = array(
				'venda_agrupada' => 0,
				'fiscal' => 0
			);
			$db->update("vendas", $data_vendas_agrupadas, "venda_agrupada=".$id_venda);

			$db->update("cadastro_vendas", $data_geral, "id_venda=".$id_venda);
			$db->update("cadastro_financeiro", $data_geral, "id_venda=".$id_venda);

			echo lang('VENDAS_CANCELAR_AGRUPAMENTO_OK');
		}
	} else
        print Filter::msgStatus();

	function getCancelarNFC($cnpj_emissor, $idExterno, $uuid_venda)
	{
		$curl = curl_init();
		$url = "https://fiscal.sigesis.com.br/api/v1/nfce/cancelar?id_externo=" . $idExterno;

		curl_setopt_array($curl, array(
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => "POST",
			CURLOPT_HTTPHEADER => array(
				"Content-Type: application/json",
				"Accept: application/json",
				"X-CNPJ:" . $cnpj_emissor,
				"X-Idempotency-Key: " . $uuid_venda,
			),
		));
		$response = curl_exec($curl);

		curl_close($curl);
		return json_decode($response, true);
	}
?>