示例#1
0
文件: Negocio.cs 项目: icpac/cap
        public static void IniciaCxc(Cxc obj, Parametros prm)
        {
            if (obj != null)
            {
                if (prm == null)
                {
                    prm = obj.Session.FindObject <Parametros>(null);

                    if (prm != null)
                    {
                        prm.Reload();
                    }
                }

                if (prm != null)
                {
                    if (prm.UltmPg > 0)
                    {
                        obj.Folio = prm.UltmPg.ToString();
                    }
                }
            }
        }
示例#2
0
文件: Negocio.cs 项目: icpac/cap
        private static void CreaCxc(DocumentoSalida doc, IObjectSpace spc, ConceptoCxcxp cpt, Parametros prm, bool dVcs)
        {
            /* TI Folio sólo cuando es un pago !
             * IniciaCxc(cnt, prm);*/

            foreach (ItemSalida itm in doc.ItemsSalida)
            {
                Cxc cnt = spc.CreateObject <Cxc>();

                cnt.Cepto    = spc.FindObject <ConceptoCxcxp>(new BinaryOperator("Descripcion", cpt.Descripcion));
                cnt.Cliente  = doc.Almn;
                cnt.Monto    = Convert.ToDecimal(itm.Imprt);
                cnt.DcmntSld = doc;
                cnt.FchApl   = doc.FchAplccn; // doc.FchAlt;

                if (prm.SrvcBc != itm.Srvc)
                {
                    cnt.Cncpt = string.Format("{0} {1}", itm.Srvc.Dscrpcn, itm.Obsrvcns);
                }
                else
                {
                    cnt.Cncpt = string.Format("{0} {1} {2}", itm.Srvc.Dscrpcn, itm.Obsrvcns, cnt.FchApl.ToString("MMM").ToUpper());
                    if (dVcs)
                    {
                        doc.Almn.Clgtr = cnt.Monto;
                    }
                }
                cnt.CncptSrvc = itm.Srvc.Dscrpcn;

                GrabaCxc(cnt, prm, spc);
            }

            /*
             * if (cnt.Cepto.Tipo == EConceptoTipo.Cargo)
             *  doc.Almn.Saldo += cnt.Monto;*/
        }
