Пример #1
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Convierte un tipo de moneda en otro</summary>
        internal static decimal Convert(decimal prec, Mnd oldMoney, Mnd newMoney)
        {
            if (newMoney == oldMoney)
            {
                return(prec);
            }

            var precCuc = prec;

            switch (oldMoney)
            {
            case  Mnd.Usd: precCuc *= UsdToCuc; break;

            case  Mnd.Cup: precCuc *= CupToCuc; break;

            case  Mnd.Dop: precCuc *= DopToUsd * UsdToCuc; break;
            }

            var precConv = precCuc;

            switch (newMoney)
            {
            case  Mnd.Usd: precConv = precCuc / UsdToCuc; break;

            case  Mnd.Cup: precConv = precCuc * CucToCup; break;

            case  Mnd.Dop: precConv = precCuc / DopToUsd / UsdToCuc; break;
            }

            return(precConv);
        }
Пример #2
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Obtiene la cantidad de dinero representada por 'text' en CUC</summary>
        public static decimal GetCucValue(string text, Mnd DefMoney = Mnd.Cuc)
        {
            LastMoney = DefMoney;
            LastValue = GetValue(text, ref LastMoney);

            return(Convert(LastValue, LastMoney, Mnd.Cuc));
        }
Пример #3
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Se llama cuando se selecciona una venta en la tabla de ventas</summary>
        private void OnSelectProd(DataGridViewRow Row)
        {
            ClearDatosVenta();
            if (FillProd)
            {
                GridProds.ClearSelection();
                return;
            }

            NowItemId = (int)Row.Cells[0].Value;
            NowItem   = (string)Row.Cells[1].Value;
            var sCant = (string)Row.Cells[2].Value;

            NowPrec = (decimal)Row.Cells[3].Value;
            NowMond = (Mnd)(int)Row.Cells[5].Value;

            var Parts = sCant.Split('/');

            int.TryParse(Parts[0], out NowMaxCant);
            int.TryParse(Parts[1], out NowCant);

            txtProdItem.Text         = NowItem + " (quedan " + NowMaxCant + " de " + NowCant + ")";
            txtProdPrecio.Text       = NowPrec.ToString("0.####");
            cbProdMond.SelectedIndex = (int)NowMond;

            NowCant            = 1;
            txtProdCant.Text   = NowCant.ToString();
            txtProdMonto.Text  = (NowCant * NowPrec).ToString("0.####");
            txtProdComent.Text = "";
        }
Пример #4
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary> Calcula valores de la fila</summary>
        private void RowCalculate(ComprasRow row)
        {
            var ratioRecp = 1m;

            if (Datos.CompasCUC != 0)
            {
                ratioRecp = Datos.MontoInvers / Datos.CompasCUC; // Relación entre en monto de la inversión y el de las compras
            }
            var PrecRecp = ratioRecp * row.valCucItem;           // Precio de recueración de la inversión

            nowMond = (Mnd)row.moneda;
            nowPrec = row.precio;
            nowCant = row.count;

            if (nowMond != Mnd.Cuc)
            {
                nowPrec = Money.Convert(nowPrec, nowMond, Mnd.Cuc);
            }

            nowMonto = nowPrec * nowCant;                          // Valor del venta completa (en cuc)
            nowGanc  = (nowCant * nowPrec) - (nowCant * PrecRecp); // Ganancia neta

            if (PrecRecp != 0)
            {
                nowRate = (double)(nowPrec / PrecRecp);       // Relación entre el precio y el precio de recuperación
            }
            else
            {
                nowRate = (double)nowPrec;
            }
        }
Пример #5
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary></summary>
        private void GetValores()
        {
            nowDesc = txtSrc.Text;
            if (nowDesc.Trim().Length == 0)
            {
                throw new Exception("Debe indicar una descripción");
            }

            nowMoneda = (Mnd)cbMoneda.SelectedIndex;

            if (!decimal.TryParse(txtChange.Text, out nowCambio))
            {
                throw new Exception("El valor del cambio es incorrecto");
            }

            if (!decimal.TryParse(txtValue.Text, out nowValue))
            {
                throw new Exception("El valor del presupuesto es incorrecto");
            }

            if (nowMoneda != Mnd.Cuc && nowMoneda != Mnd.Usd)
            {
                nowValue  = Money.Convert(nowValue, nowMoneda, Mnd.Cuc);
                nowMoneda = Mnd.Cuc;
            }
        }
