public virtual void CopyValues(TicketLineRecord source)
        {
            if (source == null)
            {
                return;
            }

            Oid                   = source.Oid;
            _oid_ticket           = source.OidTicket;
            _oid_partida          = source.OidPartida;
            _oid_expediente       = source.OidExpediente;
            _oid_producto         = source.OidProducto;
            _oid_kit              = source.OidKit;
            _oid_concepto_albaran = source.OidConceptoAlbaran;
            _oid_impuesto         = source.OidImpuesto;
            _codigo_expediente    = source.CodigoExpediente;
            _concepto             = source.Concepto;
            _facturacion_bulto    = source.FacturacionBulto;
            _cantidad             = source.Cantidad;
            _cantidad_bultos      = source.CantidadBultos;
            _p_impuestos          = source.PImpuestos;
            _p_descuento          = source.PDescuento;
            _total                = source.Total;
            _precio               = source.Precio;
            _subtotal             = source.Subtotal;
            _gastos               = source.Gastos;
        }
        internal void Update(Ticket parent)
        {
            // if we're not dirty then don't update the database
            if (!this.IsDirty)
            {
                return;
            }

            this.OidTicket = parent.Oid;

            ValidationRules.CheckRules();

            if (!IsValid)
            {
                throw new iQValidationException(Library.Resources.Messages.GENERIC_VALIDATION_ERROR);
            }

            SessionCode = parent.SessionCode;
            TicketLineRecord obj = Session().Get <TicketLineRecord>(Oid);

            obj.CopyValues(Base.Record);
            Session().Update(obj);

            MarkOld();
        }