Example #1
0
        public static tDocumento ToTDocumento(this Documento documento)
        {
            var tdocumento = new tDocumento
            {
                aFolio         = documento.Folio,
                aNumMoneda     = documento.NumeroMoneda,
                aTipoCambio    = documento.TipoDeCambio,
                aImporte       = documento.Importe,
                aDescuentoDoc1 = documento.DescuentoDoc1,
                aDescuentoDoc2 = documento.DescuentoDoc2,
                aSistemaOrigen = documento.SistemaDeOrigen,
                aCodConcepto   = documento.CodigoConcepto,
                aSerie         = documento.Serie,
                aFecha         = documento.Fecha.ToString("MM/dd/yyyy"),
                aCodigoCteProv = documento.CodigoClienteProveedor,
                aCodigoAgente  = documento.CodigoAgente,
                aReferencia    = documento.Referencia,
                aAfecta        = documento.Afecta,
                aGasto1        = documento.Gasto1,
                aGasto2        = documento.Gasto2,
                aGasto3        = documento.Gasto3
            };

            return(tdocumento);
        }
Example #2
0
        public int Crear(tDocumento documento)
        {
            var documentoId = 0;

            _sdk.fAltaDocumento(ref documentoId, ref documento).ToResultadoSdk(_sdk).ThrowIfError();

            return(documentoId);
        }
Example #3
0
        public tDocumento ExtraerTDocumento(Documento documento)
        {
            var tdocumento = new tDocumento();

            tdocumento.aFolio         = documento.Folio;
            tdocumento.aNumMoneda     = documento.NumeroMoneda;
            tdocumento.aTipoCambio    = documento.TipoDeCambio;
            tdocumento.aImporte       = documento.Importe;
            tdocumento.aDescuentoDoc1 = documento.DescuentoDoc1;
            tdocumento.aDescuentoDoc2 = documento.DescuentoDoc2;
            tdocumento.aSistemaOrigen = documento.SistemaDeOrigen;
            tdocumento.aCodConcepto   = documento.CodigoConcepto;
            tdocumento.aSerie         = documento.Serie;
            tdocumento.aFecha         = documento.Fecha.ToString("MM/dd/yyyy");
            tdocumento.aCodigoCteProv = documento.CodigoClienteProveedor;
            tdocumento.aCodigoAgente  = documento.CodigoAgente;
            tdocumento.aReferencia    = documento.Referencia;
            tdocumento.aAfecta        = documento.Afecta;
            tdocumento.aGasto1        = documento.Gasto1;
            tdocumento.aGasto2        = documento.Gasto2;
            tdocumento.aGasto3        = documento.Gasto3;
            return(tdocumento);
        }
Example #4
0
 public static extern Int32 fAltaDocumentoCargoAbono(ref tDocumento atDocumento);
Example #5
0
 public static extern Int32 fAltaDocumento(ref Int32 aIdDocumento, ref tDocumento atDocumento);