Пример #6
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary></summary>
        internal static decimal GetValue(string text, ref Mnd moneyType)
        {
            var sNum    = new StringBuilder();
            var sMoneda = new StringBuilder();

            bool noPunto = true;

            for (int i = 0; i < text.Length; i++)
            {
                var c = text[i];
                if (c == ' ')
                {
                    continue;
                }

                var noNum    = (sNum.Length == 0);
                var noMoneda = (sMoneda.Length == 0);

                if (c == '-' && noNum && noMoneda)
                {
                    sNum.Append(c);
                }
                else if (c == '.' && noPunto && noMoneda)
                {
                    sNum.Append(c);
                    noPunto = false;
                }
                else if (char.IsDigit(c) && noMoneda)
                {
                    sNum.Append(c);
                }
                else if (char.IsLetter(c) && moneyType >= 0)
                {
                    sMoneda.Append(c);
                }
                else
                {
                    throw new Exception("Caracter no válido para el valor esperado");
                }
            }

            var val = decimal.Parse(sNum.ToString());

            if (sMoneda.Length != 0)
            {
                moneyType = Money.Idx(sMoneda.ToString());
                if (moneyType == Mnd.NA)
                {
                    throw new Exception("El tipo de moneda no es reconocido");
                }
            }

            return(val);
        }
Пример #7
0
        //-----------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Selecciona la fila Row para edicción</summary>
        private void OnSelectVenta(DataGridViewRow Row)
        {
            txtPagoCuc.Text    = "";
            txtPagoMn.Text     = "";
            txtPagoComent.Text = "";

            NowVentId = (int)Row.Cells[0].Value;
            var sItem = Row.Cells[1].Value.ToString();

            var row = Datos.tableVentas.FindByid(NowVentId);

            if (row == null)
            {
                MessageBox.Show("No se encontro una venta con el código especificado");
                return;
            }

            NowVend = row.vendedor;
            NowPrec = row.precio;
            NowMond = (Mnd)row.moneda;
            var Cant = row.count;

            var Pagado = GetPagado(row);

            var Monto = (Cant * NowPrec) - Pagado;

            NowCantMax = Monto / NowPrec;


            chkCUC.Checked = chkCUP.Checked = false;
            if (NowMond == Mnd.Cuc)
            {
                txtPagoCuc.Text = Monto.ToString("0.####");
                chkCUC.Checked  = true;
            }
            else
            {
                txtPagoMn.Text = Monto.ToString("0.####");
                chkCUP.Checked = true;
            }

            var NPagados = Cant - NowCantMax;

            txtPagoItem.Text = sItem + " | Pagados " + NPagados.ToString("0.##") + " de " + row.count;
            txtPagoCant.Text = NowCantMax.ToString("0.##");

            txtPagoComent.Text = NowVentId.ToString();
            if (!row.IscomentarioNull() && row.comentario.Trim().Length > 0)
            {
                txtPagoComent.Text += " - " + row.comentario;
            }
        }
Пример #8
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Obtiene el código de 3 letras que represeta la moneda</summary>
        internal static string Code(Mnd moned)
        {
            switch (moned)
            {
            case Mnd.Usd: return("usd");

            case Mnd.Cup: return("mn");

            case Mnd.Dop: return("dop");
            }

            return("cuc");
        }
Пример #9
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Limpia los datos de venta</summary>
        private void ClearDatosVenta()
        {
            NowItemId  = -1;
            NowItem    = "";
            NowPrec    = 0m;
            NowMond    = 0;
            NowCant    = 0;
            NowMaxCant = 0;

            txtProdItem.Text         = txtProdComent.Text = txtProdCant.Text = txtProdPrecio.Text = "";
            cbProdMond.SelectedIndex = 0;

            ((frmUnViaje)Parent.Parent.Parent).AcceptButton = null;
        }
