public Dictionary <string, object> Deleta_Item_NF_e_Calcula_Totais(decimal NUMERO_SEQ_NFE, decimal NUMERO_SEQ_ITEM_NFE, bool Moeda) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { var query = (from item in ctx.TB_ITEM_NOTA_ENTRADAs where item.NUMERO_SEQ_NFE == NUMERO_SEQ_NFE && item.NUMERO_SEQ_ITEM_NFE == NUMERO_SEQ_ITEM_NFE select item).ToList(); Dictionary <string, decimal> linha1 = new Dictionary <string, decimal>(); foreach (var linha in query) { linha1.Add("TOTAL_PRODUTOS_NFE", (decimal)linha.VALOR_TOTAL_ITEM_NFE); linha1.Add("TOTAL_IPI_NFE", (decimal)linha.VALOR_IPI_ITEM_NFE); linha1.Add("BASE_ICMS_NFE", (decimal)linha.BASE_ICMS_ITEM_NFE); linha1.Add("VALOR_ICMS_NFE", (decimal)linha.VALOR_ICMS_ITEM_NFE); linha1.Add("BASE_ICMS_SUBS_NFE", (decimal)linha.BASE_ICMS_SUBS_ITEM_NFE); linha1.Add("VALOR_ICMS_SUBS_NFE", (decimal)linha.VALOR_ICMS_SUBS_ITEM_NFE); using (Doran_Saldo_Cliente_Fornecedor abatimento_cliente = new Doran_Saldo_Cliente_Fornecedor(ID_USUARIO)) { abatimento_cliente.NUMERO_SEQ_NF_ENTRADA = linha.NUMERO_SEQ_NFE; abatimento_cliente.NUMERO_ITEM_NF_ENTRADA = linha.NUMERO_SEQ_ITEM_NFE; abatimento_cliente.Cancela_Abatimento_Cliente(ctx); } ctx.TB_ITEM_NOTA_ENTRADAs.DeleteOnSubmit(linha); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Delete(ctx, linha, ctx.TB_ITEM_NOTA_ENTRADAs.ToString(), ID_USUARIO); } linha1["TOTAL_PRODUTOS_NFE"] = linha1["TOTAL_PRODUTOS_NFE"] * (-1); linha1["TOTAL_IPI_NFE"] = linha1["TOTAL_IPI_NFE"] * (-1); linha1["BASE_ICMS_NFE"] = linha1["BASE_ICMS_NFE"] * (-1); linha1["VALOR_ICMS_NFE"] = linha1["VALOR_ICMS_NFE"] * (-1); linha1["BASE_ICMS_SUBS_NFE"] = linha1["BASE_ICMS_SUBS_NFE"] * (-1); linha1["VALOR_ICMS_SUBS_NFE"] = linha1["VALOR_ICMS_SUBS_NFE"] * (-1); delete = true; return(Calcula_e_Grava_Totais_Nota_Entrada(ctx, linha1, Moeda)); } }
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; } } }
public Dictionary <string, object> Calcula_e_Atualiza_Item_Nota_Entrada(Dictionary <string, object> dados) { 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 * (Convert.ToDecimal(dados["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"]); using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext()) { var query = (from item in ctx1.TB_ITEM_NOTA_ENTRADAs where item.NUMERO_SEQ_NFE == _NUMERO_SEQ && item.NUMERO_SEQ_ITEM_NFE == Convert.ToDecimal(dados["NUMERO_SEQ_ITEM_NFE"]) select item).ToList(); if (query.Count() == 0) { throw new Exception("Não foi possível encontrar o item de NF com o ID [" + dados["CODIGO_PRODUTO_ITEM_NFE"].ToString() + "]"); } var query1 = (from linha1 in ctx1.TB_PRODUTOs where linha1.CODIGO_PRODUTO == dados["CODIGO_PRODUTO_ITEM_NFE"].ToString() select new { linha1.ID_PRODUTO }).ToList(); if (!query1.Any()) { throw new Exception("Código de produto não cadastrado"); } decimal ID_PRODUTO = 0; foreach (var item in query1) { ID_PRODUTO = item.ID_PRODUTO; } Dictionary <string, decimal> linha = new Dictionary <string, decimal>(); foreach (var nota in query) { decimal ATOTAL_PRODUTOS_NFE = (decimal)nota.VALOR_TOTAL_ITEM_NFE; decimal ATOTAL_IPI_NFE = (decimal)nota.VALOR_IPI_ITEM_NFE; decimal ABASE_ICMS_NFE = (decimal)nota.BASE_ICMS_ITEM_NFE; decimal AVALOR_ICMS_NFE = (decimal)nota.VALOR_ICMS_ITEM_NFE; decimal ABASE_ICMS_SUBS_NFE = (decimal)nota.BASE_ICMS_SUBS_ITEM_NFE; decimal AVALOR_ICMS_SUBS_NFE = (decimal)nota.VALOR_ICMS_SUBS_ITEM_NFE; nota.ID_PRODUTO_ITEM_NFE = ID_PRODUTO; nota.CODIGO_PRODUTO_ITEM_NFE = dados["CODIGO_PRODUTO_ITEM_NFE"].ToString(); nota.DESCRICAO_PRODUTO_ITEM_NFE = dados["DESCRICAO_PRODUTO_ITEM_NFE"].ToString(); nota.CODIGO_CF_ITEM_NFE = dados["CODIGO_CF_ITEM_NFE"].ToString(); nota.CODIGO_ST_ITEM_NFE = dados["CODIGO_ST_ITEM_NFE"].ToString(); nota.CODIGO_CFOP_ITEM_NFE = dados["CODIGO_CFOP_ITEM_NFE"].ToString(); nota.QTDE_ITEM_NFE = Convert.ToDecimal(dados["QTDE_ITEM_NFE"]); nota.VALOR_UNITARIO_ITEM_NFE = Convert.ToDecimal(dados["VALOR_UNITARIO_ITEM_NFE"]); nota.ALIQ_ICMS_ITEM_NFE = ALIQ_ICMS_ITEM_NFE; nota.VALOR_ICMS_ITEM_NFE = VALOR_ICMS_ITEM_NFE; nota.BASE_ICMS_ITEM_NFE = BASE_ICMS_ITEM_NFE; nota.ALIQ_IPI_ITEM_NFE = Convert.ToDecimal(dados["ALIQ_IPI_ITEM_NFE"]); nota.VALOR_IPI_ITEM_NFE = VALOR_IPI_ITEM_NFE; nota.BASE_ICMS_SUBS_ITEM_NFE = BASE_ICMS_SUBS_ITEM_NFE; nota.VALOR_ICMS_SUBS_ITEM_NFE = VALOR_ICMS_SUBS_ITEM_NFE; nota.VALOR_TOTAL_ITEM_NFE = Convert.ToDecimal(dados["VALOR_TOTAL_ITEM_NFE"]); nota.PERC_IVA_ITEM_NFE = Convert.ToDecimal(dados["PERC_IVA_ITEM_NFE"]); nota.DATA_CHEGADA_ITEM_NFE = DateTime.Now; nota.NUMERO_LOTE_ITEM_NFE = dados["NUMERO_LOTE_ITEM_NFE"].ToString(); nota.ABATIMENTO_CONCEDIDO = dados.ContainsKey("ABATIMENTO_CONCEDIDO") ? Convert.ToDecimal(dados["ABATIMENTO_CONCEDIDO"]) : nota.ABATIMENTO_CONCEDIDO; nota.ALIQ_ICMS_SAIDA_ICMS_ST = dados.ContainsKey("ALIQ_ICMS_SAIDA_ICMS_ST") ? Convert.ToDecimal(dados["ALIQ_ICMS_SAIDA_ICMS_ST"]) : 0; nota.PERCENTUAL_IPI_A_RECUPERAR = dados.ContainsKey("PERCENTUAL_IPI_A_RECUPERAR") ? Convert.ToDecimal(dados["PERCENTUAL_IPI_A_RECUPERAR"]) : 0; var CFOP_DEVOLUCAO = (from linha1 in ctx1.TB_CFOPs where linha1.CODIGO_CFOP == nota.CODIGO_CFOP_ITEM_NFE select linha1.OPERACAO_DEVOLUCAO).ToList().First(); if (nota.ABATIMENTO_CONCEDIDO == 1 && CFOP_DEVOLUCAO == 1) { //if (nota.VALOR_TOTAL_ITEM_NFE != VALOR_TOTAL_ITEM_NFE) //{ using (Doran_Saldo_Cliente_Fornecedor abatimento_cliente = new Doran_Saldo_Cliente_Fornecedor(Convert.ToDecimal(dados["ID_USUARIO"]))) { abatimento_cliente.NUMERO_SEQ_NF_ENTRADA = nota.NUMERO_SEQ_NFE; abatimento_cliente.NUMERO_ITEM_NF_ENTRADA = nota.NUMERO_SEQ_ITEM_NFE; abatimento_cliente.Cancela_Abatimento_Cliente(ctx1); nota.VALOR_TOTAL_ITEM_NFE = VALOR_TOTAL_ITEM_NFE; abatimento_cliente.Grava_Futuro_Abatimento_Cliente(nota.VALOR_TOTAL_ITEM_NFE, ctx1); } //} } if (nota.ABATIMENTO_CONCEDIDO != 1) { using (Doran_Saldo_Cliente_Fornecedor abatimento_cliente = new Doran_Saldo_Cliente_Fornecedor(ID_USUARIO)) { abatimento_cliente.NUMERO_SEQ_NF_ENTRADA = nota.NUMERO_SEQ_NFE; abatimento_cliente.NUMERO_ITEM_NF_ENTRADA = nota.NUMERO_SEQ_ITEM_NFE; abatimento_cliente.Cancela_Abatimento_Cliente(ctx1); } } Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Update(ctx1, ctx1.TB_ITEM_NOTA_ENTRADAs.GetModifiedMembers(nota), ctx1.TB_ITEM_NOTA_ENTRADAs.ToString(), ID_USUARIO); linha.Add("TOTAL_PRODUTOS_NFE", (-ATOTAL_PRODUTOS_NFE + VALOR_TOTAL_ITEM_NFE)); linha.Add("TOTAL_IPI_NFE", (-ATOTAL_IPI_NFE + VALOR_IPI_ITEM_NFE)); linha.Add("BASE_ICMS_NFE", (-ABASE_ICMS_NFE + BASE_ICMS_ITEM_NFE)); linha.Add("VALOR_ICMS_NFE", (-AVALOR_ICMS_NFE + VALOR_ICMS_ITEM_NFE)); linha.Add("BASE_ICMS_SUBS_NFE", (-ABASE_ICMS_SUBS_NFE + BASE_ICMS_SUBS_ITEM_NFE)); linha.Add("VALOR_ICMS_SUBS_NFE", (-AVALOR_ICMS_SUBS_NFE + VALOR_ICMS_SUBS_ITEM_NFE)); } return(Calcula_e_Grava_Totais_Nota_Entrada(ctx1, linha, true)); } }