Exemple #1
0
        public bool ValidarStockyPrecio(ref bool stockOK, ref bool precioOK, string almacen,
                                        int listaPrecio)
        {
            bool esValido = true;

            SAPbobsCOM.Recordset oRecordset = null;
            oRecordset = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
            DBOracle detalleCopy = new DBOracle(ServerOracle, UserOracle, PassOracle);

            detalleCopy = dbOracleDet;

            while (detalleCopy.oDataReader.Read())
            {
                string cod_articulo = "";
                double cantidad     = 0;
                double precio       = 0;
                cod_articulo = detalleCopy.oDataReader["cod_articulo"].ToString();
                cantidad     = Convert.ToDouble(detalleCopy.oDataReader["cantidad"].ToString());
                precio       = Convert.ToDouble(detalleCopy.oDataReader["precio_unitario"].ToString());
                oRecordset.DoQuery(ConsultasSap.GetItemStock(cod_articulo, almacen));
                if (oRecordset.RecordCount > 0)
                {
                    if (cantidad > Convert.ToDouble(oRecordset.Fields.Item("Stock").Value.ToString()))
                    {
                        stockOK  = false;
                        esValido = false;
                    }
                }

                oRecordset.DoQuery(ConsultasSap.GetPrecioLista(cod_articulo, listaPrecio));
                if (oRecordset.RecordCount > 0)
                {
                    if (precio < Convert.ToDouble(oRecordset.Fields.Item("Price").Value.ToString()))
                    {
                        precioOK = false;
                        esValido = false;
                    }
                }
            }

            dbSap.LiberarObjeto(oRecordset);

            return(esValido);
        }
Exemple #2
0
        public bool ValidarCreditoDisponible(ref string almacen)
        {
            bool esValido = false;

            SAPbobsCOM.Recordset oRecordset = null;
            string cardCode = string.Empty;

            oRecordset = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);

            DBOracle consultas = new DBOracle(ServerOracle, UserOracle, PassOracle);

            string empresaSAP = "";

            consultas.EjecutaSQL(ConsultasOracle.EmpresaEquivalencia(dbOracleCab.oDataReader["cod_empresa"].ToString()));
            if (consultas.oDataReader.Read())
            {
                empresaSAP = consultas.oDataReader["codEmpresaSAP"].ToString();
            }

            consultas.EjecutaSQL(ConsultasOracle.EmpleadoEquivalencia(dbOracleCab.oDataReader["cod_cliente"].ToString(), empresaSAP));
            if (consultas.oDataReader.Read())
            {
                cardCode = consultas.oDataReader["codCliente"].ToString();
            }
            consultas.EjecutaSQL(ConsultasOracle.SucursalEquivalencia(dbOracleCab.oDataReader["cod_empresa"].ToString(), dbOracleCab.oDataReader["cod_sucursal"].ToString()));
            if (consultas.oDataReader.Read())
            {
                almacen = consultas.oDataReader["codSucSAP"].ToString();
            }

            oRecordset.DoQuery(ConsultasSap.GetLineaCreditoUDO(cardCode, empresaSAP));
            if (oRecordset.RecordCount > 0)
            {
                if (Convert.ToDouble(oRecordset.Fields.Item("U_Saldo_disp").Value) > Convert.ToDouble(dbOracleCab.oDataReader["monto_total"].ToString()))
                {
                    esValido = true;
                }
            }

            dbSap.LiberarObjeto(oRecordset);

            return(esValido);
        }
