public override AprobacionSap Create(AprobacionSap dto)
        {
            try
            {
                LogSyncAprobacionesInit();

                var entities = PdmContext.Certificaciones.Where(e => e.Estado == EstadoCertificacion.Aceptada)
                               .GroupBy(e => new { e.ProveedorNombre, e.ProveedorCodigo, e.Campania })
                               .ToList()
                               .Select(e => new Entities.AprobacionSap
                {
                    Campania            = e.Key.Campania,
                    ProveedorCodigo     = e.Key.ProveedorCodigo,
                    ProveedorNombre     = e.Key.ProveedorNombre,
                    EstadoCertificacion = EstadoAprobacionSap.Ingresada,
                    EstadoConsumo       = EstadoAprobacionSap.Ingresada,
                    EstadoProvision     = EstadoAprobacionSap.Ingresada,
                    MontoTotal          = e.Sum(c => c.DuracionTema * c.CostoUnitario * 60),
                    CreateDate          = DateTime.Now,
                    CreatedBy           = UsuarioLogged
                }).ToList();


                #region Create

                entities.ForEach(e =>
                {
                    PdmContext.AprobacionesSap.Add(e);
                });

                PdmContext.SaveChanges();

                LogSyncAprobacionesDetail(entities);

                entities.ForEach(aprobacion =>
                {
                    var certificaciones = PdmContext.Certificaciones.Where(c =>
                                                                           c.Estado == EstadoCertificacion.Aceptada &&
                                                                           c.Campania.Id == aprobacion.Campania.Id &&
                                                                           c.ProveedorCodigo == aprobacion.ProveedorCodigo).ToList();


                    certificaciones.ForEach(e =>
                    {
                        e.Estado        = EstadoCertificacion.Aprobada;
                        e.AprobacionSap = aprobacion;
                        e.UpdateDate    = DateTime.Now;
                        e.UpdatedBy     = UsuarioLogged;
                    });

                    EFBatchOperation.For(PdmContext, PdmContext.Certificaciones).UpdateAll(certificaciones, x => x.ColumnsToUpdate(
                                                                                               t => t.AprobacionSap,
                                                                                               t => t.UpdateDate,
                                                                                               t => t.UpdatedBy,
                                                                                               t => t.Estado));

                    PdmContext.SaveChanges();
                });


                #endregion

                #region Send SAP

                _sapAdmin.CreateConsumo(entities);

                entities.ForEach(e =>
                {
                    e.EstadoConsumo = EstadoAprobacionSap.Enviada;
                });

                PdmContext.SaveChanges();


                _sapAdmin.CreateProvision(entities);

                entities.ForEach(e =>
                {
                    e.EstadoProvision = EstadoAprobacionSap.Enviada;
                });

                PdmContext.SaveChanges();


                _sapAdmin.CreateCertificacion(entities);

                entities.ForEach(e =>
                {
                    e.EstadoCertificacion = EstadoAprobacionSap.Enviada;
                });

                PdmContext.SaveChanges();


                #endregion

                LogSyncAprobacionesEnd();
            }
            catch (Exception e)
            {
                LogSyncAProbacionesError(e);
                throw;
            }

            return(null);
        }