public static void CalcValorImpostoSubst(TRegistro_ImpostosNF val, decimal Vl_TotalNota, bool st_reducaobasecalcSubstFocus) { //Calcular Vl_ICMS if (val.Pc_reducaobasecalcsubsttrib > 0) { val.Vl_impostosubsttrib = Vl_TotalNota * ((100 - val.Pc_reducaobasecalcsubsttrib) / 100) * (val.Pc_aliquotasubst / 100); } else { val.Vl_impostosubsttrib = val.Vl_basecalcsubsttrib * 1 * (val.Pc_aliquotasubst / 100); } if (st_reducaobasecalcSubstFocus) { if ((val.Vl_basecalcsubsttrib > 0) && (val.Vl_basecalcsubsttrib <= Vl_TotalNota)) { val.Vl_basecalcsubsttrib = (Vl_TotalNota * (1 - (val.Pc_reducaobasecalcsubsttrib / 100))); } else if (Vl_TotalNota > 0) { if (val.Vl_basecalcsubsttrib <= Vl_TotalNota) { val.Pc_reducaobasecalcsubsttrib = 100 - ((val.Vl_basecalcsubsttrib * 100) / (Vl_TotalNota)); } else { val.Pc_reducaobasecalcsubsttrib = decimal.Zero; } } } }
public static void CalcValorImposto(TRegistro_ImpostosNF val, decimal Vl_TotalNota, bool st_reducaobasecalcfocus) { //Calcular valor do imposto if (val.Pc_reducaobasecalc > 0) { val.Vl_impostocalc = (Vl_TotalNota * ((100 - Math.Round(val.Pc_reducaobasecalc, 2)) / 100)) * ((Math.Round(val.Pc_aliquota, 2) - (Math.Round(val.Pc_aliquota, 2) * (Math.Round(val.Pc_reducaoaliquota, 2) / 100)) - Math.Round(val.Pc_retencao, 2)) / 100); val.Vl_impostoretido = (Vl_TotalNota * ((100 - Math.Round(val.Pc_reducaobasecalc, 2)) / 100)) * ((Math.Round(val.Pc_retencao, 2) - (Math.Round(val.Pc_retencao, 2) * (Math.Round(val.Pc_reducaoaliquota, 2) / 100))) / 100); } else { val.Vl_impostocalc = val.Vl_basecalc * ((Math.Round(val.Pc_aliquota, 2) - (Math.Round(val.Pc_aliquota, 2) * (Math.Round(val.Pc_reducaoaliquota, 2) / 100)) - Math.Round(val.Pc_retencao, 2)) / 100); val.Vl_impostoretido = val.Vl_basecalc * ((Math.Round(val.Pc_retencao, 2) - (Math.Round(val.Pc_retencao, 2) * (Math.Round(val.Pc_reducaoaliquota, 2) / 100))) / 100); } if (st_reducaobasecalcfocus) { if ((val.Vl_basecalc > 0) && (val.Vl_basecalc <= Vl_TotalNota)) { val.Vl_basecalc = (Vl_TotalNota * (1 - (val.Pc_reducaobasecalc / 100))); } else if ((Vl_TotalNota > 0) && (val.Vl_basecalc > 0)) { if (val.Vl_basecalc <= Vl_TotalNota) { val.Pc_reducaobasecalc = 100 - ((val.Vl_basecalc * 100) / (Vl_TotalNota)); } else { val.Pc_reducaobasecalc = decimal.Zero; } } } }
public static string Excluir(TRegistro_ImpostosNF val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ImpostosNF qtb_imp = new TCD_ImpostosNF(); try { if (banco == null) { st_transacao = qtb_imp.CriarBanco_Dados(true); } else { qtb_imp.Banco_Dados = banco; } qtb_imp.Excluir(val); if (st_transacao) { qtb_imp.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_imp.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir impostos: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_imp.deletarBanco_Dados(); } } }
public static string Gravar(TRegistro_ImpostosNF val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_ImpostosNF qtb_imp = new TCD_ImpostosNF(); try { if (banco == null) { st_transacao = qtb_imp.CriarBanco_Dados(true); } else { qtb_imp.Banco_Dados = banco; } string retorno = qtb_imp.Gravar(val); //Gravar Contabilidade Imposto Calculado //if (val.Vl_impostocalc > decimal.Zero && val.Nr_lanctofiscal != null) //{ // List<CamadaDados.Contabil.TRegistro_ProcImpostos> lProcImpCalc = // CamadaNegocio.Contabil.TCN_Lan_ProcContabil.BuscarProc_Impostos(val.Cd_empresa, // val.Nr_lanctofiscal.Value.ToString(), // string.Empty, // string.Empty, // val.Cd_impostostr, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // decimal.Zero, // decimal.Zero, // false, // qtb_imp.Banco_Dados); // if (lProcImpCalc.Count > 0) // if (lProcImpCalc.Exists(p => p.Cd_contactb_deb.HasValue && p.Cd_contactb_cred.HasValue)) // CamadaNegocio.Contabil.TCN_LanContabil.ProcessaCTB_Impostos(lProcImpCalc.FindAll(p => p.Cd_contactb_cred.HasValue && p.Cd_contactb_deb.HasValue), qtb_imp.Banco_Dados); //} ////Gravar Contabilidade Imposto Retido //if (val.Vl_impostoretido > decimal.Zero && val.Nr_lanctofiscal != null) //{ // List<CamadaDados.Contabil.TRegistro_ProcImpostos> lProcImpRet = // CamadaNegocio.Contabil.TCN_Lan_ProcContabil.BuscarProc_Impostos(val.Cd_empresa, // val.Nr_lanctofiscal.Value.ToString(), // string.Empty, // string.Empty, // val.Cd_impostostr, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // string.Empty, // decimal.Zero, // decimal.Zero, // false, // qtb_imp.Banco_Dados); // if (lProcImpRet.Count > 0) // if (lProcImpRet.Exists(p => p.Cd_contactb_deb.HasValue && p.Cd_contactb_cred.HasValue)) // CamadaNegocio.Contabil.TCN_LanContabil.ProcessaCTB_Impostos(lProcImpRet.FindAll(p => p.Cd_contactb_cred.HasValue && p.Cd_contactb_deb.HasValue), qtb_imp.Banco_Dados); //} if (st_transacao) { qtb_imp.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_imp.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar impostos: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_imp.deletarBanco_Dados(); } } }
private void CalcularImpostos() { if (string.IsNullOrEmpty(CD_Empresa.Text)) { MessageBox.Show("Obrigatorio informar empresa para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Empresa.Focus(); return; } if (string.IsNullOrEmpty(CFG_Pedido.Text)) { MessageBox.Show("Obrigatorio informar tipo pedido para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } if (Cbx_TP_Fiscal.SelectedValue == null) { MessageBox.Show("Obrigatorio selecionar tipo fiscal para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); Cbx_TP_Fiscal.Focus(); return; } if (string.IsNullOrEmpty(CD_Clifor.Text)) { MessageBox.Show("Obrigatorio informar cliente/fornecedor para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Clifor.Focus(); return; } if (string.IsNullOrEmpty(CD_Endereco.Text)) { MessageBox.Show("Obrigatorio informar endereço para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Endereco.Focus(); return; } if (bsProdutoSimular.Count.Equals(0)) { MessageBox.Show("Obrigatorio informar produto para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); bb_adicionar.Focus(); return; } //Buscar movimentacao comercial do tipo de pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cfg_pedido", vOperador = "=", vVL_Busca = "'" + CFG_Pedido.Text.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'" + Cbx_TP_Fiscal.SelectedValue.ToString() + "'" } }, 1, string.Empty); if (lCfgPed.Count < 1) { MessageBox.Show("Não existe configuração fiscal para o tipo de pedido " + CFG_Pedido.Text.Trim() + ", tipo fiscal " + Cbx_TP_Fiscal.Text + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } CamadaDados.Fiscal.TList_ResumoImposto lResumo = new CamadaDados.Fiscal.TList_ResumoImposto(); for (int i = 0; i < bsProdutoSimular.Count; i++) { string retobs = string.Empty; (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(CD_Empresa.Text, (TP_Mov.Text.Trim().ToUpper().Equals("E") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DV") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DF") ? UF.Text : uf_empresa.Text), (TP_Mov.Text.Trim().ToUpper().Equals("E") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DV") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DF") ? uf_empresa.Text : UF.Text), lCfgPed[0].Cd_movtostring, (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF") ? TP_Mov.Text.Trim().Equals("E") ? "S" : "E" : TP_Mov.Text), cd_condfiscal_clifor.Text, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Cd_condfiscal_produto, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Vl_subtotal, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Quantidade, ref retobs, DateTime.Now, cd_produto.Text, string.Empty, string.Empty, null); (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.Concat(CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(cd_condfiscal_clifor.Text, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Cd_condfiscal_produto, lCfgPed[0].Cd_movtostring, (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF") ? TP_Mov.Text.Trim().Equals("E") ? "S" : "E" : TP_Mov.Text), tp_pessoa.Text, CD_Empresa.Text, lCfgPed[0].Nr_serie, CD_Clifor.Text, string.Empty, DateTime.Now, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Quantidade, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Vl_subtotal, string.Empty, pCd_municipioexecservico, null)); var ipi = (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.Find(v => v.Imposto.St_IPI); var icms = (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.Find(v => v.Imposto.St_ICMS); if (ipi != null && (icms == null ? false : icms.St_somarIPIBaseICMS || icms.St_somarIPIBaseST)) { TRegistro_ImpostosNF rImp = new TRegistro_ImpostosNF(); rImp.Cd_imposto = icms.Cd_imposto; rImp.Pc_aliquota = icms.Pc_aliquota; rImp.Pc_reducaoaliquota = icms.Pc_reducaoaliquota; rImp.Pc_reducaobasecalc = icms.Pc_reducaobasecalc; rImp.Pc_aliquotasubst = icms.Pc_aliquotasubst; rImp.Pc_reducaobasecalcsubsttrib = icms.Pc_reducaobasecalcsubsttrib; rImp.Tp_situacao = icms.Tp_situacao; rImp.Dt_imposto = icms.Dt_imposto; rImp.St_impostouf = 0; rImp.Tp_modbasecalc = icms.Tp_modbasecalc; rImp.Tp_modbasecalcST = icms.Tp_modbasecalcST; rImp.Cd_st = icms.Cd_st; rImp.St_substtrib = icms.St_substtrib; rImp.St_simplesnacional = icms.St_simplesnacional; rImp.Pc_iva_st = icms.Pc_iva_st; rImp.Vl_mva = icms.Vl_mva; rImp.Pc_aliquotaICMSDest = icms.Pc_aliquotaICMSDest; rImp.Vl_pauta = icms.Vl_pauta; rImp.St_somarIPIBaseICMS = icms.St_somarIPIBaseICMS; rImp.St_somarIPIBaseST = icms.St_somarIPIBaseST; rImp.Vl_ipisomar = ipi.Vl_impostocalc; //Calcular Imposto CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item .CalcImpostos(rImp, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Vl_subtotal, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Quantidade, (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF") ? TP_Mov.Text.Trim().Equals("E") ? "S" : "E" : TP_Mov.Text)); //Preencher ICMS Item Nota icms.Vl_basecalcsubsttrib = rImp.Vl_basecalcsubsttrib; icms.Vl_impostosubsttrib = rImp.Vl_impostosubsttrib; } (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.ForEach(p => { if (lResumo.Exists(v => v.Cd_imposto.Trim().Equals(p.Cd_imposto.Value.ToString()) && v.St_totalnota.Trim().Equals(p.St_totalnota.Trim()))) { lResumo.Find(v => v.Cd_imposto.Trim().Equals(p.Cd_impostostr.Trim())).Vl_imposto += p.Vl_impostocalc; lResumo.Find(v => v.Cd_imposto.Trim().Equals(p.Cd_impostostr.Trim())).Vl_impostoretido += p.Vl_impostoretido; lResumo.Find(v => v.Cd_imposto.Trim().Equals(p.Cd_impostostr.Trim())).Vl_impostosubstrib += p.Vl_impostosubsttrib + p.Vl_FCPST; } else { lResumo.Add(new CamadaDados.Fiscal.TRegistro_ResumoImposto() { Cd_imposto = p.Cd_impostostr, Ds_imposto = p.Ds_imposto, Vl_imposto = p.Vl_impostocalc, Vl_impostoretido = p.Vl_impostoretido, Vl_impostosubstrib = p.Vl_impostosubsttrib + p.Vl_FCPST, St_totalnota = p.St_totalnota }); } }); } tot_imposto.Value = lResumo.Sum(p => p.Vl_imposto); tot_retido.Value = lResumo.Sum(p => p.Vl_impostoretido); tot_subst.Value = lResumo.Sum(p => p.Vl_impostosubstrib); bsProdutoSimular.ResetBindings(true); bsResumoImposto.DataSource = lResumo; }