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