public static void UpdateWithValidation(tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow row)
        {
            ApplicationAssert.Check(row != null, "El argumento row no debe ser nulo.", ApplicationAssert.LineNumber);

            if (RowIsValid(row))
            {
                Update(row);
            }
        }
        public static void Update(tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow row)
        {
            if (row.RowState == DataRowState.Detached)
            {
                ((tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaDataTable)row.Table).Addtpu_ComprobanteDetalleDeudaRow(row);
            }

            Update(row.Table);
        }
 /// <summary>
 /// Obtiene un registro de la tabla tpu_ComprobanteDetalleDeuda que luego puede ser persistido en la base de datos.
 /// </summary>
 public static tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow GetByPk(string IdComprobante, short Cuota)
 {
     tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow row = mz.erp.dataaccess.tpu_ComprobanteDetalleDeuda.GetByPk(IdComprobante, Cuota);
     if (row != null)
     {
         foreach (DataColumn dc in row.Table.Columns)
         {
             if (!dc.Caption.ToUpper().Equals("ROWID"))
             {
                 if (row[dc] == System.DBNull.Value)
                 {
                     row[dc] = Util.DefaultValue(dc.DataType);
                 }
             }
         }
     }
     return(row);
 }
Exemple #4
0
        public void Commit()
        {
            if (this._origen.Equals("CLIENTES"))
            {
                bool                masNegativos = _ctaCte.CantPagosNegativos >= _ctaCte.CantPagosPositivos;
                ArrayList           negativos    = _ctaCte.GetDetallePagos(-1);
                ArrayList           positivos    = _ctaCte.GetDetallePagos(1);
                ItemCuentaCorriente iccSingle    = null;
                if (masNegativos)
                {
                    #region Inserta Comporbantes con Signo Negativo
                    iccSingle = (ItemCuentaCorriente)positivos[0];

                    #region para q sirve?
                    // Para que sirve????

                    /*if ( this._origen.Equals("CLIENTES") )
                     * {
                     *      tsa_ComprobantesDataset.tsa_ComprobantesRow rowComp = mz.erp.dataaccess.tsa_Comprobantes.GetByPk(iccSingle.IdComprobante);
                     *      if (rowComp == null)
                     *              rowComp = mz.erp.businessrules.tsa_Comprobantes.GetByPk(iccSingle.IdComprobante);
                     *      _dataTsa_Comprobantes.tsa_Comprobantes.ImportRow(rowComp);
                     * }
                     * else
                     * {
                     *      tpu_ComprobantesDataset.tpu_ComprobantesRow rowComp = mz.erp.dataaccess.tpu_Comprobantes.GetByPk(iccSingle.IdComprobante);
                     *      if (rowComp == null)
                     *              rowComp = mz.erp.businessrules.tpu_Comprobantes.GetByPk(iccSingle.IdComprobante);
                     *      _dataTpu_Comprobantes.tpu_Comprobantes.ImportRow(rowComp);
                     * }
                     * // ----------------
                     */
                    #endregion

                    // iccSingle --> Recibos...
                    // icc --> Fact, Prefacturas....
                    foreach (ItemCuentaCorriente icc in negativos)
                    {
                        tsa_AplicacionPagosDataset.tsa_AplicacionPagosRow row = _tsa_AplicacionPagosDataSet.tsa_AplicacionPagos.Newtsa_AplicacionPagosRow();
                        row.IdComprobanteOrigen     = icc.IdComprobante;
                        row.CuotaOrigen             = (short)icc.Cuota;
                        row.IdComprobanteDestino    = iccSingle.IdComprobante;
                        row.IdTipoComprobanteOrigen = icc.IdTipoDeComprobante;
                        row.Importe = icc.Pago;
                        row.IdTipoDeComprobanteDestino = iccSingle.IdTipoDeComprobante;
                        row.CuotaDestino                 = 1;
                        row.IdEmpresa                    = Security.IdEmpresa;
                        row.IdSucursal                   = Security.IdSucursal;
                        row.FechaCreacion                = mz.erp.businessrules.Sistema.DateTime.Now;
                        row.IdConexionCreacion           = Security.IdConexion;
                        row.IdConexionUltimaModificacion = Security.IdConexion;
                        row.IdReservado                  = 0;
                        row.RowId = Guid.Empty;
                        _tsa_AplicacionPagosDataSet.tsa_AplicacionPagos.Addtsa_AplicacionPagosRow(row);

                        #region borrar! si funciona lo de abajo

                        /*
                         * //tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeuda = mz.erp.dataaccess.tsa_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                         * tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeuda = mz.erp.businessrules.tsa_ComprobanteDetalleDeuda.GetByPk(dcc.IdComprobante, Convert.ToInt16(dcc.Cuota));
                         *
                         * if (  rowDeuda == null)
                         *      rowDeuda = mz.erp.businessrules.tsa_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                         *
                         * int signo = Convert.ToInt32( tsy_TiposDeComprobantes.GetByPk(Convert.ToString(rowDeuda.IdTipoDeComprobante)).signo);
                         * rowDeuda.Saldo = (decimal) rowDeuda.Saldo * signo;
                         * rowDeuda.Saldo = (decimal) rowDeuda.Saldo - icc.Pago;
                         * rowDeuda.Saldo = (decimal) rowDeuda.Saldo * signo;
                         *
                         * _tsa_ComprobanteDetalleDeuda.tsa_ComprobantesDetalleDeuda.ImportRow(rowDeuda);
                         */
                        #endregion

                        try
                        {
                            tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeuda = _tsa_ComprobanteDetalleDeudaDataSet.tsa_ComprobanteDetalleDeuda.FindByIdComprobanteCuota(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda["IdTipoDeComprobante"]).signo);
                            rowDeuda["saldo"] = (decimal)rowDeuda["saldo"] * signo;
                            rowDeuda["Saldo"] = (decimal)rowDeuda["Saldo"] - icc.Pago;
                            rowDeuda["Saldo"] = (decimal)rowDeuda["Saldo"] * signo;
                        }
                        catch (Exception e)
                        {
                            tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeuda2 = mz.erp.businessrules.tsa_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            if (rowDeuda2 != null)
                            {
                                int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda2["IdTipoDeComprobante"]).signo);
                                rowDeuda2["saldo"] = (decimal )rowDeuda2["saldo"] * signo;
                                rowDeuda2["Saldo"] = (decimal)rowDeuda2["Saldo"] - icc.Pago;
                                rowDeuda2["Saldo"] = (decimal)rowDeuda2["Saldo"] * signo;
                                _tsa_ComprobanteDetalleDeudaDataSet.tsa_ComprobanteDetalleDeuda.ImportRow(rowDeuda2);
                            }
                        }

                        //System.Data.DataRow rowComprobanteImputado = data.tsa_Comprobantes.FindByIdComprobante(dcc.IdComprobante);
                        //if (rowComprobanteImputado == null)
                        //	rowComprobanteImputado = mz.erp.businessrules.tsa_Comprobantes.GetByPk(dcc.IdComprobante);
                        //data.tsa_Comprobantes.ImportRow(rowComprobanteImputado);
                    }

                    tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeudaSingle = mz.erp.dataaccess.tsa_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    if (rowDeudaSingle == null)
                    {
                        rowDeudaSingle = mz.erp.businessrules.tsa_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    }

                    int signoSingle = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk(Convert.ToString(rowDeudaSingle.IdTipoDeComprobante)).signo);
                    rowDeudaSingle.Saldo = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    rowDeudaSingle.Saldo = (decimal)rowDeudaSingle.Saldo - iccSingle.Pago;
                    rowDeudaSingle.Saldo = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    _tsa_ComprobanteDetalleDeudaDataSet.tsa_ComprobanteDetalleDeuda.ImportRow(rowDeudaSingle);

                    #endregion
                }
                else
                {
                    #region Inserta Comporbantes con Signo Positivos
                    iccSingle = (ItemCuentaCorriente)negativos[0];

                    // icc --> Recibos, Notas de creditos, RET
                    foreach (ItemCuentaCorriente icc in positivos)
                    {
                        tsa_AplicacionPagosDataset.tsa_AplicacionPagosRow row = _tsa_AplicacionPagosDataSet.tsa_AplicacionPagos.Newtsa_AplicacionPagosRow();
                        row.IdComprobanteOrigen     = iccSingle.IdComprobante;
                        row.CuotaOrigen             = 1;            //(short) icc.Cuota;
                        row.IdComprobanteDestino    = icc.IdComprobante;
                        row.IdTipoComprobanteOrigen = iccSingle.IdTipoDeComprobante;
                        row.Importe = icc.Pago;
                        row.IdTipoDeComprobanteDestino = icc.IdTipoDeComprobante;
                        row.CuotaDestino                 = (short)icc.Cuota;        //1;
                        row.IdEmpresa                    = Security.IdEmpresa;
                        row.IdSucursal                   = Security.IdSucursal;
                        row.FechaCreacion                = mz.erp.businessrules.Sistema.DateTime.Now;
                        row.IdConexionCreacion           = Security.IdConexion;
                        row.IdConexionUltimaModificacion = Security.IdConexion;
                        row.IdReservado                  = 0;
                        row.RowId = Guid.Empty;
                        _tsa_AplicacionPagosDataSet.tsa_AplicacionPagos.Addtsa_AplicacionPagosRow(row);

                        try
                        {
                            tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeuda = _tsa_ComprobanteDetalleDeudaDataSet.tsa_ComprobanteDetalleDeuda.FindByIdComprobanteCuota(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda["IdTipoDeComprobante"]).signo);
                            rowDeuda["saldo"] = (decimal )rowDeuda["saldo"] * signo;
                            rowDeuda["Saldo"] = (decimal)rowDeuda["Saldo"] - icc.Pago;
                            rowDeuda["Saldo"] = (decimal)rowDeuda["Saldo"] * signo;
                        }
                        catch (Exception e)
                        {
                            tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeuda2 = mz.erp.businessrules.tsa_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            if (rowDeuda2 != null)
                            {
                                int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda2["IdTipoDeComprobante"]).signo);
                                rowDeuda2["saldo"] = (decimal )rowDeuda2["saldo"] * signo;
                                rowDeuda2["Saldo"] = (decimal)rowDeuda2["Saldo"] - icc.Pago;
                                rowDeuda2["Saldo"] = (decimal)rowDeuda2["Saldo"] * signo;
                                _tsa_ComprobanteDetalleDeudaDataSet.tsa_ComprobanteDetalleDeuda.ImportRow(rowDeuda2);
                            }
                        }
                    }

                    tsa_ComprobanteDetalleDeudaDataset.tsa_ComprobanteDetalleDeudaRow rowDeudaSingle = mz.erp.dataaccess.tsa_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    if (rowDeudaSingle == null)
                    {
                        rowDeudaSingle = mz.erp.businessrules.tsa_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    }

                    int signoSingle = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk(Convert.ToString(rowDeudaSingle.IdTipoDeComprobante)).signo);
                    rowDeudaSingle.Saldo = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    rowDeudaSingle.Saldo = (decimal)rowDeudaSingle.Saldo - iccSingle.Pago;
                    rowDeudaSingle.Saldo = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    _tsa_ComprobanteDetalleDeudaDataSet.tsa_ComprobanteDetalleDeuda.ImportRow(rowDeudaSingle);

                    #endregion
                }
            }
            else             // "PROVEEDORES"
            {
                bool                masNegativos = _ctaCte.CantPagosNegativos >= _ctaCte.CantPagosPositivos;
                ArrayList           negativos    = _ctaCte.GetDetallePagos(-1);
                ArrayList           positivos    = _ctaCte.GetDetallePagos(1);
                ItemCuentaCorriente iccSingle    = null;
                if (masNegativos)
                {
                    #region Inserta Comporbantes con Signo Negativo
                    iccSingle = (ItemCuentaCorriente)positivos[0];

                    // icc Negativos --> Pagos y notas de ??
                    foreach (ItemCuentaCorriente icc in negativos)
                    {
                        // iccSingle --> FACT de Proveedores
                        tpu_AplicacionPagosDataset.tpu_AplicacionPagosRow row = _tpu_AplicacionPagosDataSet.tpu_AplicacionPagos.Newtpu_AplicacionPagosRow();
                        row.IdComprobanteOrigen     = icc.IdComprobante;
                        row.CuotaOrigen             = 1;             //(short) icc.Cuota;
                        row.IdComprobanteDestino    = iccSingle.IdComprobante;
                        row.IdTipoComprobanteOrigen = icc.IdTipoDeComprobante;
                        row.Importe = icc.Pago;
                        row.IdTipoDeComprobanteDestino = iccSingle.IdTipoDeComprobante;
                        row.CuotaDestino                 = (short)icc.Cuota;;
                        row.IdEmpresa                    = Security.IdEmpresa;
                        row.IdSucursal                   = Security.IdSucursal;
                        row.FechaCreacion                = mz.erp.businessrules.Sistema.DateTime.Now;
                        row.IdConexionCreacion           = Security.IdConexion;
                        row.IdConexionUltimaModificacion = Security.IdConexion;
                        row.IdReservado                  = 0;
                        row.RowId = Guid.Empty;
                        _tpu_AplicacionPagosDataSet.tpu_AplicacionPagos.Addtpu_AplicacionPagosRow(row);

                        try
                        {
                            tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDeuda = _tpu_ComprobanteDetalleDeudaDataSet.tpu_ComprobanteDetalleDeuda.FindByIdComprobanteCuota(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda["IdTipoDeComprobante"]).signo);
                            rowDeuda["saldo"]         = (decimal)rowDeuda["saldo"] * signo;
                            rowDeuda["Saldo"]         = (decimal)rowDeuda["Saldo"] - icc.Pago;
                            rowDeuda["Saldo"]         = (decimal)rowDeuda["Saldo"] * signo;
                            rowDeuda["SaldoTemporal"] = (decimal)rowDeuda["SaldoTemporal"] * signo;
                            rowDeuda["SaldoTemporal"] = (decimal)rowDeuda["SaldoTemporal"] - icc.Pago;
                            rowDeuda["SaldoTemporal"] = (decimal)rowDeuda["SaldoTemporal"] * signo;
                        }
                        catch (Exception e)
                        {
                            tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDeuda2 = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            if (rowDeuda2 != null)
                            {
                                int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda2["IdTipoDeComprobante"]).signo);
                                rowDeuda2["saldo"]         = (decimal )rowDeuda2["saldo"] * signo;
                                rowDeuda2["Saldo"]         = (decimal)rowDeuda2["Saldo"] - icc.Pago;
                                rowDeuda2["Saldo"]         = (decimal)rowDeuda2["Saldo"] * signo;
                                rowDeuda2["SaldoTemporal"] = (decimal)rowDeuda2["SaldoTemporal"] * signo;
                                rowDeuda2["SaldoTemporal"] = (decimal)rowDeuda2["SaldoTemporal"] - icc.Pago;
                                rowDeuda2["SaldoTemporal"] = (decimal)rowDeuda2["SaldoTemporal"] * signo;
                                _tpu_ComprobanteDetalleDeudaDataSet.tpu_ComprobanteDetalleDeuda.ImportRow(rowDeuda2);
                            }
                        }
                    }

                    tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDeudaSingle = mz.erp.dataaccess.tpu_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    if (rowDeudaSingle == null)
                    {
                        rowDeudaSingle = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    }

                    int signoSingle = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk(Convert.ToString(rowDeudaSingle.IdTipoDeComprobante)).signo);
                    rowDeudaSingle.Saldo         = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    rowDeudaSingle.Saldo         = (decimal)rowDeudaSingle.Saldo - iccSingle.Pago;
                    rowDeudaSingle.Saldo         = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    rowDeudaSingle.SaldoTemporal = (decimal)rowDeudaSingle.SaldoTemporal * signoSingle;
                    rowDeudaSingle.SaldoTemporal = (decimal)rowDeudaSingle.SaldoTemporal - iccSingle.Pago;
                    rowDeudaSingle.SaldoTemporal = (decimal)rowDeudaSingle.SaldoTemporal * signoSingle;

                    _tpu_ComprobanteDetalleDeudaDataSet.tpu_ComprobanteDetalleDeuda.ImportRow(rowDeudaSingle);

                    #endregion
                }
                else
                {
                    #region Inserta Comporbantes con Signo Positivos
                    iccSingle = (ItemCuentaCorriente)negativos[0];

                    // icc --> FACT de Proveedores; Notas de ??
                    foreach (ItemCuentaCorriente icc in positivos)
                    {
                        // iccSingle --> Pagos a Proveedores
                        tpu_AplicacionPagosDataset.tpu_AplicacionPagosRow row = _tpu_AplicacionPagosDataSet.tpu_AplicacionPagos.Newtpu_AplicacionPagosRow();
                        row.IdComprobanteOrigen     = iccSingle.IdComprobante;
                        row.CuotaOrigen             = 1;
                        row.IdComprobanteDestino    = icc.IdComprobante;
                        row.IdTipoComprobanteOrigen = iccSingle.IdTipoDeComprobante;
                        row.Importe = icc.Pago;
                        row.IdTipoDeComprobanteDestino = icc.IdTipoDeComprobante;
                        row.CuotaDestino                 = (short)icc.Cuota;
                        row.IdEmpresa                    = Security.IdEmpresa;
                        row.IdSucursal                   = Security.IdSucursal;
                        row.FechaCreacion                = mz.erp.businessrules.Sistema.DateTime.Now;
                        row.IdConexionCreacion           = Security.IdConexion;
                        row.IdConexionUltimaModificacion = Security.IdConexion;
                        row.IdReservado                  = 0;
                        row.RowId = Guid.Empty;
                        _tpu_AplicacionPagosDataSet.tpu_AplicacionPagos.Addtpu_AplicacionPagosRow(row);

                        try
                        {
                            tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDeuda = _tpu_ComprobanteDetalleDeudaDataSet.tpu_ComprobanteDetalleDeuda.FindByIdComprobanteCuota(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda["IdTipoDeComprobante"]).signo);
                            rowDeuda["saldo"]         = (decimal )rowDeuda["saldo"] * signo;
                            rowDeuda["Saldo"]         = (decimal)rowDeuda["Saldo"] - icc.Pago;
                            rowDeuda["Saldo"]         = (decimal)rowDeuda["Saldo"] * signo;
                            rowDeuda["saldoTemporal"] = (decimal )rowDeuda["saldoTemporal"] * signo;
                            rowDeuda["saldoTemporal"] = (decimal)rowDeuda["saldoTemporal"] - icc.Pago;
                            rowDeuda["saldoTemporal"] = (decimal)rowDeuda["saldoTemporal"] * signo;
                        }
                        catch (Exception e)
                        {
                            tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDeuda2 = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                            if (rowDeuda2 != null)
                            {
                                int signo = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk((string)rowDeuda2["IdTipoDeComprobante"]).signo);
                                rowDeuda2["saldo"]         = (decimal )rowDeuda2["saldo"] * signo;
                                rowDeuda2["Saldo"]         = (decimal)rowDeuda2["Saldo"] - icc.Pago;
                                rowDeuda2["Saldo"]         = (decimal)rowDeuda2["Saldo"] * signo;
                                rowDeuda2["saldoTemporal"] = (decimal )rowDeuda2["saldoTemporal"] * signo;
                                rowDeuda2["saldoTemporal"] = (decimal)rowDeuda2["saldoTemporal"] - icc.Pago;
                                rowDeuda2["saldoTemporal"] = (decimal)rowDeuda2["saldoTemporal"] * signo;
                                _tpu_ComprobanteDetalleDeudaDataSet.tpu_ComprobanteDetalleDeuda.ImportRow(rowDeuda2);
                            }
                        }
                    }

                    tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDeudaSingle = mz.erp.dataaccess.tpu_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    if (rowDeudaSingle == null)
                    {
                        rowDeudaSingle = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(iccSingle.IdComprobante, Convert.ToInt16(iccSingle.Cuota));
                    }

                    int signoSingle = Convert.ToInt32(tsy_TiposDeComprobantes.GetByPk(Convert.ToString(rowDeudaSingle.IdTipoDeComprobante)).signo);
                    rowDeudaSingle.Saldo         = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    rowDeudaSingle.Saldo         = (decimal)rowDeudaSingle.Saldo - iccSingle.Pago;
                    rowDeudaSingle.Saldo         = (decimal)rowDeudaSingle.Saldo * signoSingle;
                    rowDeudaSingle.SaldoTemporal = (decimal)rowDeudaSingle.SaldoTemporal * signoSingle;
                    rowDeudaSingle.SaldoTemporal = (decimal)rowDeudaSingle.SaldoTemporal - iccSingle.Pago;
                    rowDeudaSingle.SaldoTemporal = (decimal)rowDeudaSingle.SaldoTemporal * signoSingle;
                    _tpu_ComprobanteDetalleDeudaDataSet.tpu_ComprobanteDetalleDeuda.ImportRow(rowDeudaSingle);

                    #endregion
                }
            }
        }
        public bool DesimputarProveedor(ItemCuentaCorriente icc)
        {
            _data_tpu_AplicacionPagos.Clear();
            _data_tpu_ComprobanteDetalleDeuda.Clear();

            decimal pago = 0;

            if (icc.Signo == 1)
            {
                // Es un factura de Proveedores o una (nota de ?? (credito o debito) )
                // por ende hay que buscarlo por el campo IdComporbanteDestino en la tabla tpu_AplicacionPagos
                _data_tpu_AplicacionPagos = mz.erp.businessrules.tpu_AplicacionPagos.GetList(null, short.MinValue, decimal.MinValue, icc.IdTipoDeComprobante, icc.IdComprobante, Convert.ToInt16(icc.Cuota));
                foreach (tpu_AplicacionPagosDataset.tpu_AplicacionPagosRow row in _data_tpu_AplicacionPagos.tpu_AplicacionPagos.Rows)
                {
                    bool   getByPk       = false;
                    string IdComprobante = (string)row["IdComprobanteOrigen"];
                    short  cuota         = (short)row["CuotaOrigen"];
                    pago = pago + row.Importe;
                    tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDet = _data_tpu_ComprobanteDetalleDeuda.tpu_ComprobanteDetalleDeuda.FindByIdComprobanteCuota(IdComprobante, cuota);
                    if (rowDet == null)
                    {
                        rowDet  = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(IdComprobante, cuota);
                        getByPk = true;
                    }
                    if (rowDet != null)
                    {
                        // tener en cuenta el signo del saldo.
                        rowDet.Saldo         = rowDet.Saldo + (-1) * row.Importe;
                        rowDet.SaldoTemporal = rowDet.SaldoTemporal + (-1) * row.Importe;
                        if (getByPk)
                        {
                            _data_tpu_ComprobanteDetalleDeuda.tpu_ComprobanteDetalleDeuda.ImportRow(rowDet);
                        }
                        row.Delete();
                    }
                }
                tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDetalle1 = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, (short)icc.Cuota);
                //Se multiplica por 1 pues signo de saldo es positivo. Solo para consolidar los signos
                if (rowDetalle1 != null)
                {
                    rowDetalle1.Saldo         = rowDetalle1.Saldo + 1 * pago;
                    rowDetalle1.SaldoTemporal = rowDetalle1.SaldoTemporal + 1 * pago;
                    _data_tpu_ComprobanteDetalleDeuda.tpu_ComprobanteDetalleDeuda.ImportRow(rowDetalle1);
                }
            }
            else
            {
                // Es un pago a Proveedores (o una nota de ?? debito?)
                // Por ende hay que buscarlo por el campo IdComporbanteOrigen en la tabla tpu_AplicacionPagos.
                _data_tpu_AplicacionPagos = mz.erp.businessrules.tpu_AplicacionPagos.GetList(icc.IdComprobante, Convert.ToInt16(icc.Cuota), decimal.MinValue, null, null, short.MinValue);
                foreach (tpu_AplicacionPagosDataset.tpu_AplicacionPagosRow row in _data_tpu_AplicacionPagos.tpu_AplicacionPagos.Rows)
                {
                    bool   getByPk       = false;
                    string IdComprobante = (string)row["IdComprobanteDestino"];
                    short  cuota         = (short)row["CuotaDestino"];
                    pago = pago + row.Importe;
                    tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDet = _data_tpu_ComprobanteDetalleDeuda.tpu_ComprobanteDetalleDeuda.FindByIdComprobanteCuota(IdComprobante, cuota);
                    if (rowDet == null)
                    {
                        rowDet  = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(IdComprobante, cuota);
                        getByPk = true;
                    }
                    if (rowDet != null)
                    {
                        // tener en cuenta el signo del saldo.
                        rowDet.Saldo         = rowDet.Saldo + (+1) * row.Importe;
                        rowDet.SaldoTemporal = rowDet.SaldoTemporal + (+1) * row.Importe;
                        if (getByPk)
                        {
                            _data_tpu_ComprobanteDetalleDeuda.tpu_ComprobanteDetalleDeuda.ImportRow(rowDet);
                        }
                        row.Delete();
                    }
                }
                tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow rowDetalle2 = mz.erp.businessrules.tpu_ComprobanteDetalleDeuda.GetByPk(icc.IdComprobante, (short)icc.Cuota);
                // Se multiplica por 1 pues signo de saldo es positivo. Solo para consolidar los signos
                if (rowDetalle2 != null)
                {
                    rowDetalle2.Saldo         = rowDetalle2.Saldo + (-1) * pago;
                    rowDetalle2.SaldoTemporal = rowDetalle2.SaldoTemporal + (-1) * pago;
                    _data_tpu_ComprobanteDetalleDeuda.tpu_ComprobanteDetalleDeuda.ImportRow(rowDetalle2);
                }
            }
            // Chequeo que se haya eliminado alguna imputación
            return(pago > 0);
        }
        /// <summary>
        /// Valida un tpu_ComprobanteDetalleDeudaRow.
        /// </summary>
        public static bool RowIsValid(tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow row)
        {
            ApplicationAssert.Check(row != null, "El argumento row no debe ser nulo.", ApplicationAssert.LineNumber);
            bool   isValid = true;
            string mensaje;


            if (!IdComprobanteIsValid(row.IdComprobante, out mensaje))
            {
                row.SetColumnError("IdComprobante", mensaje);
                isValid = false;
            }

            if (!IdTipoDeComprobanteIsValid(row.IdTipoDeComprobante, out mensaje))
            {
                row.SetColumnError("IdTipoDeComprobante", mensaje);
                isValid = false;
            }

            if (!NumeroIsValid(row.Numero, out mensaje))
            {
                row.SetColumnError("Numero", mensaje);
                isValid = false;
            }

            if (!FechaEmisionIsValid(row.FechaEmision, out mensaje))
            {
                row.SetColumnError("FechaEmision", mensaje);
                isValid = false;
            }

            if (!FechaVencimientoIsValid(row.FechaVencimiento, out mensaje))
            {
                row.SetColumnError("FechaVencimiento", mensaje);
                isValid = false;
            }

            if (!CuotaIsValid(row.Cuota, out mensaje))
            {
                row.SetColumnError("Cuota", mensaje);
                isValid = false;
            }

            if (!ImporteIsValid(row.Importe, out mensaje))
            {
                row.SetColumnError("Importe", mensaje);
                isValid = false;
            }

            if (!SaldoIsValid(row.Saldo, out mensaje))
            {
                row.SetColumnError("Saldo", mensaje);
                isValid = false;
            }

            if (!IdMonedaCierreIsValid(row.IdMonedaCierre, out mensaje))
            {
                row.SetColumnError("IdMonedaCierre", mensaje);
                isValid = false;
            }

            if (!IdCotizacionCierreIsValid(row.IdCotizacionCierre, out mensaje))
            {
                row.SetColumnError("IdCotizacionCierre", mensaje);
                isValid = false;
            }

            if (!FechaCreacionIsValid(row.FechaCreacion, out mensaje))
            {
                row.SetColumnError("FechaCreacion", mensaje);
                isValid = false;
            }

            if (!IdConexionCreacionIsValid(row.IdConexionCreacion, out mensaje))
            {
                row.SetColumnError("IdConexionCreacion", mensaje);
                isValid = false;
            }

            if (!UltimaModificacionIsValid(row.UltimaModificacion, out mensaje))
            {
                row.SetColumnError("UltimaModificacion", mensaje);
                isValid = false;
            }

            if (!IdConexionUltimaModificacionIsValid(row.IdConexionUltimaModificacion, out mensaje))
            {
                row.SetColumnError("IdConexionUltimaModificacion", mensaje);
                isValid = false;
            }

            if (!IdReservadoIsValid(row.IdReservado, out mensaje))
            {
                row.SetColumnError("IdReservado", mensaje);
                isValid = false;
            }

            if (!RowIdIsValid(row.RowId, out mensaje))
            {
                row.SetColumnError("RowId", mensaje);
                isValid = false;
            }

            if (!IdSucursalIsValid(row.IdSucursal, out mensaje))
            {
                row.SetColumnError("IdSucursal", mensaje);
                isValid = false;
            }

            if (!IdEmpresaIsValid(row.IdEmpresa, out mensaje))
            {
                row.SetColumnError("IdEmpresa", mensaje);
                isValid = false;
            }
            ;

            return(isValid);
        }
        /// <summary>
        /// Envia los cambios del tpu_ComprobanteDetalleDeudaRow a la base de datos.
        /// </summary>
        public static void Update(tpu_ComprobanteDetalleDeudaDataset.tpu_ComprobanteDetalleDeudaRow row)
        {
            ApplicationAssert.Check(row != null, "El argumento row no debe ser nulo.", ApplicationAssert.LineNumber);

            mz.erp.dataaccess.tpu_ComprobanteDetalleDeuda.Update(row);
        }