private void ps_fixado_total_Leave(object sender, EventArgs e) { if (!(bsItensNota.DataSource as TList_RegLanFaturamento_Item).Exists(p => p.St_processar)) { if (ps_fixado_total.Value > tot_saldo_fixar.Value) { ps_fixado_total.Value = tot_saldo_fixar.Value; } } else { if (ps_fixado_total.Value > (bsItensNota.DataSource as TList_RegLanFaturamento_Item).FindAll(p => p.St_processar).Sum(p => p.Saldo_fixar)) { ps_fixado_total.Value = (bsItensNota.DataSource as TList_RegLanFaturamento_Item).FindAll(p => p.St_processar).Sum(p => p.Saldo_fixar); } } if (bsFixacao.Current != null) { (bsFixacao.Current as TRegistro_LanFixacao).Vl_fixacao = TCN_CadConvUnidade.ConvertUnid( cd_unidestoque.Text, cd_unidvalorEditDefault.Text, ps_fixado_total.Value * (vl_unitario.Value + vl_bonificacao.Value), 2, null); bsFixacao.ResetCurrentItem(); } }
private static decimal CalcularCustoMPD(TList_FichaTec_MPrima val, string Dt_apontamento, decimal Qtd_batch, BancoDados.TObjetoBanco banco) { val.ForEach(p => { if (p.Id_formulacao_mprima != null) { //Buscar lista de materia-prima TList_FichaTec_MPrima lMPrima = TCN_FichaTec_MPrima.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, 0, string.Empty, banco); //Chamar o metodo CalcularCustoMPD recursivamente p.Vl_custo = CalcularCustoMPD(lMPrima, Dt_apontamento, Qtd_batch, banco); p.Vl_customedio = Math.Round(p.Vl_custo / p.Qtd_produto / Qtd_batch, 2); } else { p.Vl_customedio = TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unid_produto, TCN_LanEstoque.BuscarVlEstoqueUltimaCompra(p.Cd_empresa, p.Cd_produto, banco), 5, banco); p.Vl_custo = Math.Round(p.Vl_customedio * p.Qtd_produto * Qtd_batch, 2); } }); return(val.Sum(p => p.Vl_custo)); }
public override int buscarRegistros() { TList_CadConvUnidade lista = TCN_CadConvUnidade.Busca(CD_Unidade_Orig.Text, CD_Unidade_Dest.Text, string.Empty, 0, string.Empty, null); if (lista != null) { if (lista.Count > 0) { this.Lista = lista; BS_CadConvUnidade.DataSource = lista; } else if ((vTP_Modo == TTpModo.tm_Standby) || (vTP_Modo == TTpModo.tm_busca)) { BS_CadConvUnidade.Clear(); } return(lista.Count); } else { return(0); } }
public override string gravarRegistro() { if (pDados.validarCampoObrigatorio()) { return(TCN_CadConvUnidade.Gravar(BS_CadConvUnidade.Current as TRegistro_CadConvUnidade, null)); } else { return(string.Empty); } }
private void vl_unitario_Leave(object sender, EventArgs e) { if (bsFixacao.Current != null) { (bsFixacao.Current as TRegistro_LanFixacao).Vl_fixacao = TCN_CadConvUnidade.ConvertUnid( cd_unidestoque.Text, cd_unidvalorEditDefault.Text, ps_fixado_total.Value * (vl_unitario.Value + vl_bonificacao.Value), 2, null); bsFixacao.ResetCurrentItem(); } }
private void TFDisponibilidadeMPrima_Load(object sender, EventArgs e) { Utils.ShapeGrid.RestoreShape(this, dataGridDefault1); Utils.ShapeGrid.RestoreShape(this, dataGridDefault2); Utils.ShapeGrid.RestoreShape(this, dataGridDefault3); Utils.ShapeGrid.RestoreShape(this, dataGridDefault4); Utils.ShapeGrid.RestoreShape(this, dataGridDefault5); Utils.ShapeGrid.RestoreShape(this, gMPrima); Utils.ShapeGrid.RestoreShape(this, gSintetico); Icon = Utils.ResourcesUtils.TecnoAliance_ICO; pFiltro.set_FormatZero(); CD_Empresa.Text = pCd_empresa.Trim(); id_formulacao.Text = pId_formulacao.Trim(); ds_formula.Text = pDs_formula.Trim(); if (id_formulacao.Text != null) { id_formulacao_Leave(this, new EventArgs()); } CD_Empresa.Enabled = string.IsNullOrEmpty(pCd_empresa); BB_Empresa.Enabled = string.IsNullOrEmpty(pCd_empresa); qtd_batch.Enabled = string.IsNullOrWhiteSpace(pId_ordem); //Calcular indice de bateladas if (pQtd_programada > decimal.Zero) { //Buscar formula CamadaDados.Producao.Producao.TList_FormulaApontamento lFormula = CamadaNegocio.Producao.Producao.TCN_FormulaApontamento.Buscar(CD_Empresa.Text, id_formulacao.Text, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, string.Empty, null); if (lFormula.Count > 0) { qtd_batch.Value = TCN_CadConvUnidade.ConvertUnid(pCd_unidade, lFormula[0].Cd_unidProduto, pQtd_programada, 3, null) / lFormula[0].Qt_produto; qtd_produzir.Value = lFormula[0].Qt_produto; } } }
public override void excluirRegistro() { if (g_convUnidade.RowCount > 0) { if ((this.vTP_Modo == TTpModo.tm_Standby) || (this.vTP_Modo == TTpModo.tm_busca)) { if (MessageBox.Show("Confirma Exclusão do Registro?", "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) { TCN_CadConvUnidade.Excluir(BS_CadConvUnidade.Current as TRegistro_CadConvUnidade, null); BS_CadConvUnidade.RemoveCurrent(); pDados.LimparRegistro(); afterBusca(); } } } else { MessageBox.Show("Não Existe Conversão de Unidade Para Ser Excluída!"); } }
public static TList_Apontamento_Estoque ProcessarEstoqueFichaTec_MPrima(TList_FichaTec_MPrima val, decimal Qtd_batch, DateTime?Dt_estoque, bool St_decomposicao, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_FichaTec_MPrima qtb_ficha = new TCD_FichaTec_MPrima(); try { if (banco == null) { st_transacao = qtb_ficha.CriarBanco_Dados(true); } else { qtb_ficha.Banco_Dados = banco; } TList_Apontamento_Estoque lEstoque = new TList_Apontamento_Estoque(); val.ForEach(p => { #region if produto composto e formula for nula if ((new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoComposto(p.Cd_produto)) && (p.Id_formulacao_mprima == null)) { TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao(); rApontamento.Cd_empresa = p.Cd_empresa; rApontamento.Dt_apontamento = Dt_estoque; rApontamento.Dt_validade = Dt_estoque; rApontamento.Qtd_batch = p.Qtd_produto * Qtd_batch; rApontamento.LFormulaApontamento = new TList_FormulaApontamento() { TCN_FormulaApontamento.CriarFormulaApontamentoProd(p.Cd_empresa, p.Cd_produto, p.Cd_unidade, p.Cd_local, //St_decomposicao, qtb_ficha.Banco_Dados) }; //Gravar Formula Apontamento rApontamento.LFormulaApontamento.ForEach(x => { x.St_decomposicao = St_decomposicao; TCN_FormulaApontamento.Gravar(x, qtb_ficha.Banco_Dados); }); //Calcular custo MPD TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados); //Calcular custo fixo TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados); //Chamar metodo Gravar Apontamento recursivamente p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento, qtb_ficha.Banco_Dados)); } #endregion #region else if formula diferente de nulll else if (p.Id_formulacao_mprima != null) { //Buscar formula apontamento TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao(); rApontamento.Cd_empresa = p.Cd_empresa; rApontamento.Dt_apontamento = Dt_estoque; rApontamento.Dt_validade = Dt_estoque; rApontamento.Qtd_batch = p.Qtd_produto * Qtd_batch; rApontamento.LFormulaApontamento = TCN_FormulaApontamento.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_ficha.Banco_Dados); //Buscar ficha tecnica da formula rApontamento.LFormulaApontamento[0].LFichaTec_MPrima = TCN_FichaTec_MPrima.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_ficha.Banco_Dados); //Buscar Custo rApontamento.LFormulaApontamento[0].LCustoFixo = TCN_CustoFixo_Direto.Buscar(p.Cd_empresa, p.Id_formulacao_mprimastr, string.Empty, string.Empty, string.Empty, 0, string.Empty, qtb_ficha.Banco_Dados); rApontamento.Qtd_batch = Math.Round(p.Qtd_produto / TCN_CadConvUnidade.ConvertUnid(rApontamento.LFormulaApontamento[0].Cd_unidade, rApontamento.LFormulaApontamento[0].Cd_unidProduto, rApontamento.LFormulaApontamento[0].Qt_produto, 3, qtb_ficha.Banco_Dados), 0); //Calcular custo MPD TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados); //Calcular custo fixo TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados); //Chamar metodo Gravar Apontamento recursivamente p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento, qtb_ficha.Banco_Dados)); } #endregion //Gravar estoque TRegistro_LanEstoque rEstoque = new TRegistro_LanEstoque(); rEstoque.Cd_empresa = p.Cd_empresa; rEstoque.Cd_local = p.Cd_local; rEstoque.Cd_produto = p.Cd_produto; rEstoque.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO"; rEstoque.Dt_lancto = Dt_estoque; rEstoque.Tp_movimento = !St_decomposicao ? "S" : "E"; rEstoque.Qtd_entrada = St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unid_produto, p.Qtd_produto * Qtd_batch, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Qtd_saida = !St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unid_produto, p.Qtd_produto * Qtd_batch, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Vl_unitario = p.Vl_unitario; rEstoque.Vl_subtotal = rEstoque.Vl_unitario * (St_decomposicao ? rEstoque.Qtd_entrada : rEstoque.Qtd_saida); rEstoque.Tp_lancto = "N"; TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados); lEstoque.Add(new TRegistro_Apontamento_Estoque() { Cd_empresa = p.Cd_empresa, Cd_produto = p.Cd_produto, Id_lanctoestoque = rEstoque.Id_lanctoestoque, Vl_custocontabil = p.Vl_custo }); }); if (st_transacao) { qtb_ficha.Banco_Dados.Commit_Tran(); } return(lEstoque); } catch (Exception ex) { if (st_transacao) { qtb_ficha.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_ficha.deletarBanco_Dados(); } } }
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 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(); } } }
public static TList_TaxaDeposito CalcularTaxasExpedicaoPendentes(string Cd_empresa, string Nr_contrato, string Cd_produto, DateTime Dt_calctaxa, string Id_taxa) { //Buscar lista de taxas de expedicao configurada para o contrato TList_CadContratoTaxaDeposito lTaxasContrato = new TCD_CadContratoTaxaDeposito().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_contrato", vOperador = "=", vVL_Busca = Nr_contrato }, new TpBusca() { vNM_Campo = "a.st_gerartxsomente", vOperador = "=", vVL_Busca = "'E'" }, new TpBusca() { vNM_Campo = "a.id_taxa", vOperador = "=", vVL_Busca = string.IsNullOrEmpty(Id_taxa) ? "a.id_taxa" : Id_taxa } }, 0, string.Empty); TList_TaxaDeposito lTaxaDeposito = new TList_TaxaDeposito(); lTaxasContrato.ForEach(p => { //Para cada taxa buscar saldo carencia List <TRegistro_ViewSaldoCarencia> SaldoCarencia = new TCD_SaldoCarenciaTaxa().BuscarSaldoCarencia(Cd_empresa, p.Id_taxastr, p.Nr_contratostr, Cd_produto); decimal tmpTotDiasExpirado = decimal.Zero; SaldoCarencia.ForEach(v => { tmpTotDiasExpirado = Dt_calctaxa.Subtract(v.DT_Saldo.Date).Subtract(TimeSpan.FromDays(Convert.ToDouble(p.Periodocarencia.ToString()))).Days; if (tmpTotDiasExpirado > 0) { //Buscar unidade do estoque object obj = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + Cd_produto.Trim() + "'" } }, "a.cd_unidade"); if (obj == null) { throw new Exception("Produto " + Cd_produto.Trim() + " sem unidade cadastrada."); } decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(obj.ToString(), p.Cd_unidadetaxa, v.Tot_Saldo, 3, null); decimal m = ((tmpTotDiasExpirado % p.Frequencia) > 0 ? 1 : 0); decimal t = (Math.Floor(tmpTotDiasExpirado / p.Frequencia) + m); decimal k = (p.Frequencia > 0 ? t : 1); lTaxaDeposito.Add(new TRegistro_TaxaDeposito() { Id_LanTaxa = 0, Nr_Contrato = p.Nr_contrato.Value, Cd_produto = Cd_produto, Id_Reg = p.Id_reg, Id_Taxa = p.Id_taxa.Value, Ds_taxa = p.Ds_taxa, Sigla_produto = p.Sg_unidadetaxa, DT_Lancto = v.DT_Saldo, Ps_Taxa = (p.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(v.Tot_Saldo * p.Valortaxa * k / 100, 0) : 0), Vl_Taxa = (p.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * p.Valortaxa * k : 0), Tp_Lancto = "A", D_c = "D" }); } }); }); List <TRegistro_TaxaDeposito> lTaxa = lTaxaDeposito.OrderBy(p => p.DT_Lancto).ToList(); lTaxaDeposito.Clear(); lTaxa.ForEach(p => lTaxaDeposito.Add(p)); return(lTaxaDeposito); }
private static void CalcularTaxasEntrada(TRegistro_EstDeposito rEstDeposito, TRegistro_CadContratoTaxaDeposito rTaxa, TRegistro_CadContrato vContrato, TRegistro_MovDeposito vMovDep, TList_SaldoCarenciaTaxa lSaldoCarencia, TObjetoBanco banco) { //Converter quantidade que esta entradando para unidade da taxa decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(rEstDeposito.CD_Unidade, rTaxa.Cd_unidadetaxa, rEstDeposito.QTD_Entrada, 3, banco); decimal?vID_LanTaxa = null; //se for uma taxa que somente sera cobrada com classificacao limitada por faixa if (!string.IsNullOrEmpty(rTaxa.Cd_tipoamostra)) { //se for um lancto por balanca/aplicacao testar os limites de classificacao para taxar ou nao if ((rEstDeposito.ID_Ticket > 0) && (!string.IsNullOrEmpty(rEstDeposito.CD_Empresa))) { rEstDeposito.Classif.ForEach(x => { if (rTaxa.Cd_tipoamostra.Trim().Equals(x.Cd_tipoamostra)) { if ((x.Pc_resultado_local >= rTaxa.Pc_result_maiorque) && (x.Pc_resultado_local <= rTaxa.Pc_result_menorque)) { if ((rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper())) { vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel( TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito() { Cd_empresa = rEstDeposito.CD_Empresa, Id_ticket = rEstDeposito.ID_Ticket, Tp_pesagem = rEstDeposito.Tp_Pesagem, Id_LanTaxa = decimal.Zero, Nr_Contrato = rTaxa.Nr_contrato.Value, Cd_produto = vContrato.Cd_produto, Id_Reg = rTaxa.Id_reg, Id_Taxa = rTaxa.Id_taxa.Value, DT_Lancto = rEstDeposito.DT_Lancto, Ps_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(QTD_Convertida * rTaxa.Valortaxa / 100, 0) : 0), Vl_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa : 0), Tp_Lancto = "A", D_c = "D" }, banco), "@P_ID_LANTAXA")); } } } }); } } else { if ((rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper())) { vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel( TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito() { Cd_empresa = rEstDeposito.CD_Empresa, Id_ticket = rEstDeposito.ID_Ticket, Tp_pesagem = rEstDeposito.Tp_Pesagem, Id_LanTaxa = 0, Nr_Contrato = rTaxa.Nr_contrato.Value, Cd_produto = vContrato.Cd_produto, Id_Reg = rTaxa.Id_reg, Id_Taxa = rTaxa.Id_taxa.Value, DT_Lancto = rEstDeposito.DT_Lancto, Ps_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(QTD_Convertida * rTaxa.Valortaxa / 100, 0) : 0), Vl_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa : 0), Tp_Lancto = "A", D_c = "D" }, banco), "@P_ID_LANTAXA")); } } if (!lSaldoCarencia.Exists(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto))) { lSaldoCarencia.Add(new TRegistro_SaldoCarenciaTaxa() { Id_Taxa = rTaxa.Id_taxa.Value, Id_Movto = vMovDep.Id_Movto, Id_LanTaxa = vID_LanTaxa, QTD_Lancto = rEstDeposito.QTD_Entrada, DT_Saldo = rEstDeposito.DT_Lancto, ST_Carencia = "N" }); } else if (vID_LanTaxa != null) { if (lSaldoCarencia.Exists(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto) && (q.Id_LanTaxa == null))) { lSaldoCarencia.Find(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto) && (q.Id_LanTaxa == null)).Id_LanTaxa = vID_LanTaxa; } } }
public static List <TRegistro_SaldoContratoGMO> processaFinanceiroGMO(string Nr_contrato, decimal id_LanctoGmo, TObjetoBanco banco) { //Buscar saldo pedido GMO List <TRegistro_SaldoContratoGMO> lSaldoContrato = new TCD_LanRoyaltiesGMO(banco).SelectSaldoContratoGMO( new TpBusca[] { new TpBusca() { vNM_Campo = "p.nr_contrato", vOperador = "=", vVL_Busca = Nr_contrato } }, 0); //Buscar Saldo NF GMO List <TRegistro_SaldoNFGMO> lSaldoNf = new TCD_LanRoyaltiesGMO(banco).SelectSaldoNFGMO( new TpBusca[] { new TpBusca() { vNM_Campo = "contrato.nr_contrato", vOperador = "=", vVL_Busca = Nr_contrato } }, 0); decimal pc_gmo_declarado = ConfigGer.TCN_CadParamGer.BuscaVlNumerico("PC_GMO_DECLARADO", banco); decimal pc_gmo_testado = ConfigGer.TCN_CadParamGer.BuscaVlNumerico("PC_GMO_TESTADO", banco); TList_RegLanLiquidacao liq = new TList_RegLanLiquidacao(); //credito/debito de todas as notas fiscais do pedido lSaldoContrato.ForEach(p => { if ((p.Saldo_debito - p.Saldo_credito) > 0) { //Credito/Debito da nota fiscal atual lSaldoNf.ForEach(v => { if ((v.Saldo_debito - v.Saldo_credito) > 0) { if (v.Tp_gmo.Trim().ToUpper().Equals("D") && pc_gmo_declarado.Equals(decimal.Zero)) { throw new Exception("Não existe configuração percentual de GMO declarado configurado.\r\n" + "Va em PARAMETROS->CONFIGURAÇÕES->CONFIGURAÇÕES GERAIS e configure o percentual GMO declarado."); } if (v.Tp_gmo.Trim().ToUpper().Equals("T") && pc_gmo_testado.Equals(decimal.Zero)) { throw new Exception("Não existe configuração percentual de GMO testado configurado.\r\n" + "Va em PARAMETROS->CONFIGURAÇÕES->CONFIGURAÇÕES GERAIS e configure o percentual GMO testado."); } decimal qtd_lancto = decimal.Zero; if ((p.Saldo_debito - p.Saldo_credito) >= (v.Saldo_debito - v.Saldo_credito)) { qtd_lancto = v.Saldo_debito - v.Saldo_credito; } else { qtd_lancto = p.Saldo_debito - p.Saldo_credito; } //Calcular impostos Retidos da Nota TList_RegLanFaturamento lNf = TCN_LanFaturamento.Busca(v.Cd_empresa, string.Empty, string.Empty, v.Nr_lanctofiscal.ToString(), string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, string.Empty, false, string.Empty, string.Empty, string.Empty, 1, string.Empty, banco); decimal vl_liquidar = decimal.Zero; if (lNf.Count > 0) { //Buscar Item da Nota TList_RegLanFaturamento_Item lItem = TCN_LanFaturamento_Item.Busca(v.Cd_empresa, v.Nr_lanctofiscal.Value.ToString(), v.Id_nfitem.Value.ToString(), banco); if (lItem.Count > 0) { //Calcular Impostos Retidos TCN_LanFaturamento_Item.PreencherOutrosImpostos( TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(lNf[0].Cd_condfiscal_clifor, lItem[0].Cd_condfiscal_produto, lNf[0].Cd_movimentacaostring, lNf[0].Tp_movimento, lNf[0].Tp_pessoa, lNf[0].Cd_empresa, lNf[0].Nr_serie, lNf[0].Cd_clifor, lItem[0].Cd_unidEst, lNf[0].Dt_emissao, qtd_lancto, TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unidade_valor, (qtd_lancto * v.Vl_unitario), 2, banco), lNf[0].Tp_nota, lNf[0].Cd_municipioexecservico, banco), lItem[0], lNf[0].Tp_movimento); lNf[0].ItensNota = lItem; } TCN_LanFaturamento.CalcTotalNota(lNf[0]); vl_liquidar = lNf[0].Vl_totalnota * ((v.Tp_gmo.Trim().ToUpper().Equals("D") ? pc_gmo_declarado : pc_gmo_testado) / 100); } else { //Valor liquidar vl_liquidar = TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade, p.Cd_unidade_valor, (qtd_lancto * v.Vl_unitario), 2, banco) * ((v.Tp_gmo.Trim().ToUpper().Equals("D") ? pc_gmo_declarado : pc_gmo_testado) / 100); } //Liquidar duplicata liquidaDuplicatas(v, p, vl_liquidar, qtd_lancto, banco); } }); } }); return(lSaldoContrato); }
public static TRegistro_LanFaturamento ProcessarAplicPsDiversos(List <TRegistro_PesagemDiversas> lTicket) { if (lTicket.Count > 0) { using (TFPedidoPsDiversa fPed = new TFPedidoPsDiversa()) { fPed.pTp_movimento = lTicket[0].Tp_movimento; fPed.pCd_empresa = lTicket[0].Cd_empresa; fPed.pNm_empresa = lTicket[0].Nm_empresa; fPed.pCd_clifor = lTicket[0].Cd_clifor; fPed.pNm_clifor = lTicket[0].Nm_clifor; fPed.pCd_produto = lTicket[0].Cd_produto; fPed.pDs_produto = lTicket[0].Ds_produto; fPed.pCd_unidade = lTicket[0].Cd_unidade; fPed.pSg_produto = lTicket[0].Sg_produto; string und_balanca = CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_String_Empresa("UND_BALANCA", lTicket[0].Cd_empresa); if (!string.IsNullOrEmpty(und_balanca)) { fPed.pQuantidade = TCN_CadConvUnidade.ConvertUnid(und_balanca, lTicket[0].Cd_unidade, lTicket.Sum(p => p.Ps_liquidobruto), 3, null); } else { fPed.pQuantidade = lTicket.Sum(p => p.Ps_liquidobruto); } if (fPed.ShowDialog() == System.Windows.Forms.DialogResult.OK) { CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido(); try { rPed.TP_Movimento = lTicket[0].Tp_movimento; rPed.CD_Empresa = fPed.pCd_empresa; rPed.CFG_Pedido = fPed.cfg_pedido; rPed.CD_Clifor = fPed.pCd_clifor; rPed.CD_Endereco = fPed.cd_endereco; rPed.DT_Pedido = CamadaDados.UtilData.Data_Servidor(); rPed.Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item() { Cd_produto = fPed.pCd_produto, Cd_unidade_valor = fPed.cd_unidade, Cd_local = fPed.cd_local, Quantidade = fPed.quantidade, Vl_unitario = fPed.vl_unitario, Vl_subtotal = fPed.vl_subtotal }); CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Grava_Pedido(rPed, null); //Buscar pedido rPed = TCN_Pedido.Busca_Registro_Pedido(rPed.Nr_pedido.ToString(), null); //Buscar itens pedido TCN_Pedido.Busca_Pedido_Itens(rPed, false, null); TRegistro_LanFaturamento rNota = Proc_Commoditties.TProcessaPedFaturar.ProcessaPedFaturar(rPed, false, decimal.Zero); rNota.Placaveiculo = lTicket[0].Placacarreta; rNota.Pesobruto = lTicket.Sum(p => p.Ps_bruto); rNota.Pesoliquido = lTicket.Sum(p => p.Ps_liquidobruto); rNota.Cd_transportadora = lTicket[0].Cd_transp; rNota.Nm_razaosocialtransp = lTicket[0].Nm_transp; return(rNota); } catch (Exception ex) { TCN_Pedido.Deleta_Pedido(rPed, null); throw new Exception(ex.Message.Trim()); } } else { return(null); } } } else { return(null); } }
public static void ProcessarEstoqueProdutoAcabado(TRegistro_ApontamentoProducao val, decimal Qtd_batch, decimal TotalCusto, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ApontamentoProducao qtb_ficha = new TCD_ApontamentoProducao(); try { if (banco == null) { st_transacao = qtb_ficha.CriarBanco_Dados(true); } else { qtb_ficha.Banco_Dados = banco; } if ((!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ItemServico(val.LFormulaApontamento[0].Cd_produto)) && (!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoConsumoInterno(val.LFormulaApontamento[0].Cd_produto))) { //Entrada produto acabado no estoque CamadaDados.Estoque.TRegistro_LanEstoque rEstoque = new CamadaDados.Estoque.TRegistro_LanEstoque(); rEstoque.Cd_empresa = val.Cd_empresa; rEstoque.Cd_local = val.LFormulaApontamento[0].Cd_local; rEstoque.Cd_produto = val.LFormulaApontamento[0].Cd_produto; rEstoque.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELA PRODUCAO DO ITEM: " + val.LFormulaApontamento[0].Cd_produto.Trim(); rEstoque.Dt_lancto = val.Dt_apontamento; rEstoque.Qtd_entrada = !val.LFormulaApontamento[0].St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(val.LFormulaApontamento[0].Cd_unidade, val.LFormulaApontamento[0].Cd_unidProduto, val.Qtd_batch * val.LFormulaApontamento[0].Qt_produto, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Qtd_saida = val.LFormulaApontamento[0].St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(val.LFormulaApontamento[0].Cd_unidade, val.LFormulaApontamento[0].Cd_unidProduto, val.Qtd_batch * val.LFormulaApontamento[0].Qt_produto, 3, qtb_ficha.Banco_Dados) : decimal.Zero; rEstoque.Tp_lancto = "N"; rEstoque.Tp_movimento = !val.LFormulaApontamento[0].St_decomposicao ? "E" : "S"; rEstoque.Vl_subtotal = TotalCusto; rEstoque.Vl_unitario = rEstoque.Vl_subtotal > 0?(rEstoque.Vl_subtotal / (val.LFormulaApontamento[0].St_decomposicao ? rEstoque.Qtd_saida : rEstoque.Qtd_entrada)):0; string ret_estoque = TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados); val.LApontamentoEstoque.Add(new TRegistro_Apontamento_Estoque() { Cd_empresa = val.Cd_empresa, Cd_produto = val.LFormulaApontamento[0].Cd_produto, Id_lanctoestoque = rEstoque.Id_lanctoestoque, Vl_custocontabil = rEstoque.Vl_subtotal }); } if (st_transacao) { qtb_ficha.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_ficha.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_ficha.deletarBanco_Dados(); } } }
private void afterGrava() { if (bsFixacao.Current != null) { if (pCentral.validarCampoObrigatorio()) { //Montar lista de notas fiscais a serem complementadas/devolvidas decimal saldo_fixar = ps_fixado_total.Value; if (!(bsItensNota.DataSource as TList_RegLanFaturamento_Item).Exists(p => p.St_processar)) { for (int i = 0; i < bsItensNota.Count; i++) { if (saldo_fixar > 0) { (bsFixacao.Current as TRegistro_LanFixacao).lFixacaonf.Add( new TRegistro_Fixacao_NF() { Cd_empresa = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Cd_empresa, Nr_notafiscal = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Nr_notafiscal, Nr_serie = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Nr_serie, Nr_lanctofiscal = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Nr_lanctofiscal, Id_nfitem = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Id_nfitem, Id_variedade = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Id_variedade, Qtd_fixacao = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar : saldo_fixar, Vl_pauta = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, Vl_fixacao = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar <saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null), Vl_complemento = vl_unitario.Value> (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario ? ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) - ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null)) : decimal.Zero, Vl_devolucao = vl_unitario.Value < (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario ? ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null)) - ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) : decimal.Zero }); saldo_fixar -= (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar : saldo_fixar; } else { break; } } } else { if (saldo_fixar > 0) { (bsItensNota.DataSource as TList_RegLanFaturamento_Item).FindAll(p => p.St_processar).ForEach(p => { (bsFixacao.Current as TRegistro_LanFixacao).lFixacaonf.Add( new TRegistro_Fixacao_NF() { Cd_empresa = p.Cd_empresa, Nr_notafiscal = p.Nr_notafiscal, Nr_serie = p.Nr_serie, Nr_lanctofiscal = p.Nr_lanctofiscal, Id_nfitem = p.Id_nfitem, Id_variedade = p.Id_variedade, Qtd_fixacao = p.Saldo_fixar < saldo_fixar ? p.Saldo_fixar : saldo_fixar, Vl_pauta = p.Vl_unitario, Vl_fixacao = p.Saldo_fixar <saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null), Vl_complemento = vl_unitario.Value> p.Vl_unitario ? (p.Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) - (p.Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * p.Vl_unitario, 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * p.Vl_unitario, 2, null)) : decimal.Zero, Vl_devolucao = vl_unitario.Value < p.Vl_unitario ? (p.Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * p.Vl_unitario, 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * p.Vl_unitario, 2, null)) - (p.Saldo_fixar < saldo_fixar ? TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) : TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) : decimal.Zero }); saldo_fixar -= p.Saldo_fixar < saldo_fixar ? p.Saldo_fixar : saldo_fixar; }); } } if (saldo_fixar > 0) { (bsFixacao.Current as TRegistro_LanFixacao).Ps_fixado_total = (bsFixacao.Current as TRegistro_LanFixacao).Ps_fixado_total - saldo_fixar; (bsFixacao.Current as TRegistro_LanFixacao).Vl_fixacao = (bsFixacao.Current as TRegistro_LanFixacao).Ps_fixado_total * ((bsFixacao.Current as TRegistro_LanFixacao).Vl_unitario + (bsFixacao.Current as TRegistro_LanFixacao).Vl_bonificacao); } DialogResult = DialogResult.OK; } } }
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; } } }
private static void CalcularTaxasExpedicao(TRegistro_EstDeposito rEstDeposito, TRegistro_CadContratoTaxaDeposito rTaxa, TRegistro_CadContrato vContrato, TRegistro_MovDeposito vMovDep, TList_SaldoCarenciaTaxa lSaldoCarencia, TObjetoBanco banco) { decimal?vID_LanTaxa = null; List <TRegistro_ViewSaldoCarencia> SaldoCarencia = new TCD_SaldoCarenciaTaxa(banco).BuscarSaldoCarencia(vMovDep.CD_Empresa, rTaxa.Id_taxastr, rTaxa.Nr_contratostr, vMovDep.CD_Produto); decimal tmpSaldoExp = rEstDeposito.QTD_Saida; decimal tmpSaldoLan = decimal.Zero; decimal tmpTotDiasExpirado = decimal.Zero; foreach (TRegistro_ViewSaldoCarencia rSaldoCarencia in SaldoCarencia) { if (tmpSaldoExp > 0) { if (rSaldoCarencia.Tot_Saldo >= tmpSaldoExp) { tmpSaldoLan = tmpSaldoExp; } else { tmpSaldoLan = rSaldoCarencia.Tot_Saldo; } tmpTotDiasExpirado = rEstDeposito.DT_Lancto.Subtract(rSaldoCarencia.DT_Saldo.Date).Subtract(TimeSpan.FromDays(Convert.ToDouble(rTaxa.Periodocarencia.ToString()))).Days; decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(rEstDeposito.CD_Unidade, rTaxa.Cd_unidadetaxa, tmpSaldoLan, 3, banco); if ((tmpTotDiasExpirado > 0) && (rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper())) { decimal m = ((tmpTotDiasExpirado % rTaxa.Frequencia) > 0 ? 1 : 0); decimal t = (Math.Floor(tmpTotDiasExpirado / rTaxa.Frequencia) + m); decimal k = (rTaxa.Frequencia > 0 ? t : 1); vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel( TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito() { Cd_empresa = rEstDeposito.CD_Empresa, Id_ticket = rEstDeposito.ID_Ticket, Tp_pesagem = rEstDeposito.Tp_Pesagem, Id_LanTaxa = 0, Nr_Contrato = rTaxa.Nr_contrato.Value, Cd_produto = vContrato.Cd_produto, Id_Reg = rTaxa.Id_reg, Id_Taxa = rTaxa.Id_taxa.Value, DT_Lancto = rEstDeposito.DT_Lancto, Ps_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(tmpSaldoLan * rTaxa.Valortaxa * k / 100, 0) : 0), Vl_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa * k : 0), Tp_Lancto = "A", D_c = "D" }, banco), "@P_ID_LANTAXA")); } //Controlar saldo tmpSaldoExp -= tmpSaldoLan; rSaldoCarencia.Tot_Saldo -= tmpSaldoLan; lSaldoCarencia.Add(new TRegistro_SaldoCarenciaTaxa() { Id_Taxa = rTaxa.Id_taxa.Value, Id_Movto = vMovDep.Id_Movto, Id_LanTaxa = vID_LanTaxa, QTD_Lancto = tmpSaldoLan, DT_Saldo = rSaldoCarencia.DT_Saldo, ST_Carencia = "N" }); vID_LanTaxa = null; } else { break; } } }