Exemple #3
0
        public void CrearPedido(SAPbobsCOM.Documents oDoc, string nro_comprobante,
                                int Respuesta, string MsgErrSBO, string identi, bool esPedido,
                                bool creditoOK, bool stockOK, bool precioOK, string almacen,
                                int listaPrecio)
        {
            DBOracle consultas      = new DBOracle(ServerOracle, UserOracle, PassOracle);
            DBOracle dbOracleUpdate = new DBOracle(ServerOracle, UserOracle, PassOracle);

            SAPbobsCOM.Recordset oRecordset = null;
            oRecordset = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
            string empresa    = string.Empty;
            string empresaSAp = "";
            string nroPedido  = "";
            int    filas      = 0;

            if (esPedido)
            {
                oDoc = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders);
            }
            else
            {
                oDoc = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oQuotations);
            }

            //oRecordset.DoQuery(ConsultasSap.GetCardCode(dbOracleCab.oDataReader["ruc"].ToString()));
            //if (oRecordset.RecordCount > 0)
            //{
            //    oDoc.CardCode = oRecordset.Fields.Item("CardCode").Value.ToString();
            //}
            empresa = dbOracleCab.oDataReader["cod_empresa"].ToString();

            consultas.EjecutaSQL(ConsultasOracle.EmpresaEquivalencia(empresa));
            if (consultas.oDataReader.Read())
            {
                oDoc.BPL_IDAssignedToInvoice = Convert.ToInt32(consultas.oDataReader["codEmpresaSAP"].ToString());
                empresaSAp = consultas.oDataReader["codEmpresaSAP"].ToString();
            }

            consultas.EjecutaSQL(ConsultasOracle.EmpleadoEquivalencia(dbOracleCab.oDataReader["cod_cliente"].ToString(), empresaSAp));
            if (consultas.oDataReader.Read())
            {
                oDoc.CardCode = consultas.oDataReader["codCliente"].ToString();
            }

            oDoc.DocDate    = Convert.ToDateTime(dbOracleCab.oDataReader["fec_comprobante"].ToString());
            oDoc.DocDueDate = Convert.ToDateTime(dbOracleCab.oDataReader["fec_comprobante"].ToString());

            //oDoc.SalesPersonCode = Convert.ToInt32(dbOracleCab.oDataReader["cod_vendedor"].ToString());

            consultas.EjecutaSQL(ConsultasOracle.CondicionVentaEquivalencia(empresa, dbOracleCab.oDataReader["cod_condicion_venta"].ToString()));
            if (consultas.oDataReader.Read())
            {
                oDoc.PaymentGroupCode = Convert.ToInt32(consultas.oDataReader["codCondicionSAP"].ToString());
            }

            consultas.EjecutaSQL(ConsultasOracle.MonedaEquivalencia(dbOracleCab.oDataReader["cod_moneda"].ToString()));
            if (consultas.oDataReader.Read())
            {
                oDoc.DocCurrency = consultas.oDataReader["codMonedaSAP"].ToString();
            }

            if (!dbOracleCab.oDataReader["tip_cambio"].ToString().Equals(""))
            {
                oDoc.DocRate = Convert.ToDouble(dbOracleCab.oDataReader["tip_cambio"].ToString());
            }
            //oDoc.DocumentStatus = SAPbobsCOM.BoStatus.bost_Open;// dbOracleCab.oDataReader["estado"].ToString();
            oDoc.Comments     = dbOracleCab.oDataReader["comentario"].ToString();
            oDoc.FederalTaxID = dbOracleCab.oDataReader["ruc"].ToString();
            oDoc.Address      = dbOracleCab.oDataReader["dir_cliente"].ToString();
            //oDoc.DocTotal = Convert.ToDouble(dbOracleCab.oDataReader["monto_total"].ToString());
            nroPedido = dbOracleCab.oDataReader["tip_comprobante"].ToString() + "-" + dbOracleCab.oDataReader["ser_comprobante"].ToString() + "-" + dbOracleCab.oDataReader["nro_comprobante"].ToString();
            oDoc.UserFields.Fields.Item("U_Tipo").Value               = dbOracleCab.oDataReader["tip_comprobante"].ToString();
            oDoc.UserFields.Fields.Item("U_Serie").Value              = dbOracleCab.oDataReader["ser_comprobante"].ToString();
            oDoc.UserFields.Fields.Item("U_Numero").Value             = dbOracleCab.oDataReader["nro_comprobante"].ToString();
            oDoc.UserFields.Fields.Item("U_cod_provincia").Value      = dbOracleCab.oDataReader["cod_provincia"].ToString();
            oDoc.UserFields.Fields.Item("U_cod_ciudad").Value         = dbOracleCab.oDataReader["cod_ciudad"].ToString();
            oDoc.UserFields.Fields.Item("U_enviar_ypane").Value       = dbOracleCab.oDataReader["enviar_ypane"].ToString();
            oDoc.UserFields.Fields.Item("U_wms_preparado").Value      = dbOracleCab.oDataReader["wms_preparado"].ToString();
            oDoc.UserFields.Fields.Item("U_wms_id_transaccion").Value = dbOracleCab.oDataReader["wms_id_transaccion"].ToString();
            oDoc.UserFields.Fields.Item("U_control").Value            = dbOracleCab.oDataReader["solo_credito"].ToString();
            string origen = "";

            if (dbOracleCab.oDataReader["origen"].ToString().Equals(""))
            {
                origen = "CAST";
            }
            else
            {
                origen = "INVENTIVA";
            }
            oDoc.UserFields.Fields.Item("U_DocOrigen").Value = origen;

            if (!creditoOK)
            {
                oDoc.UserFields.Fields.Item("U_LimiCrediVal").Value = "S";
            }
            if (!stockOK)
            {
                oDoc.UserFields.Fields.Item("U_StockVal").Value = "S";
            }
            if (!precioOK)
            {
                oDoc.UserFields.Fields.Item("U_PrecioVal").Value = "S";
            }
            oDoc.DocType = SAPbobsCOM.BoDocumentTypes.dDocument_Items;

            dbOracleDet = new DBOracle(ServerOracle, UserOracle, PassOracle);
            int i = 0;

            if (dbOracleDet.EjecutaSQL(ConsultasOracle.GetPedidosDet(nro_comprobante)))
            {
                while (dbOracleDet.oDataReader.Read())
                {
                    oDoc.Lines.ItemCode  = dbOracleDet.oDataReader["cod_articulo"].ToString();
                    oDoc.Lines.Quantity  = Convert.ToDouble(dbOracleDet.oDataReader["cantidad"].ToString());
                    oDoc.Lines.UnitPrice = Convert.ToDouble(dbOracleDet.oDataReader["precio_unitario"].ToString());
                    oDoc.Lines.TaxCode   = "IVA_10";

                    if (!stockOK && !precioOK)
                    {
                        double cantidad = 0;
                        double precio   = 0;
                        oRecordset.DoQuery(ConsultasSap.GetItemStock(oDoc.Lines.ItemCode, almacen));
                        if (oRecordset.RecordCount > 0)
                        {
                            if (oDoc.Lines.Quantity > Convert.ToDouble(oRecordset.Fields.Item("Stock").Value.ToString()))
                            {
                                cantidad = Convert.ToDouble(oRecordset.Fields.Item("Stock").Value.ToString());
                            }
                        }
                        oRecordset.DoQuery(ConsultasSap.GetPrecioLista(oDoc.Lines.ItemCode, listaPrecio));
                        if (oRecordset.RecordCount > 0)
                        {
                            if (oDoc.Lines.UnitPrice < Convert.ToDouble(oRecordset.Fields.Item("Price").Value.ToString()))
                            {
                                precio = Convert.ToDouble(oRecordset.Fields.Item("Price").Value.ToString());
                            }
                        }
                        oDoc.Lines.UserFields.Fields.Item("U_MotivoOferta").Value =
                            String.Format("Cantidad solicitada: {0}, disponible: {1}. Precio venta: {2}, lista: {3}.",
                                          oDoc.Lines.Quantity, cantidad, oDoc.Lines.UnitPrice, precio);
                    }
                    else
                    {
                        if (!stockOK)
                        {
                            oRecordset.DoQuery(ConsultasSap.GetItemStock(oDoc.Lines.ItemCode, almacen));
                            if (oRecordset.RecordCount > 0)
                            {
                                if (oDoc.Lines.Quantity > Convert.ToDouble(oRecordset.Fields.Item("Stock").Value.ToString()))
                                {
                                    oDoc.Lines.UserFields.Fields.Item("U_MotivoOferta").Value =
                                        String.Format("Cantidad solicitada ({0}) supera el stock disponible ({1}).",
                                                      oDoc.Lines.Quantity, Convert.ToDouble(oRecordset.Fields.Item("Stock").Value.ToString()));
                                }
                            }
                        }
                        if (!precioOK)
                        {
                            oRecordset.DoQuery(ConsultasSap.GetPrecioLista(oDoc.Lines.ItemCode, listaPrecio));
                            if (oRecordset.RecordCount > 0)
                            {
                                if (oDoc.Lines.UnitPrice < Convert.ToDouble(oRecordset.Fields.Item("Price").Value.ToString()))
                                {
                                    oDoc.Lines.UserFields.Fields.Item("U_MotivoOferta").Value =
                                        String.Format("Precio de venta ({0}) es menor al de la lista de precio predeterminada ({1}).",
                                                      oDoc.Lines.UnitPrice, Convert.ToDouble(oRecordset.Fields.Item("Price").Value.ToString()));
                                }
                            }
                        }
                    }

                    oDoc.Lines.SetCurrentLine(i);
                    oDoc.Lines.Add();
                    i++;
                }
            }

            Respuesta = oDoc.Add();
            if (Respuesta != 0)
            {
                oCompany.GetLastError(out Respuesta, out MsgErrSBO);

                CrearRegistroLog(Respuesta.ToString(), MsgErrSBO, nro_comprobante);
                filas = 0;
                dbOracleUpdate.EjecutaSQL(ConsultasOracle.UpdatePedidoCab(nro_comprobante), ref filas);
                filas = 0;
                dbOracleUpdate.EjecutaSQL(ConsultasOracle.UpdatePedidoDet(nro_comprobante), ref filas);
                WriteErrorLog("CrearPedido:" + nroPedido + " Error: " + Respuesta + " " + MsgErrSBO);
            }
            else
            {
                identi = oCompany.GetNewObjectKey();
                dbOracleUpdate.EjecutaSQL(ConsultasOracle.UpdatePedidoCab(nro_comprobante), ref filas);
                filas = 0;
                dbOracleUpdate.EjecutaSQL(ConsultasOracle.UpdatePedidoDet(nro_comprobante), ref filas);
            }

            dbSap.LiberarObjeto(oRecordset);
        }
