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