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_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)); } }