Пример #10
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Muestra los datos para modificar del producto cuyo ID es 'IdProd'</summary>
        private void OnSelectProduct(int IdProd)
        {
            var Row = table.FindByid(IdProd);

            if (Row == null)
            {
                return;
            }

            ((frmUnViaje)Parent.Parent.Parent).AcceptButton = btnModify;
            txtItem.Text = Row.item;

            var ratioRecp = 1m;
            var ratioGanc = 1m;

            if (Datos.CompasCUC != 0)
            {
                ratioRecp = Datos.MontoInvers / Datos.CompasCUC; // Relación entre en monto de la inversión y el de las compras
                ratioGanc = (1.5m * Datos.MontoInvers) / Datos.CompasCUC;
            }

            var valRecp = ratioRecp * Row.valCucItem;
            var valGanc = ratioGanc * Row.valCucItem;

            lbPrecRec.Text = valRecp.ToString("0.##");
            lbPrecOK.Text  = valGanc.ToString("0.##");

            var ItemPrec = valGanc;                               // Toma valores por defecto
            Mnd Moned    = Mnd.Cuc;

            if (Row.precio > 0)
            {
                ItemPrec = Row.precio;
                Moned    = (Mnd)Row.moneda;
            }

            SetMoney(Moned);
            txtValue.Text = ItemPrec.ToString("0.##");

            if (Moned != Mnd.Cuc)
            {
                ItemPrec = Money.Convert(ItemPrec, Moned, Mnd.Cuc);
            }

            lbItemGanc.Text = (ItemPrec - valRecp).ToString("0.##");

            //txtValue.Focus();
            RefreshStadist();
        }
Пример #11
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Se llama cuando se cambia el tipo de moneda en el combo correspondiente</summary>
        private void cbMoneda_SelectedIndexChanged(object sender, EventArgs e)
        {
            Mnd selMoney = (Mnd)cbMoneda.SelectedIndex;

            decimal prec;

            if (decimal.TryParse(txtValue.Text, out prec))
            {
                var precConv = Money.Convert(prec, nowMond, selMoney);

                txtValue.Text = precConv.ToString("0.00");
            }

            nowMond = selMoney;
        }
Пример #12
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Limpia los datos del producto actual</summary>
        private void ClearDatos()
        {
            NowItemId  = -1;
            NowItem    = "";
            NowPrec    = 0m;
            NowMond    = 0;
            NowCant    = 0;
            NowMaxCant = 0;

            txtItem.Text  = "";
            txtValue.Text = "";
            txtCant.Text  = "";

            cbMoneda.SelectedIndex = 0;
            ((frmUnViaje)Parent.Parent.Parent).AcceptButton = null;
        }
Пример #13
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Actauliza los datos de la venta seleccionada en los controles de modificación</summary>
        private void OnSelectVenta(DataGridViewRow Row)
        {
            pnlDatos.Visible = true;                                    // Garantiza que se muestre la zona de datos

            NowVentId  = (int)Row.Cells[0].Value;
            NowItem    = (string)Row.Cells[1].Value;
            NowVend    = (string)Row.Cells[2].Value;
            NowCant    = (int)Row.Cells[3].Value;
            NowPrec    = (decimal)Row.Cells[4].Value;
            NowMond    = Money.Idx((string)Row.Cells[6].Value);
            NowMaxCant = NowCant;

            NowItem = NowItem.Split('|')[0];

            txtItem.Text  = NowVentId.ToString() + " | " + NowItem;
            txtCant.Text  = NowCant.ToString();
            txtValue.Text = NowPrec.ToString("0.####");
            txtMonto.Text = (NowCant * NowPrec).ToString("0.####");

            var row = Datos.BD.Ventas.FindByid(NowVentId);

            if (row != null)
            {
                txtComent.Text = (row.IscomentarioNull())? "" : row.comentario;
            }

            txtVendedor.Text       = NowVend;
            cbMoneda.SelectedIndex = (int)NowMond;

            SetWorkMode(3);

            if (NowCant < 0)
            {
                btnProdBack.Visible = false;
            }

            ((frmUnViaje)Parent.Parent.Parent).AcceptButton = btnModify;
        }
Пример #14
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Obtiene los valores introducidos por el usuario</summary>
        private void GetValores()
        {
            var ItemVend = cbProdVend.SelectedItem;

            if (ItemVend == null)
            {
                throw new Exception("Debe seleccionar un vendedor");
            }

            NowVend = ItemVend.ToString();

            if (NowItemId == -1 || NowItem == "")
            {
                throw new Exception("No hay un item seleccionado para la venta");
            }

            NowMond = (Mnd)cbProdMond.SelectedIndex;
            if ((int)NowMond == -1)
            {
                throw new Exception("Debe seleccionar la moneda a utilizar");
            }

            if (!decimal.TryParse(txtProdPrecio.Text, out NowPrec))
            {
                throw new Exception("El valor para el precio es incorrecto");
            }

            if (!int.TryParse(txtProdCant.Text, out NowCant) || NowCant <= 0)
            {
                throw new Exception("El valor para la cantidad es incorrecto");
            }

            if (NowCant > NowMaxCant)
            {
                throw new Exception("La cantidad de items especificados excede los disponibles");
            }
        }