Example #6
0
        public static void GeneraOrdenesDeCompraPendientes()
        {
            string fhoy = DateTime.Now.ToShortDateString();

            SolicitudMaterialesConsulta sol = new SolicitudMaterialesConsulta();

            sol.Estatus.id = 6; // 6 = Por generar orden de compra
            sol.FechaDesde = Convert.ToDateTime(fhoy);
            sol.FechaHasta = Convert.ToDateTime(fhoy);
            List <EN.Abastos.SolicitudMateriales> ls = GetSolicitudDeMateriales(sol);

            if (ls != null && ls.Count > 0)
            {
                SDK.Inicializa();
                bool Siguiente = false;
                foreach (EN.Abastos.SolicitudMateriales solicitud in ls)
                {
                    if (SDK.AbreEmpresa(solicitud.BaseDeDatos))
                    {
                        List <EN.Abastos.SolicitudMateriales> ls_aux = new List <EN.Abastos.SolicitudMateriales>();
                        int cidprov = 0;
                        EN.Abastos.SolicitudMateriales saux = null;

                        //Verifica la cantidad de ordenes de compra a generar
                        // por proveedor de acuerdo a los artículos elegidos.
                        foreach (DetalleSolicitudMateriales ds in solicitud.articulos)
                        {
                            if (cidprov != ds.item.CIDPROVEEDOR)
                            {
                                cidprov        = ds.item.CIDPROVEEDOR;
                                saux           = new EN.Abastos.SolicitudMateriales();
                                saux           = (EN.Abastos.SolicitudMateriales)solicitud.Clone();
                                saux.articulos = new List <DetalleSolicitudMateriales>();
                                saux.articulos.Add(ds);
                                ls_aux.Add(saux);
                            }
                            else
                            {
                                saux.articulos.Add(ds);
                            }
                        }

                        //Por cada diferente proveedor en la misma solicitud
                        // se genera una orden de compra en el sistema comercial
                        foreach (EN.Abastos.SolicitudMateriales sol_aux in ls_aux)
                        {
                            Siguiente = false;
                            try
                            {
                                Documento documento    = new Documento();
                                string    codProveedor = documento.BuscaProveedorPorId(solicitud.CIDProveedor); //339
                                int       idmoneda     = documento.ObtieneIdMoneda(solicitud.Moneda);
                                double    importe      = solicitud.total;
                                string    sconcepto    = documento.ObtieneCodigoConcepto(solicitud.ConceptoDocumento);
                                if (sconcepto.Trim().Length > 0)
                                {
                                    string folio = documento.ObtieneFolioSiguiente(sconcepto);
                                    solicitud.FolioDocumento = folio;
                                    solicitud.SerieDocumento = "";
                                    tDocumento docto = new tDocumento();
                                    docto.aCodConcepto   = sconcepto;
                                    docto.aSerie         = "";
                                    docto.aFecha         = DateTime.Now.ToString("MM/dd/yyyy");
                                    docto.aFolio         = Convert.ToDouble(documento.Folio);
                                    docto.aCodigoCteProv = codProveedor;
                                    docto.aNumMoneda     = idmoneda;
                                    docto.aImporte       = importe;
                                    docto.aDescuentoDoc1 = 0;
                                    docto.aDescuentoDoc2 = 0;
                                    docto.aSistemaOrigen = 0;
                                    docto.aAfecta        = 0;
                                    docto.aReferencia    = "";

                                    bool bCreado = false;
                                    try
                                    {
                                        bCreado = documento.AltaDeDocumento(docto);
                                    }
                                    catch (Exception ex)
                                    {
                                        throw ex;
                                    }

                                    if (bCreado)
                                    {
                                        //Inserta información adicional
                                        bCreado = documento.SetDatoDocumento("CTEXTOEXTRA1", new StringBuilder(solicitud.Usuario));
                                    }

                                    if (bCreado)
                                    {
                                        int c = 1;
                                        foreach (DetalleSolicitudMateriales fila in solicitud.articulos)
                                        {
                                            tMovimiento tm = new tMovimiento();
                                            tm.aConsecutivo      = c;
                                            tm.aCodProdSer       = fila.item.CCODIGOPRODUCTO.ToString();
                                            tm.aCosto            = 0;
                                            tm.aPrecio           = fila.item.preciocompra;
                                            tm.aReferencia       = "";
                                            tm.aCodClasificacion = "";
                                            tm.aCodAlmacen       = "1";
                                            tm.aUnidades         = fila.cantidad;
                                            bCreado = false;
                                            try
                                            {
                                                Int32 idMov = documento.AltaMovimiento(tm);
                                                if (idMov > 0)
                                                {
                                                    documento.SetDatoMovimiento("CIMPUESTO1", new StringBuilder(((fila.item.preciocompra * fila.cantidad) * 0.16).ToString()));
                                                    documento.SetDatoMovimiento("CPORCENTAJEIMPUESTO1", new StringBuilder("16"));
                                                    fila.CIDMOVIMIENTO  = idMov;
                                                    fila.FolioDocumento = folio;
                                                    fila.SerieDocumento = "";
                                                }
                                                else
                                                {
                                                    throw new Exception(string.Format("Revise el log {0} en el visor de eventos del sistema", EN.General.Utils.EventLog));
                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                throw ex;
                                            }
                                            c++;
                                        }
                                    }
                                }
                                else
                                {
                                    throw new Exception("No se econtró el codigo del concepto " + solicitud.ConceptoDocumento);
                                }

                                InsertaSolicitud(solicitud); //Actualiza información de la solicitud en DB
                                Siguiente = true;
                            }
                            catch (Exception ex)
                            {
                                EN.General.EventLog.WriteError(ex.ToString());
                                Siguiente = false;
                                break;
                            }
                        }

                        if (SDK.EmpresaAbierta)
                        {
                            SDK.CerrarEmpresa(solicitud.BaseDeDatos);
                        }

                        if (!Siguiente)
                        {
                            break;
                        }
                    }
                    else
                    {
                        EN.General.EventLog.WriteError("Error al procesar la solicitud con id: " + solicitud.id);
                        EN.General.EventLog.WriteError("Error al abrir Base de Datos " + solicitud.BaseDeDatos);
                    }

                    ActualizaEstatus("SICAS", solicitud.id, 4);
                }
                SDK.TerminaSDK();
            }
        }
 public static extern Int32 fAfectaDocto(ref tDocumento atDocumento, bool aAfectarDocumento);
Example #8
0
 public static extern int fAltaDocumento(ref int idDocumento, ref tDocumento atDocumento);
        internal TraspasoResult TraspasoExistencias(TraspasoParameters TParameters)
        {
            TraspasoResult result           = new TraspasoResult();
            List <string>  series           = new List <string>();
            const string   codigoConcepto   = "34";
            const string   serie            = "";
            double         existance        = 0;
            double         folio            = 0;
            int            documentoId      = 0;
            int            movimientoId     = 0;
            int            consecutivo      = 1;
            string         currentWarehouse = string.Empty;
            string         currentProduct   = string.Empty;

            try
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                Login(TParameters.Source);
                List <Product> ProductsWithExistance = TParameters.Products.Where(x => x.ExistanceControl != 4).ToList();
                List <Product> ProductsWithSeries    = TParameters.Products.Where(x => x.ExistanceControl == 4).ToList();
                foreach (Warehouse w in TParameters.Warehouses)
                {
                    foreach (Product p in ProductsWithExistance)
                    {
                        p.GetExistence(w);
                    }
                }
                LogOut();
                sw.Stop();
                result.TimeToRead = sw.Elapsed;

                sw.Restart();
                Login(TParameters.DestinationDb);
                foreach (Warehouse w in TParameters.Warehouses)
                {
                    _Error           = Documentos.fSiguienteFolio(codigoConcepto, "", ref folio);
                    currentWarehouse = w.Name;
                    if (_Error == 0)
                    {
                        tDocumento documento = new tDocumento()
                        {
                            aCodConcepto = codigoConcepto,
                            aFolio       = folio,
                            aSerie       = serie,
                            aFecha       = DateTime.Today.ToString("MM/dd/yyyy")
                        };
                        _Error = Documentos.fAltaDocumento(ref documentoId, ref documento);

                        foreach (Product p in ProductsWithExistance)
                        {
                            currentProduct = p.Name;
                            if (_Error == 0)
                            {
                                existance = p.GetExistence(w);
                                if (existance > 0)
                                {
                                    tMovimiento movto = new tMovimiento();
                                    movto.aCodAlmacen  = w.Code;
                                    movto.aCodProdSer  = p.Code;
                                    movto.aConsecutivo = consecutivo;
                                    movto.aUnidades    = existance;
                                    _Error             = Movimientos.fAltaMovimiento(documentoId, ref movimientoId, ref movto);
                                }
                                consecutivo++;
                            }
                            if (_Error != 0)
                            {
                                result.Errors.Add(string.Format("Almacen: {0}, Producto: {1}, Detalles: {2}", currentWarehouse, currentProduct, GetCurrentError()));
                            }
                        }
                    }
                }

                consecutivo = 0;
                foreach (Warehouse w in TParameters.Warehouses)
                {
                    _Error           = Documentos.fSiguienteFolio(codigoConcepto, "", ref folio);
                    currentWarehouse = w.Name;
                    if (_Error == 0)
                    {
                        tDocumento documento = new tDocumento()
                        {
                            aCodConcepto = codigoConcepto,
                            aFolio       = folio,
                            aSerie       = serie,
                            aFecha       = DateTime.Today.ToString("MM/dd/yyyy")
                        };
                        _Error = Documentos.fAltaDocumento(ref documentoId, ref documento);

                        foreach (Product p in ProductsWithSeries)
                        {
                            if (_Error == 0)
                            {
                                currentProduct = p.Name;
                                series         = p.GetSeries(w, TParameters.Source).Select(x => x.SeriesNumber).ToList();
                                if (series.Count > 0)
                                {
                                    tMovimiento movto = new tMovimiento();
                                    movto.aCodAlmacen  = w.Code;
                                    movto.aCodProdSer  = p.Code;
                                    movto.aConsecutivo = consecutivo;
                                    _Error             = Movimientos.fAltaMovimiento(documentoId, ref movimientoId, ref movto);

                                    foreach (string s in series)
                                    {
                                        if (_Error == 0)
                                        {
                                            tSeriesCapas movtoSerie = new tSeriesCapas()
                                            {
                                                aSeries = s
                                            };
                                            _Error = Movimientos.fAltaMovimientoSeriesCapas(movimientoId, ref movtoSerie);
                                            if (_Error != 0)
                                            {
                                                result.Errors.Add(string.Format("Almacen: {0}, Producto: {1}, Serie: {2}, Detalles: {3}", currentWarehouse, currentProduct, s, GetCurrentError()));
                                            }
                                        }
                                    }
                                    consecutivo++;
                                }
                            }
                        }
                    }
                }
                if (result.Errors.Count <= 0)
                {
                    result.Errors.Add("No hubo errores durante este traspaso");
                }
                sw.Stop();
                result.TimeToImport = sw.Elapsed;
                LogOut();
                return(result);
            }
            catch (AccessViolationException ave)
            {
                throw new TraspasoExistenciasException("Ocurrio un error al realizar el traspaso de información, revise los permisos en las carpetas de CONTPAQ I Comercial", ave);
            }
        }