public static Boolean ReservarItemPedidoWeb(UsuarioResumido Usuario, Int32 NumPedWeb, Int32 CodServMerc, Decimal Quantidade, ParametroResumido pr) { DataClassesDataContext dcdc = new DataClassesDataContext(); //Decimal? Saldo = Convert.ToDecimal(dcdc.SERVMERCs.SingleOrDefault(sm => sm.CodServMerc.Equals((Int32)CodServMerc)).Saldo); //Decimal? QtdRes = Convert.ToDecimal(dcdc.SERVMERCs.SingleOrDefault(sm => sm.CodServMerc.Equals(CodServMerc)).QtdRes); Decimal? Saldo = 0; Decimal? QtdRes = 0; ClasseBanco csBanco = new ClasseBanco(); var r = csBanco.Query("SELECT Saldo, QtdRes FROM SERVMERC WHERE CODSERVMERC = " + CodServMerc + ""); if (r.Read()) { Saldo = Convert.ToDecimal(r["SALDO"].ToString()); QtdRes = Convert.ToDecimal(r["QtdRes"].ToString()); } r.Close(); r.Dispose(); // verifica se a quantidade da mercadoria solicitada está disponível em estoque // if (pr.SaldoPed == 'S') { if ((Saldo - (QtdRes <= 0 ? 0 : QtdRes)) < Quantidade) { throw new Exception("Quantidade indisponível da(s) mercadoria(s) solicitada(s). Se foi feita importação de Planilha/Arquivo OffLine, favor verificar a listagem de itens não atendidos."); } } // retorna os itens da mercadoria selecionada em outros pedidos // var Itens = (from o in dcdc.ITPEDIDOWEBs where (o.CODSERVMERC == CodServMerc) where (o.CODEMP != Usuario.CodEmp || o.CODUSU != Usuario.CodUsu) select new { o.CODSERVMERC, o.QTDE }).ToList(); // soma a quantidade dos itens retornados var Soma = (Decimal)Itens.Select(c => c.QTDE).Sum(); /* FABIANO ------------------------------------------------------------------------------- Verifica saldo - reserva do produto - reserva de produto via web (ITPEDIDOWEB) ------------------------------------------------------------------------------------------*/ if (pr.SaldoPed == 'S') { // se a soma dos itens em reserva for maior que a quantidade // if (((Saldo - QtdRes) - Soma) < Quantidade) { throw new Exception("Quantidade solicitada é superior ao saldo disponível da mercadoria selecionada."); } } // ajusta as propriedades do Item ITPEDIDOWEB Item = new ITPEDIDOWEB(); Item.NUMPEDWEB = NumPedWeb; Item.CODSERVMERC = CodServMerc; Item.CODEMP = Usuario.CodEmp; Item.CODUSU = Usuario.CodUsu; Item.QTDE = (Decimal)Quantidade; // grava o item na tabela // dcdc.ITPEDIDOWEBs.InsertOnSubmit(Item); dcdc.SubmitChanges(); //dcdc.Dispose(); //FABIANO //GRAVAR NA SERVMERC A QTD. RESERVADA NO MOMENTO DA INCLUSAO DO ITEM //SERVMERC prod = dcdc.SERVMERCs.Single(p => p.CodServMerc == CodServMerc); //prod.QtdRes = (prod.QtdRes == null ? (Convert.ToDouble(Quantidade)) : (prod.QtdRes + Convert.ToDouble(Quantidade))); //dcdc.SubmitChanges(); String sQuantidade = Quantidade.ToString();//51747 csBanco.ExecutarComando(" UPDATE SERVMERC SET QTDRES = ISNULL(QTDRES,0) + " + sQuantidade.Replace(',','.') + " WHERE CODSERVMERC = " + CodServMerc + ""); dcdc.Dispose(); return true; }
partial void UpdateITPEDIDOWEB(ITPEDIDOWEB instance);
partial void DeleteITPEDIDOWEB(ITPEDIDOWEB instance);
partial void InsertITPEDIDOWEB(ITPEDIDOWEB instance);