Пример #15
0
 //--------------------------------------------------------------------------------------------------------------------------------------
 /// <summary> Pone el timpo de moneda vigente para el precio</summary>
 private void SetMoney(Mnd v)
 {
     nowMond = v;
     cbMoneda.SelectedIndex = (int)v;
 }
Пример #16
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Llena la lista de selección de productos</summary>
        private void FillGridProds()
        {
            FillProd = true;
            tbSelProd.Clear();

            CalculateCounts();

            decimal porVenderCuc = 0, porVenderMn = 0;

            foreach (ComprasRow row in Datos.tableCompras)
            {
                var idProd = row.id;
                if (Datos.FilterProd(idProd))
                {
                    continue;
                }

                var    Item     = row.item;
                var    Cant     = row.count;
                var    Precio   = row.precio;
                Mnd    Moned    = (Mnd)row.moneda;
                string MondCode = Money.Code(Moned);

                var Resto = Cant;
                if (Counts.ContainsKey(idProd))
                {
                    Resto -= Counts[idProd];
                }

                if (Resto > 0)
                {
                    var monto = Resto * Precio;
                    if (Moned == Mnd.Cuc)
                    {
                        porVenderCuc += monto;
                    }
                    else if (Moned == Mnd.Cup)
                    {
                        porVenderMn += monto;
                    }
                    else
                    {
                        porVenderCuc += Money.Convert(monto, Moned, Mnd.Cuc);
                    }
                }

                var sCant = Resto.ToString() + '/' + Cant;
                if (Resto > 0 || chkShowNoExist.Checked)
                {
                    tbSelProd.Rows.Add(idProd, Item, sCant, Precio, MondCode, Moned);
                }
            }

            var sCuc = porVenderCuc.ToString("0.##");
            var sCup = porVenderMn.ToString("0.##");

            porVenderCuc += Money.Convert(porVenderMn, Mnd.Cup, Mnd.Cuc);
            var sTotal = porVenderCuc.ToString("0.##");

            lbPorVender.Text = "POR VENDER: " + sCuc + " cuc     " + sCup + " mn     TOTAL:" + sTotal + " cuc";
            FillProd         = false;
        }
Пример #17
0
        public static decimal DopToUsd = 1.0m / UsdToDop;      // Febrero 2018

        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary></summary>
        internal static decimal GetValue(string text)
        {
            Mnd moneyType = Mnd.NA;

            return(GetValue(text, ref moneyType));
        }
Пример #18
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Modifica los datos de una venta</summary>
        private void btnModify_Click(object sender, EventArgs e)
        {
            try
            {
                if (!int.TryParse(txtCant.Text, out NowCant) || NowCant < 0)
                {
                    throw new Exception("El valor para la cantidad es incorrecto.");
                }

                NowMond = (Mnd)cbMoneda.SelectedIndex;
                if ((int)NowMond == -1)
                {
                    throw new Exception("Debe seleccionar la moneda a utilizar");
                }

                if (!decimal.TryParse(txtValue.Text, out NowPrec))
                {
                    throw new Exception("El valor para el precio es incorrecto");
                }

                var Parts = txtItem.Text.Split('|');
                NowVentId = int.Parse(Parts[0]);

                var row = Datos.BD.Ventas.FindByid(NowVentId);
                if (row == null)
                {
                    throw new Exception("No se encuentra la venta correspondiente");
                }

                NowMaxCant = ItemRemanet(row.idProd, NowVentId);
                if (NowCant > NowMaxCant)
                {
                    throw new Exception("La cantidad máxima de items permitidos es " + NowMaxCant);
                }

                var fecha = DateTime.Today;
                if (row.vendedor == Datos.Vendedores[0])
                {
                    NowPrec = 0;
                }

                row.count      = NowCant;
                row.precio     = NowPrec;
                row.moneda     = (int)NowMond;
                row.fecha      = fecha;
                row.comentario = txtComent.Text;

                var Monto   = NowCant * NowPrec;
                var sMoneda = Money.Code(NowMond);

                foreach (DataRow row2 in tbVentas.Rows)
                {
                    if ((int)row2["IdVent"] == NowVentId)
                    {
                        row2["Cant"]   = NowCant;
                        row2["Precio"] = NowPrec;
                        row2["Monto"]  = Monto;
                        row2["Moned"]  = sMoneda;
                        row2["Fecha"]  = fecha;

                        var sItem = ((string)row2["Item"]).Split('|')[0].TrimEnd();
                        row2["Item"] = sItem;

                        if (chkShowComent.Checked)
                        {
                            row2["Item"] += " | " + row.comentario;
                        }

                        break;
                    }
                }

                SetWorkMode(0);
                RefreshEstadisticas();
                Datos.SetChanges("VentaModify");
            }
            catch (Exception exc)
            {
                MessageBox.Show("ERROR: " + exc.Message);
            }
        }
