private void GerarRemessa(TRegistro_CargaAvulsa rCarga) { CamadaDados.Diversos.TList_CfgEmpresa lCfgEmpresa = CamadaNegocio.Diversos.TCN_CfgEmpresa.Buscar(rCarga.Cd_empresa, null); if (lCfgEmpresa.Count.Equals(0)) { MessageBox.Show("Não existe configuração parâmetro Empresa: " + rCarga.Cd_empresa, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed = null; try { Proc_Commoditties.TProcessaPedidoCargaAvulsa.GerarPedidoCarga(ref rPed, rCarga, lCfgEmpresa[0]); CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Grava_Pedido(rPed, null); //Buscar pedido rPed = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca_Registro_Pedido(rPed.Nr_pedido.ToString(), null); //Buscar itens pedido CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca_Pedido_Itens(rPed, false, null); for (int i = 0; i < rCarga.lItens.Count; i++) { rPed.Pedido_Itens[i].lItensCargaAvulsa.Add(rCarga.lItens[i]); } //Gerar Nota Fiscal TRegistro_LanFaturamento rFat = Proc_Commoditties.TProcessaPedFaturar.ProcessaPedFaturar(rPed, false, decimal.Zero); //Gravar Nota Fiscal TCN_LanFaturamento.GravarFaturamento(rFat, null, null); using (srvNFE.TFGerenciarNFe fGerNfe = new srvNFE.TFGerenciarNFe()) { fGerNfe.rNfe = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.BuscarNF(rFat.Cd_empresa, rFat.Nr_lanctofiscalstr, null); fGerNfe.ShowDialog(); } } catch (Exception ex) { if (rPed != null) { CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(rPed, null); } MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public static void DevolverNF(TRegistro_LanFaturamento val) { if (val != null) { //Verificar se Nf é de devolução if (new TCD_LanFat_ComplementoDevolucao().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + val.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.NR_LanctoFiscal_Destino", vOperador = "=", vVL_Busca = val.Nr_lanctofiscalstr } }, "1") != null) { MessageBox.Show("Não é possivel devolver NF Devolução!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } using (TFDevolverNF fDev = new TFDevolverNF()) { fDev.rNf = val; if (fDev.ShowDialog() == DialogResult.OK) { if (fDev.rNf != null) { try { TRegistro_LanFaturamento rFat = GerarDevolucao(fDev.rNf); TCN_LanFaturamento.GravarFaturamento(rFat, null, null); //Enviar NFe Destino if (rFat != null) { //Buscar nota fiscal de destino TRegistro_LanFaturamento rNf = TCN_LanFaturamento.BuscarNF(rFat.Cd_empresa, rFat.Nr_lanctofiscalstr, null); //Se for nota propria e NF-e if (rNf.Tp_nota.Trim().ToUpper().Equals("P") && rNf.Cd_modelo.Trim().Equals("55")) { if (MessageBox.Show("Deseja enviar NF-e Devolução para a receita agora?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { try { using (srvNFE.TFGerenciarNFe fGerNfe = new srvNFE.TFGerenciarNFe()) { fGerNfe.rNfe = rNf; fGerNfe.ShowDialog(); } } catch (Exception ex) { MessageBox.Show("Erro enviar NF-e: " + ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } }
public static void GravarDevAquisicao(TRegistro_DevAquisicao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; if (banco == null) { banco = new BancoDados.TObjetoBanco(); banco.CriarConexao(Parametros.pubLogin, Parametros.pubNM_Servidor, Parametros.pubNM_BancoDados); banco.CriarComando(); banco.Conexao.Open(); banco.Start_Tran(System.Data.IsolationLevel.ReadCommitted); banco.Comando.Transaction = banco.Transac; st_transacao = true; } try { #region Nota_Fiscal_Origem val.rNfOrigem.Nr_pedido = val.Contrato_devolucao[0].Nr_pedido; val.rNfOrigem.Cd_clifor = val.Contrato_Origem.Cd_clifor; val.rNfOrigem.Cd_cmi = val.Contrato_Origem.Pedido_Fiscal[0].Cd_cmi; val.rNfOrigem.Cd_cmistring = val.Contrato_Origem.Pedido_Fiscal[0].Cd_cmistring;; val.rNfOrigem.Cd_condfiscal_clifor = string.Empty; val.rNfOrigem.Cd_condpgto = val.Contrato_Origem.CD_CondPGTO; val.rNfOrigem.Cd_empresa = val.Contrato_Origem.Cd_empresa; val.rNfOrigem.Cd_endereco = val.Contrato_Origem.Cd_endereco; val.rNfOrigem.Cd_modelo = val.Contrato_Origem.Pedido_Fiscal[0].Cd_modelo; val.rNfOrigem.Cd_movimentacao = val.Contrato_Origem.Pedido_Fiscal[0].Cd_movto; if (val.Duplicata_Origem.Count > 0) { val.rNfOrigem.Duplicata = val.Duplicata_Origem; } //Criar itens da nota fiscal TRegistro_LanFaturamento_Item Reg_Itens_Nota = new TRegistro_LanFaturamento_Item(); Reg_Itens_Nota.Cd_produto = val.Contrato_devolucao[0].Cd_produto; Reg_Itens_Nota.lNfcompdev = val.Devolucao; Reg_Itens_Nota.Quantidade = val.Quantidade; Reg_Itens_Nota.Vl_unitario = val.Vl_unit_origem; Reg_Itens_Nota.Cd_local = val.Contrato_devolucao[0].CD_Local; Reg_Itens_Nota.Vl_subtotal = val.Vl_subtotal_origem; Reg_Itens_Nota.Id_pedidoitem = val.Contrato_Origem.Id_pedidoitem.Value; Reg_Itens_Nota.Nr_pedido = val.Contrato_Origem.Nr_pedido.Value; CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null; if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfOrigem.Cd_movimentacaostring, val.Contrato_devolucao[0].Cd_condfiscal_produto, val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "I" : val.Contrato_Origem.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim()) ? "D" : "F", val.Reg_Empresa_Origem.rEndereco.Cd_uf, val.Contrato_Origem.CD_UFClifor, val.rNfOrigem.Tp_movimento, val.Reg_Clifor_Origem.Cd_condfiscal_clifor, val.Reg_Empresa_Origem.Cd_empresa, ref rCfop, banco)) { Reg_Itens_Nota.Cd_cfop = rCfop.CD_CFOP; Reg_Itens_Nota.Ds_cfop = rCfop.DS_CFOP; Reg_Itens_Nota.St_bonificacao = rCfop.St_bonificacaobool; } else { throw new Exception("Não existe CFOP " + (val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Contrato_Origem.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfOrigem.Cd_movimentacaostring + " condição fiscal do produto " + val.Contrato_devolucao[0].Cd_condfiscal_produto); } Reg_Itens_Nota.Cd_unidade = val.Contrato_Origem.Cd_unidade; Reg_Itens_Nota.Cd_unidEst = val.Contrato_Origem.Cd_unid_produto; //Procurar Impostos Estaduais para o Item string vObsFiscal = string.Empty; TList_ImpostosNF lImpostos = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Origem.Cd_empresa, val.Reg_Empresa_Origem.rEndereco.Cd_uf, val.Contrato_Origem.CD_UFClifor, val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring, val.rNfOrigem.Tp_movimento, val.Reg_Clifor_Origem.Cd_condfiscal_clifor, val.Reg_Produto_Origem.CD_CondFiscal_Produto, val.Vl_subtotal_origem, val.Quantidade, ref vObsFiscal, val.rNfOrigem.Dt_emissao, val.Reg_Produto_Origem.CD_Produto, val.rNfOrigem.Tp_nota, val.rNfOrigem.Nr_serie, banco); if (lImpostos.Count > 0) { TCN_LanFaturamento_Item.PreencherICMS(lImpostos[0], Reg_Itens_Nota); val.rNfOrigem.Obsfiscal += string.IsNullOrEmpty(val.rNfOrigem.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim(); } else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfOrigem.Nr_serie, banco)) { throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" + "Tipo Movimento: " + (val.rNfOrigem.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" + "Movimentação Comercial: " + val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Origem.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" + "Condição Fiscal Clifor: " + val.Reg_Clifor_Origem.Cd_condfiscal_clifor + "\r\n" + "Condição Fiscal Produto: " + val.Reg_Produto_Origem.CD_CondFiscal_Produto + "\r\n" + "UF Origem: " + val.Reg_Empresa_Origem.rEndereco.Cd_uf + "\r\n" + "UF Destino: " + val.Contrato_Origem.CD_UFClifor); } //Procurar impostos sobre os itens da nota fiscal de origem TCN_LanFaturamento_Item.PreencherOutrosImpostos( TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Origem.Cd_condfiscal_clifor, val.Reg_Produto_Origem.CD_CondFiscal_Produto, val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring, val.rNfOrigem.Tp_movimento, val.Reg_Clifor_Origem.Tp_pessoa, val.Contrato_devolucao[0].CD_Empresa, val.Contrato_Origem.Pedido_Fiscal[0].Nr_serie, val.Reg_Clifor_Origem.Cd_clifor, val.Reg_Produto_Origem.CD_Unidade, val.Dt_lancto, Reg_Itens_Nota.Quantidade, Reg_Itens_Nota.Vl_subtotal, val.rNfOrigem.Tp_nota, string.Empty, banco), Reg_Itens_Nota, val.rNfOrigem.Tp_movimento); //Gerar observacao para o item //Observação do Item com os dados das notas de origem string obsitem = string.Empty; val.Devolucao.ForEach(p => { obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') + (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) + Reg_Itens_Nota.Sigla_unidade_estoque.Trim()).FormatStringDireita(15, ' ') + p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n"; }); Reg_Itens_Nota.Observacao_item += "NF/Serie Origem Quantidade Valor(R$)\r\n" + obsitem; //Adicionar item a nota fiscal de origem val.rNfOrigem.ItensNota.Add(Reg_Itens_Nota); //Gravar nota fiscal de origem TCN_LanFaturamento.GravarFaturamento(val.rNfOrigem, null, banco); val.Contrato_devolucao[0].NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value; #endregion #region Nota_Fiscal_Destino val.rNfDestino.Nr_pedido = val.Contrato_compra[0].Nr_pedido; val.rNfDestino.Cd_clifor = val.Contrato_Destino.Cd_clifor; val.rNfDestino.Cd_cmi = val.Contrato_Destino.Pedido_Fiscal[0].Cd_cmi; val.rNfDestino.Cd_cmistring = val.Contrato_Destino.Pedido_Fiscal[0].Cd_cmistring;; val.rNfDestino.Cd_condpgto = val.Contrato_Destino.CD_CondPGTO; val.rNfDestino.Cd_empresa = val.Contrato_Destino.Cd_empresa; val.rNfDestino.Cd_endereco = val.Contrato_Destino.Cd_endereco; val.rNfDestino.Cd_modelo = val.Contrato_Destino.Pedido_Fiscal[0].Cd_modelo; val.rNfDestino.Cd_movimentacao = val.Contrato_Destino.Pedido_Fiscal[0].Cd_movto; if (val.Duplicata_Destino.Count > 0) { val.rNfDestino.Duplicata = val.Duplicata_Destino; } //Registro item da nota fiscal de destino TRegistro_LanFaturamento_Item Reg_Itens_Nota_Destino = new TRegistro_LanFaturamento_Item(); if (val.Contrato_compra[0].CD_Unidade_Est.Equals(val.Contrato_devolucao[0].CD_Unidade_Est)) { Reg_Itens_Nota_Destino.Quantidade = val.Quantidade; } else { Reg_Itens_Nota_Destino.Quantidade = TCN_CadConvUnidade.ConvertUnid(val.Contrato_compra[0].CD_Unidade_Est, val.Contrato_devolucao[0].CD_Unidade_Est, val.Quantidade, 3, banco); } Reg_Itens_Nota_Destino.Cd_produto = val.Contrato_compra[0].Cd_produto; Reg_Itens_Nota_Destino.Vl_unitario = val.Vl_unit_destino; Reg_Itens_Nota_Destino.Cd_local = val.Contrato_compra[0].CD_Local; Reg_Itens_Nota_Destino.Vl_subtotal = val.Vl_subtotal_destino; Reg_Itens_Nota_Destino.Id_pedidoitem = val.Contrato_Destino.Id_pedidoitem; Reg_Itens_Nota_Destino.Nr_pedido = val.Contrato_Destino.Nr_pedido.Value; rCfop = null; if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfDestino.Cd_movimentacaostring, val.Contrato_compra[0].Cd_condfiscal_produto, val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "I": val.Contrato_Destino.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim()) ? "D" : "F", val.Reg_Empresa_Destino.rEndereco.Cd_uf, val.Contrato_Destino.CD_UFClifor, val.rNfDestino.Tp_movimento, val.Reg_Clifor_Destino.Cd_condfiscal_clifor, val.Reg_Empresa_Destino.Cd_empresa, ref rCfop, banco)) { Reg_Itens_Nota_Destino.Cd_cfop = rCfop.CD_CFOP; Reg_Itens_Nota_Destino.Ds_cfop = rCfop.DS_CFOP; Reg_Itens_Nota_Destino.St_bonificacao = rCfop.St_bonificacaobool; } else { throw new Exception("Não existe CFOP " + (val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Contrato_Destino.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfDestino.Cd_movimentacaostring + " condição fiscal do produto " + val.Contrato_compra[0].Cd_condfiscal_produto); } Reg_Itens_Nota_Destino.Cd_unidade = val.Contrato_Destino.Cd_unidade; Reg_Itens_Nota_Destino.Cd_unidEst = val.Contrato_Destino.Cd_unid_produto; //Procurar Impostos Estaduais para o Item vObsFiscal = string.Empty; TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Destino.Cd_empresa, val.Reg_Empresa_Destino.rEndereco.Cd_uf, val.Contrato_Destino.CD_UFClifor, val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring, val.rNfDestino.Tp_movimento, val.Reg_Clifor_Destino.Cd_condfiscal_clifor, val.Reg_Produto_Destino.CD_CondFiscal_Produto, val.Vl_subtotal_destino, val.Quantidade, ref vObsFiscal, val.rNfDestino.Dt_emissao, val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Tp_nota, val.rNfDestino.Nr_serie, banco); if (lImpUf.Exists(v => v.Imposto.St_ICMS)) { TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota_Destino); val.rNfDestino.Obsfiscal += string.IsNullOrEmpty(val.rNfDestino.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim(); } else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Nr_serie, banco)) { throw new Exception("Não existe configuração fiscal para o imposto ICMS: \r\n" + "Tipo Movimento: " + (val.rNfDestino.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" + "Movimentação Comercial: " + val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Destino.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" + "Condição Fiscal Clifor: " + val.Reg_Clifor_Destino.Cd_condfiscal_clifor + "\r\n" + "Condição Fiscal Produto: " + val.Reg_Produto_Destino.CD_CondFiscal_Produto + "\r\n" + "UF Origem: " + val.Reg_Empresa_Destino.rEndereco.Cd_uf + "\r\n" + "UF Destino: " + val.Contrato_Destino.CD_UFClifor); } //Procurar impostos sobre os itens da nota fiscal de destino TCN_LanFaturamento_Item.PreencherOutrosImpostos( TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Destino.Cd_condfiscal_clifor, val.Reg_Produto_Destino.CD_CondFiscal_Produto, val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring, val.rNfDestino.Tp_movimento, val.Reg_Clifor_Destino.Tp_pessoa, val.Contrato_compra[0].CD_Empresa, val.Contrato_Destino.Pedido_Fiscal[0].Nr_serie, val.Reg_Clifor_Destino.Cd_clifor, val.Reg_Produto_Destino.CD_Unidade, val.Dt_lancto, Reg_Itens_Nota_Destino.Quantidade, Reg_Itens_Nota_Destino.Vl_subtotal, val.rNfDestino.Tp_nota, string.Empty, banco), Reg_Itens_Nota_Destino, val.rNfDestino.Tp_movimento); val.rNfDestino.ItensNota.Add(Reg_Itens_Nota_Destino); //Gravar Nota Fiscal Destino TCN_LanFaturamento.GravarFaturamento(val.rNfDestino, null, banco); val.Contrato_compra[0].NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value; #endregion if (st_transacao) { banco.Transac.Commit(); } } catch (Exception ex) { if (st_transacao) { banco.Transac.Rollback(); } throw new Exception("Erro gravar devolução/aquisição: " + ex.Message.Trim()); } finally { if (st_transacao) { if (banco.Conexao.State == System.Data.ConnectionState.Open) { banco.Conexao.Close(); } banco = null; } } }
public static string GravarAplicacaoPedido(string CD_Empresa, decimal saldoAplicar, TRegistro_LanFaturamento rNotaFiscal, TObjetoBanco banco) { TCD_LanAplicacaoPedido qtb_aplic = new TCD_LanAplicacaoPedido(); bool pode_liberar = false; try { //Start Transação if (banco == null) { pode_liberar = qtb_aplic.CriarBanco_Dados(true); } else { qtb_aplic.Banco_Dados = banco; } //Gravar Notas Fiscais da Aplicacao if (rNotaFiscal == null) { throw new Exception("Erro processar aplicação. Não existe nota para processar."); } if ((rNotaFiscal.Nr_pedido == null) || (rNotaFiscal.Nr_pedido == 0)) { throw new Exception("ERRO: Não existe pedido informado para a nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString()); } rNotaFiscal.ItensNota.ForEach(p => { if (p.Nr_pedido.Equals(0)) { throw new Exception("ERRO: Não existe pedido informado para o item: " + p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim() + " da nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString()); } if ((p.Id_pedidoitem == null) || (p.Id_pedidoitem == 0)) { throw new Exception("ERRO: Não existe item de pedido informado para o item: " + p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim() + " da nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString()); } TRegistro_EntregaPedido rgent = new TRegistro_EntregaPedido() { Id_entrega = null, Nr_pedido = p.Nr_pedido, Cd_produto = p.Cd_produto, Id_pedidoitem = p.Id_pedidoitem, Qtd_entregue = p.Quantidade_estoque > 0 ? p.Quantidade_estoque : p.Quantidade, Dt_entrega = rNotaFiscal.Dt_saient, Ds_observacao = "ENTREGA GRAVADA AUTOMATICAMENTE PELA APLICACAO" }; rgent.Id_entregastr = TCN_LanEntregaPedido.Gravar(rgent, qtb_aplic.Banco_Dados); //ADICIONAR A ENTREGA NA NOTAITEM PARA SER UTILIZADA NO PROCESSAMENTO DA NOTA //QUANDO FOR APLICACAO A ENTREGA A SER CUMPRIDA OBRIGATORIAMENTE SERA A GRAVADA ACIMA E NAO OUTRAS COM SALDO DISPONIVEL p.lEntrega = new TList_EntregaPedido(); p.lEntrega.Add(rgent); }); //Grava Nota Fiscal //gravar taxas de deposito separado da nota string retorno = TCN_LanFaturamento.GravarFaturamento(rNotaFiscal, false, null, qtb_aplic.Banco_Dados); //Para cada item da nota fiscal, gravar um registro aplicacao rNotaFiscal.ItensNota.ForEach(p => { if (p.rEstoque == null) { throw new Exception("Aplicação não pode ser processada. Não foi possivel gerar estoque."); } p.lTicketAplicar.ForEach(v => { TRegistro_LanAplicacaoPedido val = new TRegistro_LanAplicacaoPedido(); //Gravar Aplicação val.Cd_empresa = p.Cd_empresa; val.Id_ticket = v.Id_ticket.Value; val.Tp_pesagem = v.Tp_pesagem; val.Nr_pedido = p.Nr_pedido; val.Cd_produto = p.Cd_produto; val.Id_pedidoitem = p.Id_pedidoitem.Value; val.Id_lanctoestoque = p.rEstoque.Id_lanctoestoque; val.Qtd_aplicado = v.Ps_Aplicar; val.Vl_unitario = TCN_CadConvUnidade.ConvertUnid(v.Cd_unid_produto, v.Cd_unid_contrato, v.Vl_unit_contrato, 7, qtb_aplic.Banco_Dados); val.Vl_subtotal = Math.Round(v.Ps_Aplicar * val.Vl_unitario, 2); val.Id_aplicacao = null; val.Id_autoriz = v.Id_autoriz; string retorno_aplicacao = qtb_aplic.Gravar(val); retorno = retorno + "|" + retorno_aplicacao; val.Id_aplicacao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno_aplicacao, "@P_ID_APLICACAO")); //Gravar Aplicação X Nota Fiscal retorno = retorno + "|" + TCN_LanAplicacao_NotaFiscal.GravarAplicacaoXNotaFiscal( new TRegistro_LanAplicacao_NotaFiscal() { Cd_empresa = val.Cd_empresa, Id_aplicacao = val.Id_aplicacao, Id_nfitem = p.Id_nfitem, Nr_lanctofiscal = p.Nr_lanctofiscal }, qtb_aplic.Banco_Dados); }); //Gravar Movimento Deposito TCN_MovDeposito.GravarMovDeposito(new TRegistro_MovDeposito() { Id_Movto = 0, Nr_Pedido = p.Nr_pedido, CD_Produto = p.Cd_produto, CD_Empresa = p.Cd_empresa, Id_LanctoEstoque = p.rEstoque.Id_lanctoestoque, Id_pedidoitem = p.Id_pedidoitem.Value }, qtb_aplic.Banco_Dados); //Gravar Pesagem GMO CamadaNegocio.Graos.TCN_LanRoyaltiesGMO.GravaPesagemGMO(p, rNotaFiscal.Tp_movimento, qtb_aplic.Banco_Dados); //Contrato Entrada a Fixar TRegistro_CadCFGPedido rCfg = new TCD_CadCFGPedido(qtb_aplic.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_pedido x " + "where x.cfg_pedido = a.cfg_pedido " + "and x.nr_pedido = " + p.Nr_pedido.ToString() + ")" } }, 1, string.Empty)[0]; }); if (pode_liberar) { qtb_aplic.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (pode_liberar) { qtb_aplic.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar aplicação: " + ex.Message.Trim()); } finally { if (pode_liberar) { qtb_aplic.deletarBanco_Dados(); } } }
public static string GravarFixacao(TRegistro_LanFixacao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LanFixacao qtb_fixacao = new TCD_LanFixacao(); try { if (banco == null) { st_transacao = qtb_fixacao.CriarBanco_Dados(true); } else { qtb_fixacao.Banco_Dados = banco; } //Gravar fixacao string retorno = qtb_fixacao.Gravar(val); val.Id_fixacao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_FIXACAO")); //Gravar Fixacao X Contrato TCN_Fixacao_X_Contrato.Gravar(new TRegistro_Fixacao_X_Contrato() { Id_fixacao = val.Id_fixacao, Nr_contrato = val.Nr_contrato, }, qtb_fixacao.Banco_Dados); //Gravar nota fiscal de complemento val.lFixacaonf.ForEach(p => { if (p.rNfComplemento != null) { TCN_LanFaturamento.GravarFaturamento(p.rNfComplemento, null, qtb_fixacao.Banco_Dados); //Gravar Fixacao NF Complemento TRegistro_Fixacao_NF rFComp = new TRegistro_Fixacao_NF(); rFComp.Id_fixacao = val.Id_fixacao; rFComp.Id_fixacaonf = null; rFComp.Cd_empresa = p.rNfComplemento.Cd_empresa; rFComp.Nr_lanctofiscal = p.rNfComplemento.Nr_lanctofiscal; rFComp.Id_nfitem = p.rNfComplemento.ItensNota[0].Id_nfitem; rFComp.Qtd_fixacao = p.Qtd_fixacao; rFComp.Vl_complemento = decimal.Zero; rFComp.Vl_devolucao = decimal.Zero; rFComp.Vl_fixacao = p.Vl_fixacao; rFComp.Tp_nota = "C"; TCN_Fixacao_NF.GravarFixacaoNf(rFComp, qtb_fixacao.Banco_Dados); } //Gravar Fixacao NF Pauta p.Tp_nota = "P"; p.Id_fixacao = val.Id_fixacao; TCN_Fixacao_NF.GravarFixacaoNf(p, qtb_fixacao.Banco_Dados); }); //Gravar Nota Fiscal de Devolucao if (val.rNfDev != null) { TCN_LanFaturamento.GravarFaturamento(val.rNfDev, null, qtb_fixacao.Banco_Dados); TRegistro_Fixacao_NF rFDev = new TRegistro_Fixacao_NF(); rFDev.Id_fixacao = val.Id_fixacao; rFDev.Id_fixacaonf = null; rFDev.Cd_empresa = val.rNfDev.Cd_empresa; rFDev.Nr_lanctofiscal = val.rNfDev.Nr_lanctofiscal; rFDev.Id_nfitem = val.rNfDev.ItensNota[0].Id_nfitem; rFDev.Qtd_fixacao = val.lFixacaonf.Where(p => p.Vl_devolucao > decimal.Zero).Sum(p => p.Qtd_fixacao); rFDev.Vl_complemento = decimal.Zero; rFDev.Vl_devolucao = decimal.Zero; rFDev.Vl_fixacao = val.lFixacaonf.Where(p => p.Vl_devolucao > decimal.Zero).Sum(p => p.Vl_fixacao); rFDev.Tp_nota = "D"; //Gravar Fixacao NF Devolucao TCN_Fixacao_NF.GravarFixacaoNf(rFDev, qtb_fixacao.Banco_Dados); val.lFixacaonf.ForEach(p => { //Gravar Fixacao NF Pauta p.Tp_nota = "P"; p.Id_fixacao = val.Id_fixacao; TCN_Fixacao_NF.GravarFixacaoNf(p, qtb_fixacao.Banco_Dados); }); } //Gravar Financeiro Fixacao if (val.rDup != null) { val.rDup.Nr_docto = "RAP" + val.Id_fixacao.Value.ToString(); Financeiro.Duplicata.TCN_LanDuplicata.GravarDuplicata(val.rDup, false, qtb_fixacao.Banco_Dados); //Gravar Fixacao X Duplicata TCN_Fixacao_X_Duplicata.Gravar(new TRegistro_Fixacao_X_Duplicata() { Id_fixacao = val.Id_fixacao, Cd_empresa = val.rDup.Cd_empresa, Nr_lancto = val.rDup.Nr_lancto }, qtb_fixacao.Banco_Dados); if (ConfigGer.TCN_CadParamGer.BuscaVL_Bool("ST_CONTROLAR_GMO", val.rDup.Cd_empresa, qtb_fixacao.Banco_Dados).Trim().ToUpper().Equals("S")) { val.lFixacaonf.Where(p => p.Vl_complemento > decimal.Zero).ToList().ForEach(p => { //Gravar Retencao GMO TRegistro_SaldoNFGMO rSaldoNf = new TRegistro_SaldoNFGMO(); rSaldoNf.Cd_empresa = val.rDup.Cd_empresa; rSaldoNf.Nr_lanctoduplicata = val.rDup.Nr_lancto; rSaldoNf.Dt_saient = val.rDup.Dt_emissao; rSaldoNf.Nr_lanctofiscal = p.rNfComplemento.Nr_lanctofiscal; rSaldoNf.Id_nfitem = p.rNfComplemento.ItensNota[0].Id_nfitem; if (val.Qtd_gmo_declarado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "D" }, val.Vl_royalties_declarado, val.Qtd_gmo_declarado, qtb_fixacao.Banco_Dados); } if (val.Qtd_gmo_testado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "T" }, val.Vl_royalties_testado, val.Qtd_gmo_testado, qtb_fixacao.Banco_Dados); } }); if (val.rNfDev != null) { //Gravar Retencao GMO TRegistro_SaldoNFGMO rSaldoNf = new TRegistro_SaldoNFGMO(); rSaldoNf.Cd_empresa = val.rDup.Cd_empresa; rSaldoNf.Nr_lanctoduplicata = val.rDup.Nr_lancto; rSaldoNf.Dt_saient = val.rDup.Dt_emissao; rSaldoNf.Nr_lanctofiscal = val.rNfDev.Nr_lanctofiscal; rSaldoNf.Id_nfitem = val.rNfDev.ItensNota[0].Id_nfitem; if (val.Qtd_gmo_declarado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "D" }, val.Vl_royalties_declarado, val.Qtd_gmo_declarado, qtb_fixacao.Banco_Dados); } if (val.Qtd_gmo_testado > decimal.Zero) { //Liquidar duplicata retendo os Royalties TCN_LanRoyaltiesGMO.liquidaDuplicatas(rSaldoNf, new TRegistro_SaldoContratoGMO() { Cd_produto = val.Cd_produto, Nr_contrato = val.Nr_contrato, Tp_gmo = "T" }, val.Vl_royalties_testado, val.Qtd_gmo_testado, qtb_fixacao.Banco_Dados); } } } } if (st_transacao) { qtb_fixacao.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_fixacao.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar fixação: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_fixacao.deletarBanco_Dados(); } } }
public static string Grava_Transferencia(TRegistro_Transferencia val, TObjetoBanco banco) { bool st_transacao = false; TCD_Transferencia qtb_Transferencia = new TCD_Transferencia(); try { if (banco == null) { st_transacao = qtb_Transferencia.CriarBanco_Dados(true); } else { qtb_Transferencia.Banco_Dados = banco; } // Grava Transferencia string retorno = qtb_Transferencia.Gravar(val); val.ID_Transf = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_TRANSF")); // Grava Transferencia Pedido Origem #region Nota_Fiscal_Origem val.rNfOrigem.Nr_pedido = val.Transf_X_Contrato_Origem[0].Nr_pedido; val.rNfOrigem.Cd_clifor = val.Contrato_Origem.Cd_clifor; val.rNfOrigem.Cd_condfiscal_clifor = string.Empty; val.rNfOrigem.Cd_condpgto = val.Contrato_Origem.CD_CondPGTO; val.rNfOrigem.Cd_empresa = val.Contrato_Origem.Cd_empresa; val.rNfOrigem.Cd_endereco = val.Contrato_Origem.Cd_endereco; val.rNfOrigem.Cd_movimentacao = val.Contrato_Origem.Pedido_Fiscal[0].Cd_movto; if (val.Duplicata_Origem.Count > 0) { val.rNfOrigem.Duplicata = val.Duplicata_Origem; } //Criar itens da nota fiscal TRegistro_LanFaturamento_Item Reg_Itens_Nota = new TRegistro_LanFaturamento_Item(); Reg_Itens_Nota.Cd_produto = val.Transf_X_Contrato_Origem[0].Cd_produto; Reg_Itens_Nota.lNfcompdev = val.Complemento_Devolucao; Reg_Itens_Nota.Quantidade = val.QTD_Transf; Reg_Itens_Nota.Vl_unitario = val.VL_Unit_Origem; Reg_Itens_Nota.Cd_local = val.Contrato_Origem.Cd_local; Reg_Itens_Nota.Vl_subtotal = val.VL_Sub_Total_Origem; Reg_Itens_Nota.Id_pedidoitem = val.Contrato_Origem.Id_pedidoitem; Reg_Itens_Nota.Nr_pedido = val.Contrato_Origem.Nr_pedido.Value; CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null; if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfOrigem.Cd_movimentacaostring, val.Transf_X_Contrato_Origem[0].Cd_condfiscal_produto, val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "I" : val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Origem.CD_UFClifor.Trim()) ? "D" : "F", val.Reg_Empresa_Origem.rEndereco.Cd_uf, val.Contrato_Origem.CD_UFClifor, val.rNfOrigem.Tp_movimento, val.Reg_Clifor_Origem.Cd_condfiscal_clifor, val.Reg_Empresa_Origem.Cd_empresa, ref rCfop, banco)) { Reg_Itens_Nota.Cd_cfop = rCfop.CD_CFOP; Reg_Itens_Nota.Ds_cfop = rCfop.DS_CFOP; Reg_Itens_Nota.St_bonificacao = rCfop.St_bonificacaobool; } else { throw new Exception("Não existe CFOP " + (val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Origem.CD_UFClifor.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfOrigem.Cd_movimentacaostring + " condição fiscal do produto " + val.Transf_X_Contrato_Origem[0].Cd_condfiscal_produto); } Reg_Itens_Nota.Cd_unidade = val.Contrato_Origem.Cd_unidade; Reg_Itens_Nota.Cd_unidEst = val.Contrato_Origem.Cd_unid_produto; //Procurar Impostos Estaduais para o Item string vObsFiscal = string.Empty; TList_ImpostosNF lImpUfOrig = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Origem.Cd_empresa, val.Reg_Empresa_Origem.rEndereco.Cd_uf, val.Contrato_Origem.CD_UFClifor, val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring, val.rNfOrigem.Tp_movimento, val.Reg_Clifor_Origem.Cd_condfiscal_clifor, val.Reg_Produto_Origem.CD_CondFiscal_Produto, val.VL_Sub_Total_Origem, val.QTD_Transf, ref vObsFiscal, val.rNfOrigem.Dt_emissao, val.Reg_Produto_Origem.CD_Produto, val.rNfOrigem.Tp_nota, val.rNfOrigem.Nr_serie, banco); if (lImpUfOrig.Exists(v => v.Imposto.St_ICMS)) { TCN_LanFaturamento_Item.PreencherICMS(lImpUfOrig.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota); val.rNfOrigem.Obsfiscal += string.IsNullOrEmpty(val.rNfOrigem.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim(); } else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Origem.CD_Produto, val.rNfOrigem.Nr_serie, banco)) { throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" + "Tipo Movimento: " + (val.rNfOrigem.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" + "Movimentação Comercial: " + val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Origem.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" + "Condição Fiscal Clifor: " + val.Reg_Clifor_Origem.Cd_condfiscal_clifor + "\r\n" + "Condição Fiscal Produto: " + val.Reg_Produto_Origem.CD_CondFiscal_Produto + "\r\n" + "UF Origem: " + val.Reg_Empresa_Origem.rEndereco.Cd_uf + "\r\n" + "UF Destino: " + val.Contrato_Origem.CD_UFClifor); } //Procurar impostos sobre os itens da nota fiscal de origem TCN_LanFaturamento_Item.PreencherOutrosImpostos( TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Origem.Cd_condfiscal_clifor, val.Reg_Produto_Origem.CD_CondFiscal_Produto, val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring, val.rNfOrigem.Tp_movimento, val.Reg_Clifor_Origem.Tp_pessoa, val.Transf_X_Contrato_Origem[0].CD_Empresa, val.Contrato_Origem.Pedido_Fiscal[0].Nr_serie, val.Reg_Clifor_Origem.Cd_clifor, val.Reg_Produto_Origem.CD_Unidade, val.DT_Lancto, Reg_Itens_Nota.Quantidade, Reg_Itens_Nota.Vl_subtotal, val.rNfOrigem.Tp_nota, string.Empty, banco), Reg_Itens_Nota, val.rNfOrigem.Tp_movimento); //Gerar observacao para o item //Observação do Item com os dados das notas de origem string obsitem = string.Empty; val.Complemento_Devolucao.ForEach(p => { obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') + (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) + Reg_Itens_Nota.Sigla_unidade_estoque.Trim()).FormatStringDireita(15, ' ') + p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n"; }); Reg_Itens_Nota.Observacao_item += "NF/Serie Origem Quantidade Valor(R$)\r\n" + obsitem; //Adicionar item a nota fiscal de origem val.rNfOrigem.ItensNota.Add(Reg_Itens_Nota); //Gravar nota fiscal de origem TCN_LanFaturamento.GravarFaturamento(val.rNfOrigem, null, qtb_Transferencia.Banco_Dados); val.Transf_X_Contrato_Origem[0].NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value; //Gravar transferencia x pedido origem TCN_Transf_X_Contrato.Gravar(new TRegistro_Transf_X_Contrato() { CD_Empresa = val.Transf_X_Contrato_Origem[0].CD_Empresa, Cd_produto = val.Transf_X_Contrato_Origem[0].Cd_produto, ID_Transf = val.ID_Transf, TP_Movimento = val.rNfOrigem.Tp_movimento, NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value, ID_NFItem = val.rNfOrigem.ItensNota[0].Id_nfitem, NR_Contrato = val.Contrato_Origem.Nr_contrato }, qtb_Transferencia.Banco_Dados); #endregion #region Nota_Fiscal_Destino val.rNfDestino.Nr_pedido = val.Transf_X_Contrato_Destino[0].Nr_pedido; val.rNfDestino.Cd_clifor = val.Contrato_Destino.Cd_clifor; val.rNfDestino.Cd_condpgto = val.Contrato_Destino.CD_CondPGTO; val.rNfDestino.Cd_empresa = val.Contrato_Destino.Cd_empresa; val.rNfDestino.Cd_endereco = val.Contrato_Destino.Cd_endereco; val.rNfDestino.Cd_movimentacao = val.Contrato_Destino.Pedido_Fiscal[0].Cd_movto; if (val.Duplicata_Destino.Count > 0) { val.rNfDestino.Duplicata = val.Duplicata_Destino; } //Registro item da nota fiscal de destino TRegistro_LanFaturamento_Item Reg_Itens_Nota_Destino = new TRegistro_LanFaturamento_Item(); if (val.Transf_X_Contrato_Destino[0].CD_Unidade_Est.Equals(val.Transf_X_Contrato_Origem[0].CD_Unidade_Est)) { Reg_Itens_Nota_Destino.Quantidade = val.QTD_Transf; } else { Reg_Itens_Nota_Destino.Quantidade = TCN_CadConvUnidade.ConvertUnid(val.Transf_X_Contrato_Destino[0].CD_Unidade_Est, val.Transf_X_Contrato_Origem[0].CD_Unidade_Est, val.QTD_Transf, 3, qtb_Transferencia.Banco_Dados); } Reg_Itens_Nota_Destino.Cd_produto = val.Transf_X_Contrato_Destino[0].Cd_produto; Reg_Itens_Nota_Destino.Vl_unitario = val.VL_Unit_Destino; Reg_Itens_Nota_Destino.Cd_local = val.Contrato_Destino.Cd_local; Reg_Itens_Nota_Destino.Vl_subtotal = val.VL_Sub_Total_Destino; Reg_Itens_Nota_Destino.Id_pedidoitem = val.Contrato_Destino.Id_pedidoitem.Value; Reg_Itens_Nota_Destino.Nr_pedido = val.Contrato_Destino.Nr_pedido.Value; rCfop = null; if (TCN_Mov_X_CFOP.BuscarCFOP(val.rNfDestino.Cd_movimentacaostring, val.Transf_X_Contrato_Destino[0].Cd_condfiscal_produto, val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "I" : val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Destino.CD_UFClifor.Trim()) ? "D" : "F", val.Reg_Empresa_Destino.rEndereco.Cd_uf, val.Contrato_Destino.CD_UFClifor, val.rNfDestino.Tp_movimento, val.Reg_Clifor_Destino.Cd_condfiscal_clifor, val.Reg_Empresa_Destino.Cd_empresa, ref rCfop, banco)) { Reg_Itens_Nota_Destino.Cd_cfop = rCfop.CD_CFOP; Reg_Itens_Nota_Destino.Ds_cfop = rCfop.DS_CFOP; Reg_Itens_Nota_Destino.St_bonificacao = rCfop.St_bonificacaobool; } else { throw new Exception("Não existe CFOP " + (val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Destino.CD_UFClifor.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfDestino.Cd_movimentacaostring + " condição fiscal do produto " + val.Transf_X_Contrato_Destino[0].Cd_condfiscal_produto); } Reg_Itens_Nota_Destino.Cd_unidade = val.Contrato_Destino.Cd_unidade; Reg_Itens_Nota_Destino.Cd_unidEst = val.Contrato_Destino.Cd_unid_produto; //Procurar Impostos Estaduais para o Item vObsFiscal = string.Empty; TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Destino.Cd_empresa, val.Reg_Empresa_Destino.rEndereco.Cd_uf, val.Contrato_Destino.CD_UFClifor, val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring, val.rNfDestino.Tp_movimento, val.Reg_Clifor_Destino.Cd_condfiscal_clifor, val.Reg_Produto_Destino.CD_CondFiscal_Produto, val.VL_Sub_Total_Destino, val.QTD_Transf, ref vObsFiscal, val.rNfDestino.Dt_emissao, val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Tp_nota, val.rNfDestino.Nr_serie, banco); if (lImpUf.Exists(v => v.Imposto.St_ICMS)) { TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota_Destino); val.rNfDestino.Obsfiscal += string.IsNullOrEmpty(val.rNfDestino.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim(); } else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Nr_serie, banco)) { throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" + "Tipo Movimento: " + (val.rNfDestino.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" + "Movimentação Comercial: " + val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Destino.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" + "Condição Fiscal Clifor: " + val.Reg_Clifor_Destino.Cd_condfiscal_clifor + "\r\n" + "Condição Fiscal Produto: " + val.Reg_Produto_Destino.CD_CondFiscal_Produto + "\r\n" + "UF Origem: " + val.Reg_Empresa_Destino.rEndereco.Cd_uf + "\r\n" + "UF Destino: " + val.Contrato_Destino.CD_UFClifor); } //Procurar impostos sobre os itens da nota fiscal de destino TCN_LanFaturamento_Item.PreencherOutrosImpostos(TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Destino.Cd_condfiscal_clifor, val.Reg_Produto_Destino.CD_CondFiscal_Produto, val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring, val.rNfDestino.Tp_movimento, val.Reg_Clifor_Destino.Tp_pessoa, val.Transf_X_Contrato_Destino[0].CD_Empresa, val.Contrato_Destino.Pedido_Fiscal[0].Nr_serie, val.Reg_Clifor_Destino.Cd_clifor, val.Reg_Produto_Destino.CD_Unidade, val.DT_Lancto, Reg_Itens_Nota_Destino.Quantidade, Reg_Itens_Nota_Destino.Vl_subtotal, val.rNfDestino.Tp_nota, string.Empty, banco), Reg_Itens_Nota_Destino, val.rNfDestino.Tp_movimento); val.rNfDestino.ItensNota.Add(Reg_Itens_Nota_Destino); //Gravar Nota Fiscal Destino TCN_LanFaturamento.GravarFaturamento(val.rNfDestino, null, qtb_Transferencia.Banco_Dados); val.Transf_X_Contrato_Destino[0].NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value; TCN_Transf_X_Contrato.Gravar(new TRegistro_Transf_X_Contrato() { CD_Empresa = val.Transf_X_Contrato_Destino[0].CD_Empresa, Cd_produto = val.Transf_X_Contrato_Destino[0].Cd_produto, ID_Transf = val.ID_Transf, TP_Movimento = val.rNfDestino.Tp_movimento, NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value, ID_NFItem = val.rNfDestino.ItensNota[0].Id_nfitem, NR_Contrato = val.Transf_X_Contrato_Destino[0].NR_Contrato }, qtb_Transferencia.Banco_Dados); #endregion if (st_transacao) { qtb_Transferencia.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_Transferencia.Banco_Dados.RollBack_Tran(); } throw new Exception(ex.Message); } finally { if (st_transacao) { qtb_Transferencia.deletarBanco_Dados(); } } }