public void Grava_Futuro_Abatimento_Cliente(decimal?VALOR, DataContext ctx) { System.Data.Linq.Table <TB_SALDO_CLIENTE_FORNECEDOR> Entidade = ctx.GetTable <TB_SALDO_CLIENTE_FORNECEDOR>(); TB_SALDO_CLIENTE_FORNECEDOR novo = new TB_SALDO_CLIENTE_FORNECEDOR(); if (CODIGO_CLIENTE == 0) { CODIGO_CLIENTE = BuscaCodigoCliente(); } novo.CODIGO_CLIENTE = CODIGO_CLIENTE; novo.CODIGO_FORNECEDOR = 0; novo.NUMERO_SEQ_NF_SAIDA = 0; novo.NUMERO_ITEM_NFS = 0; novo.NUMERO_SEQ_NF_ENTRADA = NUMERO_SEQ_NF_ENTRADA; novo.NUMERO_ITEM_NFE = NUMERO_ITEM_NF_ENTRADA; novo.DATA_LANCAMENTO = DateTime.Now; novo.VALOR_LANCAMENTO = VALOR; novo.SALDO_RESTANTE = VALOR; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO); }
/// <summary> /// Calcula os impostos do item da nota fiscal (ICMS, Base ICMS, ICMS de Substituição, ICMS de Substituição e Total IPI, /// e grava na tabela TB_ITEM_NOTA_SAIDA /// </summary> /// <param name="dados">Objeto JSON com as informações das colunas da tabela</param> /// <returns>Retorna os totais da nota</returns> public Dictionary <string, object> Calcula_e_Grava_Item_Nota_Saida(Dictionary <string, object> dados) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { try { ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(IsolationLevel.ReadUncommitted); decimal CODIGO_CLIENTE = dados.ContainsKey("ID_CLIENTE") ? decimal.TryParse(dados["ID_CLIENTE"].ToString(), out CODIGO_CLIENTE) ? Convert.ToDecimal(dados["ID_CLIENTE"]) : 0 : 0; if (!dados.ContainsKey("ID_PRODUTO")) { dados.Add("ID_PRODUTO", Busca_ID_PRODUTO(dados["CODIGO_PRODUTO_ITEM_NF"].ToString())); } decimal ALIQ_ISS = dados.ContainsKey("ALIQ_ISS_ITEM_NF") ? decimal.TryParse(dados["ALIQ_ISS_ITEM_NF"].ToString(), out ALIQ_ISS) ? Convert.ToDecimal(dados["ALIQ_ISS_ITEM_NF"]) : 0 : decimal.TryParse(dados["ALIQ_ISS"].ToString(), out ALIQ_ISS) ? Convert.ToDecimal(dados["ALIQ_ISS"]) : 0; decimal VALOR_TOTAL_ITEM_NF = Convert.ToDecimal(dados["VALOR_TOTAL_ITEM_NF"]); decimal VALOR_ISS_ITEM_NF = ALIQ_ISS > Convert.ToDecimal(0.00) ? Math.Round(VALOR_TOTAL_ITEM_NF * (ALIQ_ISS / 100), 2, MidpointRounding.ToEven) : 0; decimal BASE_ISS_ITEM_NF = VALOR_TOTAL_ITEM_NF; System.Data.Linq.Table <TB_ITEM_NOTA_SAIDA> Entidade = ctx.GetTable <TB_ITEM_NOTA_SAIDA>(); TB_ITEM_NOTA_SAIDA novo = new TB_ITEM_NOTA_SAIDA(); novo.NUMERO_ITEM_NF = _NUMERO_SEQ; novo.ID_PRODUTO_ITEM_NF = Convert.ToDecimal(dados["ID_PRODUTO"]); novo.CODIGO_PRODUTO_ITEM_NF = dados["CODIGO_PRODUTO_ITEM_NF"].ToString(); novo.DESCRICAO_PRODUTO_ITEM_NF = dados["DESCRICAO_PRODUTO_ITEM_NF"].ToString(); novo.UNIDADE_MEDIDA_ITEM_NF = dados["UNIDADE_MEDIDA_ITEM_NF"].ToString(); novo.QTDE_ITEM_NF = Convert.ToDecimal(dados["QTDE_ITEM_NF"]); novo.VALOR_UNITARIO_ITEM_NF = Convert.ToDecimal(dados["VALOR_UNITARIO_ITEM_NF"]); novo.VALOR_DESCONTO_ITEM_NF = dados.ContainsKey("VALOR_DESCONTO_ITEM_NF") ? Convert.ToDecimal(dados["VALOR_DESCONTO_ITEM_NF"]) : 0; novo.VALOR_TOTAL_ITEM_NF = VALOR_TOTAL_ITEM_NF; novo.VALOR_ISS_ITEM_NF = VALOR_ISS_ITEM_NF; novo.ALIQ_ISS_ITEM_NF = ALIQ_ISS; novo.BASE_ISS_ITEM_NF = BASE_ISS_ITEM_NF; novo.NUMERO_PEDIDO_VENDA = dados.ContainsKey("NUMERO_PEDIDO_VENDA") ? Convert.ToDecimal(dados["NUMERO_PEDIDO_VENDA"]) : 0; novo.NUMERO_ITEM_PEDIDO_VENDA = dados.ContainsKey("NUMERO_ITEM_PEDIDO_VENDA") ? Convert.ToDecimal(dados["NUMERO_ITEM_PEDIDO_VENDA"]) : 0; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO); ctx.SubmitChanges(); Dictionary <string, decimal> linha1 = new Dictionary <string, decimal>(); linha1.Add("TOTAL_SERVICOS_NF", VALOR_TOTAL_ITEM_NF); linha1.Add("TOTAL_ISS_NF", VALOR_ISS_ITEM_NF); linha1.Add("BASE_ISS_NF", BASE_ISS_ITEM_NF); ctx.Transaction.Commit(); return(Calcula_e_Grava_Totais_Nota_Saida(linha1, true)); } catch { ctx.Transaction.Rollback(); throw; } } }
public Dictionary <string, object> Calcula_e_Grava_Item_Nota_Entrada(Dictionary <string, object> dados) { string str_conn = ConfigurationManager.ConnectionStrings["Doran_Servicos_ORM.Properties.Settings.Doran_ERP_ServicosConnectionString"].ConnectionString; using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext()) { string CODIGO_CFOP = dados["CODIGO_CFOP_ITEM_NFE"].ToString(); string CLAS_FISCAL_NF = dados["CODIGO_CF_ITEM_NFE"].ToString(); decimal VALOR_TOTAL_ITEM_NFE = Convert.ToDecimal(dados["VALOR_TOTAL_ITEM_NFE"]); decimal VALOR_IPI_ITEM_NFE = Math.Round(VALOR_TOTAL_ITEM_NFE * (Convert.ToDecimal(dados["ALIQ_IPI_ITEM_NFE"]) / 100), 2); decimal ALIQ_ICMS_ITEM_NFE = Convert.ToDecimal(dados["ALIQ_ICMS_ITEM_NFE"]); decimal BASE_ICMS_ITEM_NFE = dados.ContainsKey("BASE_ICMS_ITEM_NFE") ? Convert.ToDecimal(dados["BASE_ICMS_ITEM_NFE"]) : Convert.ToDecimal(dados["VALOR_TOTAL_ITEM_NFE"]); decimal VALOR_ICMS_ITEM_NFE = Math.Round(BASE_ICMS_ITEM_NFE * (ALIQ_ICMS_ITEM_NFE / 100), 2); decimal BASE_ICMS_SUBS_ITEM_NFE = Convert.ToDecimal(dados["BASE_ICMS_SUBS_ITEM_NFE"]); decimal VALOR_ICMS_SUBS_ITEM_NFE = Convert.ToDecimal(dados["VALOR_ICMS_SUBS_ITEM_NFE"]); try { ctx1.Connection.ConnectionString = str_conn; ctx1.Connection.Open(); ctx1.Transaction = ctx1.Connection.BeginTransaction(IsolationLevel.ReadUncommitted); decimal ID_PRODUTO = 0; if (!dados.ContainsKey("ID_PRODUTO")) { var query = (from linha1 in ctx1.TB_PRODUTOs where linha1.CODIGO_PRODUTO == dados["CODIGO_PRODUTO_ITEM_NFE"].ToString() select new { linha1.ID_PRODUTO }).ToList(); foreach (var item in query) { ID_PRODUTO = item.ID_PRODUTO; } } else { if (!decimal.TryParse(dados["ID_PRODUTO"].ToString(), out ID_PRODUTO)) { throw new Exception("ID de produto inválido"); } ID_PRODUTO = Convert.ToDecimal(dados["ID_PRODUTO"]); } var existeProduto = (from linha1 in ctx1.TB_PRODUTOs where linha1.ID_PRODUTO == ID_PRODUTO select linha1).Any(); if (!existeProduto) { throw new Exception("Código de produto não cadastrado"); } System.Data.Linq.Table <TB_ITEM_NOTA_ENTRADA> Entidade = ctx1.GetTable <TB_ITEM_NOTA_ENTRADA>(); TB_ITEM_NOTA_ENTRADA novo = new TB_ITEM_NOTA_ENTRADA(); novo.NUMERO_SEQ_NFE = _NUMERO_SEQ; novo.ID_PRODUTO_ITEM_NFE = ID_PRODUTO; novo.CODIGO_PRODUTO_ITEM_NFE = dados["CODIGO_PRODUTO_ITEM_NFE"].ToString().Trim(); novo.DESCRICAO_PRODUTO_ITEM_NFE = dados["DESCRICAO_PRODUTO_ITEM_NFE"].ToString().Trim(); novo.CODIGO_CF_ITEM_NFE = dados["CODIGO_CF_ITEM_NFE"].ToString(); novo.CODIGO_ST_ITEM_NFE = dados["CODIGO_ST_ITEM_NFE"].ToString(); novo.CODIGO_CFOP_ITEM_NFE = dados["CODIGO_CFOP_ITEM_NFE"].ToString(); novo.QTDE_ITEM_NFE = Convert.ToDecimal(dados["QTDE_ITEM_NFE"]); novo.VALOR_UNITARIO_ITEM_NFE = Convert.ToDecimal(dados["VALOR_UNITARIO_ITEM_NFE"]); novo.VALOR_TOTAL_ITEM_NFE = VALOR_TOTAL_ITEM_NFE; novo.ALIQ_ICMS_ITEM_NFE = ALIQ_ICMS_ITEM_NFE; novo.VALOR_ICMS_ITEM_NFE = VALOR_ICMS_ITEM_NFE; novo.BASE_ICMS_ITEM_NFE = BASE_ICMS_ITEM_NFE; novo.ALIQ_IPI_ITEM_NFE = Convert.ToDecimal(dados["ALIQ_IPI_ITEM_NFE"]); novo.VALOR_IPI_ITEM_NFE = VALOR_IPI_ITEM_NFE; novo.BASE_ICMS_SUBS_ITEM_NFE = BASE_ICMS_SUBS_ITEM_NFE; novo.VALOR_ICMS_SUBS_ITEM_NFE = VALOR_ICMS_SUBS_ITEM_NFE; novo.PERC_IVA_ITEM_NFE = Convert.ToDecimal(dados["PERC_IVA_ITEM_NFE"]); novo.DATA_CHEGADA_ITEM_NFE = DateTime.Now; novo.NUMERO_LOTE_ITEM_NFE = dados["NUMERO_LOTE_ITEM_NFE"].ToString(); novo.NUMERO_PEDIDO_COMPRA = dados.ContainsKey("NUMERO_PEDIDO_COMPRA") ? Convert.ToDecimal(dados["NUMERO_PEDIDO_COMPRA"]) : 0; novo.NUMERO_ITEM_COMPRA = dados.ContainsKey("NUMERO_ITEM_COMPRA") ? Convert.ToDecimal(dados["NUMERO_ITEM_COMPRA"]) : 0; novo.SALDO_ITEM_NFE = Convert.ToDecimal(dados["QTDE_ITEM_NFE"]); novo.ABATIMENTO_CONCEDIDO = dados.ContainsKey("ABATIMENTO_CONCEDIDO") ? Convert.ToDecimal(dados["ABATIMENTO_CONCEDIDO"]) : 0; novo.ALIQ_ICMS_SAIDA_ICMS_ST = dados.ContainsKey("ALIQ_ICMS_SAIDA_ICMS_ST") ? Convert.ToDecimal(dados["ALIQ_ICMS_SAIDA_ICMS_ST"]) : 0; novo.PERCENTUAL_IPI_A_RECUPERAR = dados.ContainsKey("PERCENTUAL_IPI_A_RECUPERAR") ? Convert.ToDecimal(dados["PERCENTUAL_IPI_A_RECUPERAR"]) : 0; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx1, novo, Entidade.ToString(), ID_USUARIO); ctx1.SubmitChanges(); var CFOP_DEVOLUCAO = (from linha1 in ctx1.TB_CFOPs where linha1.CODIGO_CFOP == novo.CODIGO_CFOP_ITEM_NFE select linha1.OPERACAO_DEVOLUCAO).ToList().First(); if (novo.ABATIMENTO_CONCEDIDO == 1 && CFOP_DEVOLUCAO == 1) { using (Doran_Saldo_Cliente_Fornecedor abatimento_cliente = new Doran_Saldo_Cliente_Fornecedor(Convert.ToDecimal(dados["ID_USUARIO"]))) { abatimento_cliente.NUMERO_SEQ_NF_ENTRADA = novo.NUMERO_SEQ_NFE; abatimento_cliente.NUMERO_ITEM_NF_ENTRADA = novo.NUMERO_SEQ_ITEM_NFE; abatimento_cliente.Grava_Futuro_Abatimento_Cliente(novo.VALOR_TOTAL_ITEM_NFE, ctx1); } } Dictionary <string, decimal> linha = new Dictionary <string, decimal>(); linha.Add("TOTAL_PRODUTOS_NFE", VALOR_TOTAL_ITEM_NFE); linha.Add("TOTAL_IPI_NFE", VALOR_IPI_ITEM_NFE); linha.Add("BASE_ICMS_NFE", BASE_ICMS_ITEM_NFE); linha.Add("VALOR_ICMS_NFE", VALOR_ICMS_ITEM_NFE); linha.Add("BASE_ICMS_SUBS_NFE", BASE_ICMS_SUBS_ITEM_NFE); linha.Add("VALOR_ICMS_SUBS_NFE", VALOR_ICMS_SUBS_ITEM_NFE); Dictionary <string, object> retorno = Calcula_e_Grava_Totais_Nota_Entrada(ctx1, linha, true); ctx1.Transaction.Commit(); return(retorno); } catch { ctx1.Transaction.Rollback(); throw; } } }