Пример #19
0
 //--------------------------------------------------------------------------------------------------------------------------------------
 /// <summary>Transforma el valor 'val' en la moneda actual, al valor en la moneda 'moneda'</summary>
 private decimal ValFromNow(decimal val, Mnd moneda)
 {
     return(Money.Convert(val, NowMond, moneda));
 }
Пример #20
0
 //--------------------------------------------------------------------------------------------------------------------------------------
 /// <summary>Transforma el valor 'val' en la moneda 'moneda', al valor de la monerada actual</summary>
 private decimal ValToNow(decimal val, Mnd moneda)
 {
     return(Money.Convert(val, moneda, NowMond));
 }
Пример #21
0
        //--------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>Llena la lista de selección de productos</summary>
        public void FillTableProdsSinVender(DataTable table, string sFilter)
        {
            CalculateCounts();

            var ratioRecp = 1m;
            var ratioGanc = 1m;

            if (CompasCUC != 0)
            {
                ratioRecp = MontoInvers / CompasCUC; // Relación entre en monto de la inversión y el de las compras
                ratioGanc = (1.5m * MontoInvers) / CompasCUC;
            }

            foreach (ComprasRow row in tableCompras)
            {
                var idProd = row.id;
                if (App.FilterFor(-1, idProd))
                {
                    continue;
                }

                var Item     = row.item;
                var Cant     = row.count;
                var Precio   = row.precio;
                Mnd Moned    = (Mnd)row.moneda;
                var sMond    = MD.Code(Moned);
                var valCosto = MD.Convert(row.valCucItem, Mnd.Cuc, Moned);
                var valRecp  = ratioRecp * valCosto;
                var valGanc  = ratioGanc * valCosto;

                var Resto = Cant;
                if (Counts.ContainsKey(idProd))
                {
                    Resto -= Counts[idProd];
                }

                if (Resto <= 0)
                {
                    continue;
                }
                if (!FindFilter(sFilter, Item))
                {
                    continue;
                }

                var monto = Resto * Precio;
                if (Moned != Mnd.Cuc && Moned != Mnd.Cup)
                {
                    monto = MD.Convert(monto, Moned, Mnd.Cuc);
                    Moned = Mnd.Cuc;
                }

                var n       = table.Rows.Count + 1;
                var sCant   = Resto.ToString() + " | " + Cant;
                var sCosto  = valCosto.ToString("0.##");
                var sRecup  = valRecp.ToString("0.##");
                var sGananc = valGanc.ToString("0.##");

                var sPrecio = Precio.ToString("0.##") + ' ' + sMond;
                var sMonto  = monto.ToString("0.##") + ' ' + sMond;
                var Total   = (Moned == Mnd.Cuc)? monto : MD.Convert(monto, Moned, Mnd.Cuc);

                if (Resto == 1)
                {
                    sMonto = "";
                }

                //          idxViaje, Num, Viaje,     ID, Item,  Cant,   Costo, CostoRec, CostoOK, Precio,   Monto, Total
                //               int, int,   Str,    Str,  Str,   Str,     Str,      Str,     Str,    Str,     Str,   dec
                table.Rows.Add(IdxV, n, Title, idProd, Item, sCant, sCosto, sRecup, sGananc, sPrecio, sMonto, Total);
            }
        }