示例#3
0
文件: Negocio.cs 项目: icpac/cap
        public static void GrabaCxc(Cxc obj, Parametros prm, IObjectSpace osp)
        {
            if (obj != null && obj.IsNewObject())
            {
                if (obj.Cliente != null)
                {
                    obj.Cliente.Saldo += obj.Cepto.Tipo == EConceptoTipo.Cargo ? obj.Monto : -obj.Monto;
                }

                if (prm == null)
                {
                    prm = obj.Session.FindObject <Parametros>(null);
                }

                if (prm != null)
                {
                    if (obj.Cepto.Tipo == EConceptoTipo.Abono)
                    {
                        if (obj.Dclrbl)
                        {
                            obj.Folio = prm.UltmPg.ToString();
                            prm.UltmPg++;
                        }
                        else
                        {
                            obj.Folio = prm.UltmPgNDclrbl.ToString();
                            prm.UltmPgNDclrbl++;
                        }
                    }
                }

                obj.Saldo += obj.Monto;
                if (obj.Cepto.Tipo == EConceptoTipo.Abono)
                {
                    decimal aux     = obj.Monto;
                    decimal totmont = 0;

                    int pos = 0;
                    while (pos < obj.Crgs.Count)
                    {
                        if (((CxcItem)(obj.Crgs[pos])).Monto <= 0)
                        {
                            CxcItem it = ((CxcItem)(obj.Crgs[pos]));
                            osp.Delete(it);
                            osp.RemoveFromModifiedObjects(it);
                            // obj.Crgs.Remove(obj.Crgs[pos]);
                            // pos++;
                        }
                        else
                        {
                            pos++;
                        }
                    }

                    /*
                     * pos = 0;
                     * while (pos < obj.Crgs.Count)
                     * {
                     *  if (((CxcItem)(obj.Crgs[pos])).Monto <= 0)
                     *  {
                     *      obj.Crgs.Remove(obj.Crgs[pos]);
                     *  }
                     *  else
                     *      pos++;
                     * }*/



                    foreach (CxcItem crgs in obj.Crgs)
                    {
                        totmont += crgs.Monto;
                    }
                    if (totmont != aux)
                    {
                        throw new Exception("El Total NO coincide con la suma de los Parciales !");
                    }

                    foreach (CxcItem crgs in obj.Crgs)
                    {
                        if (crgs.Monto > crgs.Crg.Saldo && (crgs.Monto - crgs.Crg.Saldo) > 0.009m)
                        {
                            throw new Exception("El PAGO  NO  puede ser mayor a lo que DEBE !");
                        }
                    }

                    foreach (CxcItem crgs in obj.Crgs)
                    {
                        /*
                         * if (aux > 0)
                         * {*/
                        /*
                         *  if (crgs.Monto / * aux* / >= crgs.Crg.Saldo) // crgs.Saldo)
                         *  {
                         *      aux -= crgs.Crg.Saldo; // crgs.Saldo;
                         *      crgs.Crg.Saldo = 0; // crgs.Saldo = 0;
                         *  }
                         *  else
                         *  {
                         *      crgs.Crg.Saldo -= crgs.Monto; // aux; // crgs.Saldo -= aux;
                         *      aux = 0;
                         *  }*/
                        crgs.Crg.Saldo -= crgs.Monto;
                        aux            -= crgs.Monto;

                        //---------------------------------------------------------------------
                        // Balance
                        GroupOperator fil2 = new GroupOperator();

                        string axCncpt = crgs.Crg.CncptSrvc; //.Cncpt;

                        if (string.IsNullOrEmpty(axCncpt))
                        {
                            axCncpt = crgs.Crg.Cncpt.Trim();
                            if (axCncpt.Contains("COLEGIATURA"))
                            {
                                axCncpt = "COLEGIATURA";
                            }
                            else if (axCncpt.Contains("UNIFORMES"))
                            {
                                axCncpt = "UNIFORMES";
                            }
                            else if (axCncpt.Contains("TRANSPORTE"))
                            {
                                axCncpt = "TRANSPORTE";
                            }
                            else if (axCncpt.Contains("LUNCHS Y AGUA"))
                            {
                                axCncpt = "LUNCHS Y AGUA";
                            }
                        }

                        fil2.Operands.Add(new BinaryOperator("Cncpt", axCncpt));
                        fil2.Operands.Add(new BinaryOperator("Dclrbl", obj.Dclrbl));
                        fil2.Operands.Add(new BinaryOperator("FrmPg", obj.FrmPg));
                        fil2.Operands.Add(new BinaryOperator("Fch", new DateTime(obj.FchApl.Year, obj.FchApl.Month, obj.FchApl.Day)));
                        fil2.Operands.Add(new BinaryOperator("Tp", EBalanceTipo.Cobro));
                        Balance bl = obj.Session.FindObject <Balance>(fil2);

                        if (bl == null)
                        {
                            bl = new Balance(obj.Session);

                            // Estos pueden ser diferentes
                            bl.Dclrbl = obj.Dclrbl;
                            if (obj.FrmPg != null)
                            {
                                bl.FrmPg = obj.Session.FindObject <Catalogo>(new BinaryOperator("Oid", obj.FrmPg.Oid));
                            }
                            bl.Fch = new DateTime(obj.FchApl.Year, obj.FchApl.Month, obj.FchApl.Day); // obj.FchApl;

                            bl.Mnt   = crgs.Monto;
                            bl.Cncpt = axCncpt;
                            bl.Tp    = EBalanceTipo.Cobro;
                        }
                        else
                        {
                            bl.Mnt += crgs.Monto;
                        }
                    }
                    obj.Saldo = aux;
                }
            }
        }