public override void Start()
 {
     using (ISession Sesion = m_SessionFactory.OpenSession())
     {
         using (ITransaction Trans = Sesion.BeginTransaction())
         {
             try
             {
                 SalidaCaja SalidaCaja = (SalidaCaja)m_ObjectFlow;
                 SqlCommand SqlCmd = new SqlCommand();
                 // Actualizamos el saldo de la Caja
                 SqlCmd.Connection = (SqlConnection)Sesion.Connection;
                 SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                 SqlCmd.CommandText = "pSF_Actualizar_Saldo_Caja";
                 Trans.Enlist(SqlCmd);
                 SqlCmd.Parameters.AddWithValue("@IDCaja", SalidaCaja.Caja.ID);
                 SqlCmd.Parameters.AddWithValue("@Monto", SalidaCaja.Total * -1);
                 SqlCmd.ExecuteNonQuery();
                 // Creamos la Salida de Caja
                 Sesion.Save(SalidaCaja);
                 Sesion.Flush();
                 // Creamos una Deuda.
                 if(SalidaCaja.TipoCaja.GeneraDeuda){
                     Deuda Deuda = new Deuda();
                     Deuda.Tipo = SalidaCaja.TipoCaja.TipoDeuda;
                     Deuda.TipoDocumento = "Salida de Caja";
                     Deuda.IDDocumento = SalidaCaja.ID;
                     Deuda.Descripcion = SalidaCaja.TipoDocumento.Nombre;
                     Deuda.IDSocioNegocio = (SalidaCaja.SocioNegocio != null) ? SalidaCaja.SocioNegocio.ID : null;
                     Deuda.Saldo = SalidaCaja.Total;
                     Deuda.Total = SalidaCaja.Total;
                     Sesion.Save(Deuda);
                 }
                 // Actualizamos la Numeración de la Salida de Caja
                 if (SalidaCaja.TipoDocumento.GeneraNumeracionAlFinal)
                 {
                     SqlCmd.CommandText = "pSF_Generar_Numeracion";
                     SqlCmd.Parameters.Clear();
                     SqlCmd.Parameters.AddWithValue("@Documento", "SalidaCaja");
                     SqlCmd.Parameters.AddWithValue("@TipoDocumento", "TipoCaja");
                     SqlCmd.Parameters.AddWithValue("@IDDocumento", SalidaCaja.ID);
                     SqlCmd.Parameters.AddWithValue("@IDTipoDocumento", SalidaCaja.TipoDocumento.ID);
                     SqlCmd.ExecuteNonQuery();
                 }
                 Trans.Commit();
                 m_ResultProcess = EnumResult.SUCESS;
             }
             catch (Exception ex)
             {
                 Trans.Rollback();
                 m_ResultProcess = EnumResult.ERROR;
                 SoftException.Control(ex);
             }
             finally
             {
                 base.Start();
             }
         }
     }
 }
 public override void Start()
 {
     using (ISession Sesion = m_SessionFactory.OpenSession())
     {
         using (ITransaction Trans = Sesion.BeginTransaction())
         {
             try
             {
                 NotaDebito NotaDebito = (NotaDebito)m_ObjectFlow;
                 // Creamos la Nota de Débito
                 Sesion.Save(NotaDebito);
                 Sesion.Flush();
                 // Creamos una Deuda.
                 if (NotaDebito.TipoNotaDebito.GeneraDeuda)
                 {
                     Deuda Deuda = new Deuda();
                     Deuda.Tipo = NotaDebito.TipoNotaDebito.TipoDeuda;
                     Deuda.TipoDocumento = "Nota de Débito";
                     Deuda.IDDocumento = NotaDebito.ID;
                     Deuda.Descripcion = NotaDebito.TipoDocumento.Nombre;
                     Deuda.IDSocioNegocio = (NotaDebito.Cliente != null) ? NotaDebito.Cliente.ID : null;
                     Deuda.Saldo = NotaDebito.Total;
                     Deuda.Total = NotaDebito.Total;
                     Sesion.Save(Deuda);
                 }
                 // Actualizamos la Numeración de la Nota de Débito
                 if (NotaDebito.TipoNotaDebito.GeneraNumeracionAlFinal)
                 {
                     SqlCommand SqlCmd = new SqlCommand();
                     SqlCmd.Connection = (SqlConnection)Sesion.Connection;
                     SqlCmd.CommandText = "pSF_Generar_Numeracion";
                     SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                     Trans.Enlist(SqlCmd);
                     SqlCmd.Parameters.AddWithValue("@Documento", "NotaDebito");
                     SqlCmd.Parameters.AddWithValue("@TipoDocumento", "TipoNotaDebito");
                     SqlCmd.Parameters.AddWithValue("@IDDocumento", NotaDebito.ID);
                     SqlCmd.Parameters.AddWithValue("@IDTipoDocumento", NotaDebito.TipoNotaDebito.ID);
                     SqlCmd.ExecuteNonQuery();
                 }
                 Trans.Commit();
                 m_ResultProcess = EnumResult.SUCESS;
             }
             catch (Exception ex)
             {
                 Trans.Rollback();
                 m_ResultProcess = EnumResult.ERROR;
                 SoftException.Control(ex);
             }
             finally {
                 base.Start();
             }
         }
     }
 }
        public override void Start()
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    try
                    {
                        Soft.Facturacion.Entidades.Facturacion Facturacion = (Soft.Facturacion.Entidades.Facturacion)m_ObjectFlow;
                        SqlCommand SqlCmd = new SqlCommand();
                        SqlCmd.Connection = (SqlConnection)Sesion.Connection;

                        SqlCmd.CommandText = "pSF_Actualizar_EstadoFacturacion_OrdenProduccion";
                        SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                        Trans.Enlist(SqlCmd);
                        foreach (ItemFacturacion ItemFacturacion in Facturacion.Items)
                        {
                            SqlCmd.Parameters.Clear();
                            SqlCmd.Parameters.AddWithValue("@IDOP", ItemFacturacion.IDOrdenProduccion);
                            SqlCmd.Parameters.AddWithValue("@Cantidad", ItemFacturacion.Cantidad);
                            SqlCmd.ExecuteNonQuery();
                        }


                        foreach (ItemFacturacion ItemFacturacion in Facturacion.Items)
                        {
                            if (ItemFacturacion.TieneGuia)
                            {
                                SqlCmd.CommandText = "pSF_Actualizar_EstadoFacturacion_ItemGuiaRemision";
                                SqlCmd.Parameters.Clear();
                                SqlCmd.Parameters.AddWithValue("@IDItemGuiaRemision", ItemFacturacion.IDItemGuiaRemision);
                                SqlCmd.Parameters.AddWithValue("@Cantidad", ItemFacturacion.Cantidad);
                                SqlCmd.ExecuteNonQuery();
                            }
                        }

                        // Creamos la Factura
                        Sesion.Save(Facturacion);
                        Sesion.Flush();
                        // Creamos una Deuda.
                        if (Facturacion.TipoFacturacion.GeneraDeuda)
                        {
                            Deuda Deuda = new Deuda();
                            Deuda.Tipo = Facturacion.TipoFacturacion.TipoDeuda;
                            Deuda.TipoDocumento = Facturacion.TipoFacturacion.Comprobante;
                            Deuda.IDDocumento = Facturacion.ID;
                            Deuda.Descripcion = Facturacion.TipoDocumento.Nombre;
                            Deuda.IDSocioNegocio = (Facturacion.Cliente != null) ? Facturacion.Cliente.ID : null;
                            Deuda.Saldo = Facturacion.Total;
                            Deuda.Total = Facturacion.Total;
                            Sesion.Save(Deuda);
                        }
                        // Actualizamos la Numeración de la Factura
                        if (Facturacion.TipoFacturacion.GeneraNumeracionAlFinal)
                        {
                            SqlCmd.CommandText = "pSF_Generar_Numeracion";
                            SqlCmd.Parameters.Clear();
                            SqlCmd.Parameters.AddWithValue("@Documento", "Facturacion");
                            SqlCmd.Parameters.AddWithValue("@TipoDocumento", "TipoFacturacion");
                            SqlCmd.Parameters.AddWithValue("@IDDocumento", Facturacion.ID);
                            SqlCmd.Parameters.AddWithValue("@IDTipoDocumento", Facturacion.TipoFacturacion.ID);
                            SqlCmd.ExecuteNonQuery();
                        }
                        Trans.Commit();
                        m_ResultProcess = EnumResult.SUCESS;
                    }
                    catch (Exception ex)
                    {
                        Trans.Rollback();
                        m_ResultProcess = EnumResult.ERROR;
                        SoftException.Control(ex);
                    }
                    finally {
                        base.Start();
                    }
                }
            }
        }