示例#1
0
        //Funciones de ayuda
        public PuntoVenta_Documento CrearInventarioEntrada(string desc, string concepto, string estado, PuntoVenta_Documento item, EmpresaContext db, IClientSessionHandle session = null)
        {
            try
            {
                PuntoVenta_Documento venta = db.PuntoVenta_Documento.get(item._id, db);

                if (venta.Estatus == "CANCELADOE" || venta.Estatus == "CANCELADO" || venta.Estatus == "DEVOLUCION")
                {
                    return(null);
                }

                /*Entrada de inventario*/
                MovimientosES documentoentrada = EntradaInventario(desc, concepto, venta, db);
                WcfErp.Servicios.Inventarios.Inventarios inv = new WcfErp.Servicios.Inventarios.Inventarios();

                venta.Estatus = estado;
                inv.add(documentoentrada, db, session);
                db.PuntoVenta_Documento.update(venta, venta._id, db, session);
                return(venta);
            }
            catch (Exception ex)
            {
                Error(ex, "");
                return(null);
            }
        }
示例#2
0
        //creación de la cancelación
        public List <PuntoVenta_Documento> CrearCancelacionMerma(ListaPuntoVenta_Documento lista)
        {
            try
            {
                List <PuntoVenta_Documento> items = lista.PuntoVenta_Documentos;
                if (items.Count == 0)
                {
                    throw new Exception("Se debe de seleccionar al menos una venta.");
                }
                string         vtaCan = "";
                EmpresaContext db     = new EmpresaContext();
                using (var session = db.client.StartSession())
                {
                    session.StartTransaction();
                    //CREACIÓN DEL DOCUMENTO DE SALIDA

                    //crear inventario de salida
                    MovimientosES documentosalida = new MovimientosES();
                    documentosalida.Concepto       = db.Concepto.get(ConceptoRandom(), db); ////Concepto de salida por venta de mostrador
                    documentosalida.Descripcion    = "Salida de inventario por " + documentosalida.Concepto.Nombre;
                    documentosalida.Sistema_Origen = "CAN";
                    documentosalida.Cancelado      = "NO";
                    documentosalida.Almacen        = db.Almacen.get("5c93c7917d7b3011b8ea951e", db); //PREGUNTAR POR ALMACEN
                    documentosalida.Fecha          = DateTime.Now;

                    foreach (PuntoVenta_Documento item in items)
                    {
                        //ENTRADA DE LOS ARTICULOS DE LOS TICKETS CANCELADOS
                        PuntoVenta_Documento venta = db.PuntoVenta_Documento.get(item._id, db);
                        venta = CrearInventarioEntrada("Entrada de inventario por cancelación de venta de mostrador con el Folio ", "5dfd238d2938b553f0198f2d", "CANCELADOE", venta, db, session);
                        if (venta == null)
                        {
                            vtaCan = item.Folio + ",";
                        }
                        else
                        {
                            //documentosalida = SalidaInventario(documentosalida, venta, db);
                            foreach (PuntoVtaDet detalle in venta.PuntoVtaDet)
                            {
                                //Se crea el articulo dentro del documento de salida
                                documentosalida.Detalles_ES.Add(new Detalles_ES
                                {
                                    Articulo = detalle.Articulo,
                                    Cantidad = Math.Abs((double)detalle.Cantidad),
                                    Clave    = detalle.Articulo.Clave,
                                });
                            }
                        }
                    }

                    documentosalida.Cancelado = "NO";

                    //Separo la fecha del doumento en dia mes y año
                    DateTime fecha = DateTime.Now;
                    documentosalida.Dia = documentosalida.Fecha.Day;
                    documentosalida.Mes = documentosalida.Fecha.Month;
                    documentosalida.Ano = documentosalida.Fecha.Year;

                    //documentos de salida e inventario de salida - guardado
                    WcfErp.Servicios.Inventarios.Inventarios inv = new WcfErp.Servicios.Inventarios.Inventarios();
                    inv.add(documentosalida, db, session);
                    session.CommitTransaction();
                }

                if (vtaCan != "")
                {
                    throw new Exception("Las ventas con los siguientes folios no se pudieron cancelar ya que ya se encuntran canceladas: " + vtaCan.Remove(vtaCan.Length - 1));
                }
                return(items);
            }
            catch (Exception ex)
            {
                Error(ex, "");
                return(null);
            }
        }
示例#3
0
        //agrega una compra
        public override PuntoVenta_Documento add(PuntoVenta_Documento item)
        {
            try
            {
                EmpresaContext db = new EmpresaContext();

                using (var session = db.client.StartSession())
                {
                    session.StartTransaction();

                    item.Folio = AutoIncrement("Ticket", db.db, session).ToString();


                    /*Colocar el tipo de cambio dependiendo de la moneda*/
                    var builder = Builders <TipodeCambio> .Sort;
                    var filter  = builder.Descending("Fecha");

                    List <TipodeCambio> Lst_Tipos = db.TipodeCambio.Filters(filter);
                    String monedaAnterior         = "";
                    foreach (PuntoVtaCobros cobro in item.PuntoVtaCobros)
                    {
                        Boolean entro  = false;
                        String  moneda = "MXN";
                        if (cobro.Tipo.Contains("DLS"))
                        {
                            moneda = "DLS";
                        }
                        foreach (TipodeCambio cambio in Lst_Tipos)
                        {
                            if (monedaAnterior != moneda)
                            {
                                entro = false;
                            }

                            if (cambio.Moneda.Simbolo == moneda && entro == false)
                            {
                                cobro.TipodeCambio = cambio;
                                entro          = true;
                                monedaAnterior = moneda;
                            }
                        }
                    }

                    /*Salida de inventario*/
                    MovimientosES documentosalida = new MovimientosES();
                    documentosalida.Concepto       = db.Concepto.get("5d4cbb5d92a3d9c568660d2a", db); ////Concepto de salida por venta de mostrador
                    documentosalida.Descripcion    = "Salida de inventario de venta de mostrador con el Folio " + item.Folio;
                    documentosalida.Sistema_Origen = "PV";
                    documentosalida.Cancelado      = "NO";
                    documentosalida.Almacen        = item.Almacen;
                    documentosalida.Fecha          = item.Fecha;

                    documentosalida = SalidaInventario(documentosalida, item, db);

                    WcfErp.Servicios.Inventarios.Inventarios inv = new WcfErp.Servicios.Inventarios.Inventarios();

                    inv.add(documentosalida, db, session);
                    db.PuntoVenta_Documento.add(item, db, session);

                    session.CommitTransaction();
                }

                return(item);
            }
            catch (Exception ex)
            {
                Error(ex, "");
                return(null);
            }
        }