Exemple #4
0
        public void ProcesarPedidos()
        {
            dbOracleCab = new DBOracle(ServerOracle, UserOracle, PassOracle);
            dbSap       = new DBSap();

            SAPbobsCOM.Documents oDoc       = null;
            SAPbobsCOM.Recordset oRecordset = null;

            int    Respuesta         = 0;
            string MsgErrSBO         = "";
            string identi            = "";
            string nro_comprobante   = "";
            string error_comprobante = "";
            bool   esPedido          = true;
            bool   creditoOK         = true;
            bool   stockOK           = true;
            bool   precioOK          = true;
            string almacen           = "";
            int    listaPrecio       = 0;

            try
            {
                if (dbOracleCab.EjecutaSQL(ConsultasOracle.ValidarPedidoCompleto()))
                {
                    while (dbOracleCab.oDataReader.Read())
                    {
                        if (dbSap.oCompany == null)
                        {
                            dbSap.Conectar();
                            oCompany = dbSap.oCompany;
                        }

                        error_comprobante = dbOracleCab.oDataReader["tip_comprobante"].ToString() + "-" + dbOracleCab.oDataReader["ser_comprobante"].ToString() + "-" + dbOracleCab.oDataReader["nro_comprobante"].ToString();
                        nro_comprobante   = dbOracleCab.oDataReader["nro_comprobante"].ToString();
                        dbOracleDet       = new DBOracle(ServerOracle, UserOracle, PassOracle);
                        dbOracleDet.EjecutaSQL(ConsultasOracle.GetPedidosDet(nro_comprobante));

                        oRecordset = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);

                        oRecordset.DoQuery(ConsultasSap.GetParametroValor("ListaPrecio"));
                        if (oRecordset.RecordCount > 0)
                        {
                            listaPrecio = Convert.ToInt32(oRecordset.Fields.Item("ValParam").Value.ToString());
                        }

                        if (!ValidarCreditoDisponible(ref almacen))
                        {
                            esPedido  = false;
                            creditoOK = false;
                        }
                        if (!ValidarStockyPrecio(ref stockOK, ref precioOK, almacen, listaPrecio))
                        {
                            esPedido = false;
                        }

                        CrearPedido(oDoc, nro_comprobante, Respuesta, MsgErrSBO,
                                    identi, esPedido, creditoOK, stockOK, precioOK, almacen,
                                    listaPrecio);
                        esPedido  = true;
                        creditoOK = true;
                        stockOK   = true;
                        precioOK  = true;

                        nro_comprobante = "";
                    }
                }
            }
            catch (Exception ex)
            {
                CrearRegistroLog(ex.HResult.ToString(), ex.Message.ToString(), nro_comprobante);
                WriteErrorLog("ProcesarPedidos:" + error_comprobante + " Mensaje:" + ex.Message.ToString());
            }
            finally
            {
                dbSap.LiberarObjeto(oDoc);
                dbSap.LiberarObjeto(oRecordset);
                dbSap.LiberarObjeto(oCompany);
            }
        }