cliente){
$razaoSocial = $this->cliente->info;
}
if($this->fornecedor){
$razaoSocial = $this->fornecedor->info;
}
return $this->numero_sequencial . " - " . $razaoSocial . " | R$" . __moeda($this->total);
}
public function getFinNFe()
{
if ($this->finNFe == 1) {
return 'NFe normal';
} else if ($this->finNFe == 1) {
return 'NFe complementar';
} else if ($this->finNFe == 1) {
return 'NFe de ajuste';
} else {
return 'Devolução de mercadoria';
}
}
public function funcionario()
{
return $this->belongsTo(Funcionario::class, 'funcionario_id');
}
public function estadoSeparacao(){
$ordemSeparacao = $this->ordemSeparacao;
if(!$ordemSeparacao){
return "--";
}
$statusMap = [
'em_separacao' => 'Em Separação',
'finalizado' => 'Finalizado',
'cancelado' => 'Cancelado',
];
return $statusMap[$ordemSeparacao->status];
}
public function ordemSeparacao()
{
return $this->hasOne(OrdemSeparacao::class, 'nfe_id');
}
public function vendedor()
{
$funcionario = Funcionario::find($this->funcionario_id);
if ($funcionario != null) return $funcionario->nome;
else return '--';
}
public function caixa()
{
return $this->belongsTo(Caixa::class, 'caixa_id');
}
public function outroEstado()
{
if(!$this->cliente) return 0;
if($this->cliente->cidade->uf != $this->empresa->cidade->uf){
return 1;
}
return 0;
}
public function cliente()
{
return $this->belongsTo(Cliente::class, 'cliente_id');
}
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
public function fornecedor()
{
return $this->belongsTo(Fornecedor::class, 'fornecedor_id');
}
public function cidadeEntrega()
{
return $this->belongsTo(Cidade::class, 'cidade_id_entrega');
}
public function localizacao()
{
return $this->belongsTo(Localizacao::class, 'local_id');
}
public function natureza()
{
return $this->belongsTo(NaturezaOperacao::class, 'natureza_id');
}
public function transportadora()
{
return $this->belongsTo(Transportadora::class, 'transportadora_id');
}
public function empresa()
{
return $this->belongsTo(Empresa::class, 'empresa_id');
}
public function manifesto()
{
return $this->hasOne(ManifestoDfe::class, 'compra_id');
}
public function pedidoMercadoLivre()
{
return $this->hasOne(PedidoMercadoLivre::class, 'nfe_id');
}
public function pedidoNuvemShop()
{
return $this->hasOne(NuvemShopPedido::class, 'nfe_id');
}
public function pedidoWoocomerce()
{
return $this->hasOne(WoocommercePedido::class, 'nfe_id');
}
public function reserva()
{
return $this->hasOne(Reserva::class, 'nfe_id');
}
public function pedidoEcommerce()
{
return $this->hasOne(PedidoEcommerce::class, 'nfe_id');
}
public function ordemServico()
{
return $this->hasOne(OrdemServico::class, 'nfe_id');
}
public function itens()
{
return $this->hasMany(ItemNfe::class, 'nfe_id')->with(['produtoVariacao', 'produto']);
}
public function produtoUnicos()
{
return $this->hasMany(ProdutoUnico::class, 'nfe_id');
}
public function fatura()
{
return $this->hasMany(FaturaNfe::class, 'nfe_id');
}
public function contasReceber()
{
return $this->hasMany(ContaReceber::class, 'nfe_id');
}
public function contaReceber()
{
return $this->hasMany(ContaReceber::class, 'nfe_id');
}
public function troca()
{
return $this->hasMany(Troca::class, 'nfe_id');
}
public static function lastNumero($empresa)
{
if ($empresa->ambiente == 2) {
return $empresa->numero_ultima_nfe_homologacao + 1;
} else {
return $empresa->numero_ultima_nfe_producao + 1;
}
}
public static function tiposPagamento()
{
return [
'01' => 'Dinheiro',
'02' => 'Cheque',
'03' => 'Cartão de Crédito',
'04' => 'Cartão de Débito',
'05' => 'Crédito Loja',
'06' => 'Crediário',
'10' => 'Vale Alimentação',
'11' => 'Vale Refeição',
'12' => 'Vale Presente',
'13' => 'Vale Combustível',
'14' => 'Duplicata Mercantil',
'15' => 'Boleto Bancário',
'16' => 'Depósito Bancário',
'17' => 'Pagamento Instantâneo (PIX)',
'18' => 'Transferência bancária, Carteira Digital',
'19' => 'Programa de fidelidade, Cashback, Crédito Virtual',
// '20' => 'Pagamento Instantâneo (PIX) – Estático',
// '21' => 'Crédito em Loja',
// '22' => 'Pagamento Eletrônico não Informado - falha de hardware do sistema emissor',
'90' => 'Sem Pagamento',
// '99' => 'Outros',
];
}
public static function tiposFrete()
{
return [
'9' => 'Sem Ocorrência de Transporte',
'0' => 'Contratação do Frete por Conta do Remetente (CIF)',
'1' => 'Contratação do Frete por Conta do Destinatário (FOB)',
'2' => 'Contratação do Frete por Conta de Terceiro',
'3' => 'Transporte Próprio por Conta do Remetente',
'4' => 'Transporte Próprio por Conta do Destintário'
];
}
public static function getTipoPagamentoNFe($tipo)
{
$values = [
'Dinheiro' => '01',
'Cheque' => '02',
'Cartão de Crédito' => '03',
'Cartão de Débito' => '04',
'Crédito Loja' => '05',
'Crediário' => '06',
'Vale Alimentação' => '10',
'Vale Refeição' => '11',
'Vale Presente' => '12',
'Vale Combustível' => '13',
'Duplicata Mercantil' => '14',
'Boleto Bancário' => '15',
'Depósito Bancário' => '16',
'Pagamento Instantâneo (PIX)' => '17',
'Sem Pagamento' => '90',
// 'Outros' => '99',
];
try {
return $values[$tipo];
} catch (\Exception $e) {
return $values["Dinheiro"];
}
}
public static function getTipo($tipo)
{
if (isset(Nfe::tiposPagamento()[$tipo])) {
return Nfe::tiposPagamento()[$tipo];
} else {
return "Não identificado";
}
// $tipos = Venda::tiposPagamento();
// return $tipos[$tipo];
}
public function getTipoPagamento()
{
foreach (Nfe::tiposPagamento() as $key => $t) {
if ($this->tipo_pagamento == $key) return $t;
}
}
public function isItemValidade ()
{
foreach($this->itens as $i){
if($i->produto->alerta_validade > 0)
return 1;
}
return 0;
}
public static function getEstadoImport($estado){
if($estado == 'DISPONIVEL') return 'novo';
else if($estado == 'REJEITADO') return 'rejeitado';
else if($estado == 'CANCELADO') return 'cancelado';
else if($estado == 'APROVADO') return 'aprovado';
else return $estado;
}
public static function getTiposViaTransp(){
return [
'1' => 'Marítima',
'2' => 'Fluvial',
'3' => 'Lacustre',
'4' => 'Aérea',
'5' => 'Postal',
'6' => 'Ferroviária',
'7' => 'Rodoviária',
'8' => 'Conduto/Rede transmissão',
'9' => 'Meios próprios',
'10' => 'Entrada/Saída ficta',
'11' => 'Courier',
'12' => 'Em mãos',
'13' => 'Por reboque'
];
}
public static function getTiposIntermedio(){
return [
'1' => 'Importação por conta própria',
'2' => 'Importação por conta e ordem',
'3' => 'Importação por encomenda'
];
}
}