Esempio n. 1
0
        public bool anularDB(fa_notaCreDeb_Info info)
        {
            try
            {
                #region Variables
                ct_cbtecble_Data odata_ct   = new ct_cbtecble_Data();
                cxc_cobro_Data   odata_cobr = new cxc_cobro_Data();
                #endregion

                using (Entities_facturacion db_f = new Entities_facturacion())
                {
                    #region Nota de debito credito

                    #region Cabecera
                    var entity = db_f.fa_notaCreDeb.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdSucursal == info.IdSucursal && q.IdBodega == info.IdBodega && q.IdNota == info.IdNota).FirstOrDefault();
                    if (entity == null)
                    {
                        return(false);
                    }

                    entity.Estado          = "I";
                    entity.IdUsuarioUltAnu = info.IdUsuarioUltAnu;
                    entity.Fecha_UltAnu    = DateTime.Now;
                    entity.MotiAnula       = info.MotiAnula;
                    #endregion

                    var lst_cruce = db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.Where(q => q.IdEmpresa_nt == info.IdEmpresa && q.IdSucursal_nt == info.IdSucursal && q.IdBodega_nt == info.IdBodega && q.IdNota_nt == info.IdNota).ToList();
                    db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.RemoveRange(lst_cruce);
                    #endregion

                    #region Contabilidad
                    var rel_conta = db_f.fa_notaCreDeb_x_ct_cbtecble.Where(q => q.no_IdEmpresa == info.IdEmpresa && q.no_IdSucursal == info.IdSucursal && q.no_IdBodega == info.IdBodega && q.no_IdNota == info.IdNota).FirstOrDefault();
                    if (rel_conta != null)
                    {
                        if (!odata_ct.anularDB(new ct_cbtecble_Info {
                            IdEmpresa = rel_conta.ct_IdEmpresa, IdTipoCbte = rel_conta.ct_IdTipoCbte, IdCbteCble = rel_conta.ct_IdCbteCble, IdUsuarioAnu = info.IdUsuarioUltAnu
                        }))
                        {
                            entity.Estado          = "A";
                            entity.IdUsuarioUltAnu = null;
                            entity.Fecha_UltAnu    = null;
                            entity.MotiAnula       = null;
                        }
                    }


                    #endregion

                    #region Cobranza

                    var rel_cobr = db_f.fa_notaCreDeb_x_cxc_cobro.Where(q => q.IdEmpresa_nt == info.IdEmpresa && q.IdSucursal_nt == info.IdSucursal && q.IdBodega_nt == info.IdBodega && q.IdNota_nt == info.IdNota).FirstOrDefault();
                    if (rel_cobr != null)
                    {
                        if (!odata_cobr.anularDB(new cxc_cobro_Info {
                            IdEmpresa = rel_cobr.IdEmpresa_cbr, IdSucursal = rel_cobr.IdSucursal_cbr, IdCobro = rel_cobr.IdCobro_cbr, IdUsuarioUltAnu = info.IdUsuarioUltAnu
                        }))
                        {
                            entity.Estado          = "A";
                            entity.IdUsuarioUltAnu = null;
                            entity.Fecha_UltAnu    = null;
                            entity.MotiAnula       = null;
                        }
                    }
                    #endregion

                    db_f.SaveChanges();
                }

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public bool modificarDB(cp_retencion_Info info)
        {
            try
            {
                int sec = 1;
                using (Entities_cuentas_por_pagar Context = new Entities_cuentas_por_pagar())
                {
                    var contact = Context.cp_retencion.FirstOrDefault(minfo => minfo.IdEmpresa == info.IdEmpresa && minfo.IdRetencion == info.IdRetencion);
                    if (contact != null)
                    {
                        if (string.IsNullOrEmpty(contact.NumRetencion))
                        {
                            tb_sis_Documento_Tipo_Talonario_Data odata_talonario = new tb_sis_Documento_Tipo_Talonario_Data();
                            var punto_venta = odata_pto.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta ?? 0);
                            if (punto_venta != null)
                            {
                                info_documento = odata_talonario.GetUltimoNoUsado(info.IdEmpresa, cl_enumeradores.eTipoDocumento.RETEN.ToString(), info.serie1, info.serie2, punto_venta.EsElectronico, true);
                            }

                            contact.serie1       = info.serie1 = info_documento == null ? null : info_documento.Establecimiento;
                            contact.serie2       = info.serie2 = info_documento == null ? null : info_documento.PuntoEmision;
                            contact.NumRetencion = info.NumRetencion = info_documento == null ? null : info_documento.NumDocumento;
                        }
                        //contact.IdPuntoVta = info.IdPuntoVta;
                        contact.IdSucursal      = info.IdSucursal;
                        contact.fecha           = info.fecha;
                        contact.observacion     = info.observacion;
                        contact.IdUsuarioUltMod = info.IdUsuarioUltMod;
                        contact.Fecha_UltMod    = DateTime.Now;
                        contact.IdUsuarioUltMod = info.IdUsuario;

                        if (info.detalle != null)
                        {
                            var lista = Context.cp_retencion_det.Where(minfo => minfo.IdEmpresa == info.IdEmpresa && minfo.IdRetencion == info.IdRetencion);
                            Context.cp_retencion_det.RemoveRange(lista);

                            foreach (var item in info.detalle)
                            {
                                cp_retencion_det Entity = new cp_retencion_det
                                {
                                    IdEmpresa           = info.IdEmpresa,
                                    IdRetencion         = info.IdRetencion,
                                    Idsecuencia         = sec,
                                    re_tipoRet          = item.re_tipoRet,
                                    re_baseRetencion    = (double)item.re_baseRetencion,
                                    IdCodigo_SRI        = item.IdCodigo_SRI,
                                    re_Codigo_impuesto  = item.re_Codigo_impuesto,
                                    re_valor_retencion  = Math.Round((double)item.re_valor_retencion, 2, MidpointRounding.AwayFromZero),
                                    re_Porcen_retencion = (double)item.re_Porcen_retencion,
                                    re_estado           = "A"
                                };
                                Context.cp_retencion_det.Add(Entity);
                                sec++;
                            }
                        }
                        Context.SaveChanges();

                        if (Math.Round((double)info.detalle.Sum(q => q.re_valor_retencion), 2) > 0.01)
                        {
                            ct_cbtecble_Data odata_ct = new ct_cbtecble_Data();
                            var param  = Context.cp_parametros.Where(q => q.IdEmpresa == info.IdEmpresa).FirstOrDefault();
                            var diario = odata_ct.armar_info(info.info_comprobante.lst_ct_cbtecble_det, info.IdEmpresa, info.IdSucursal, (info.info_comprobante.IdTipoCbte == 0 ? Convert.ToInt32(param.pa_IdTipoCbte_x_Retencion) : info.info_comprobante.IdTipoCbte), 0,
                                                             "Comprobante contable de retención #" + info.serie1 + " " + info.serie2 + " " + info.NumRetencion, info.fecha);
                            if (diario != null)
                            {
                                var rel = Context.cp_retencion_x_ct_cbtecble.Where(q => q.rt_IdEmpresa == info.IdEmpresa && q.rt_IdRetencion == info.IdRetencion).FirstOrDefault();
                                if (rel == null)
                                {
                                    if (odata_ct.guardarDB(diario))
                                    {
                                        Context.cp_retencion_x_ct_cbtecble.Add(new cp_retencion_x_ct_cbtecble
                                        {
                                            rt_IdEmpresa   = info.IdEmpresa,
                                            rt_IdRetencion = info.IdRetencion,

                                            ct_IdEmpresa  = diario.IdEmpresa,
                                            ct_IdTipoCbte = diario.IdTipoCbte,
                                            ct_IdCbteCble = diario.IdCbteCble,
                                            Observacion   = "Relacion"
                                        });
                                        Context.SaveChanges();
                                    }
                                }
                                else
                                {
                                    diario.IdCbteCble = rel.ct_IdCbteCble;
                                    odata_ct.modificarDB(diario);
                                }
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                tb_LogError_Data LogData = new tb_LogError_Data();
                LogData.GuardarDB(new tb_LogError_Info {
                    Descripcion = ex.Message, InnerException = ex.InnerException == null ? null : ex.InnerException.Message, Clase = "cp_retencion_Data", Metodo = "modificarDB", IdUsuario = info.IdUsuario
                });
                return(false);
            }
        }
Esempio n. 3
0
        public bool modificarDB(fa_notaCreDeb_Info info)
        {
            try
            {
                #region Variables
                int Secuencia               = 1;
                ct_cbtecble_Data odata_ct   = new ct_cbtecble_Data();
                cxc_cobro_Data   odata_cobr = new cxc_cobro_Data();
                #endregion

                using (Entities_facturacion db_f = new Entities_facturacion())
                {
                    #region Nota de debito credito

                    #region Cabecera
                    var entity = db_f.fa_notaCreDeb.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdSucursal == info.IdSucursal && q.IdBodega == info.IdBodega && q.IdNota == info.IdNota).FirstOrDefault();
                    if (entity == null)
                    {
                        return(false);
                    }

                    entity.IdPuntoVta = info.IdPuntoVta;
                    //entity.CodNota = info.CodNota;
                    entity.CreDeb             = info.CreDeb.Trim();
                    entity.CodDocumentoTipo   = info.CodDocumentoTipo;
                    entity.Serie1             = info.Serie1;
                    entity.Serie2             = info.Serie2;
                    entity.NumNota_Impresa    = info.NumNota_Impresa;
                    entity.NumAutorizacion    = info.NumAutorizacion;
                    entity.Fecha_Autorizacion = info.Fecha_Autorizacion;
                    entity.IdCliente          = info.IdCliente;
                    entity.IdContacto         = info.IdContacto;
                    entity.no_fecha           = info.no_fecha.Date;
                    entity.no_fecha_venc      = info.no_fecha_venc.Date;
                    entity.IdTipoNota         = info.IdTipoNota;
                    entity.sc_observacion     = info.sc_observacion;
                    entity.NaturalezaNota     = info.NaturalezaNota;
                    entity.IdCtaCble_TipoNota = info.IdCtaCble_TipoNota;
                    entity.IdUsuarioUltMod    = info.IdUsuarioUltMod;
                    entity.Fecha_UltMod       = DateTime.Now;

                    #endregion

                    #region Detalle
                    var lst = db_f.fa_notaCreDeb_det.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdSucursal == info.IdSucursal && q.IdBodega == info.IdBodega && q.IdNota == info.IdNota).ToList();
                    db_f.fa_notaCreDeb_det.RemoveRange(lst);

                    foreach (var item in info.lst_det)
                    {
                        db_f.fa_notaCreDeb_det.Add(new fa_notaCreDeb_det
                        {
                            IdEmpresa           = info.IdEmpresa,
                            IdSucursal          = info.IdSucursal,
                            IdBodega            = info.IdBodega,
                            IdNota              = info.IdNota,
                            Secuencia           = Secuencia++,
                            IdProducto          = item.IdProducto,
                            sc_cantidad         = item.sc_cantidad,
                            sc_cantidad_factura = item.sc_cantidad_factura,
                            sc_Precio           = item.sc_Precio,
                            sc_descUni          = item.sc_descUni,
                            sc_PordescUni       = item.sc_PordescUni,
                            sc_precioFinal      = item.sc_precioFinal,
                            vt_por_iva          = item.vt_por_iva,
                            sc_iva              = item.sc_iva,
                            IdCod_Impuesto_Iva  = item.IdCod_Impuesto_Iva,
                            sc_estado           = "A",
                            sc_subtotal         = item.sc_subtotal,
                            sc_total            = item.sc_total,

                            IdCentroCosto = item.IdCentroCosto,
                            IdCentroCosto_sub_centro_costo = item.IdCentroCosto_sub_centro_costo,
                            IdPunto_Cargo       = item.IdPunto_Cargo,
                            IdPunto_cargo_grupo = item.IdPunto_cargo_grupo
                        });
                    }
                    #endregion

                    #region Cruce
                    var lst_cruce = db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.Where(q => q.IdEmpresa_nt == info.IdEmpresa && q.IdSucursal_nt == info.IdSucursal && q.IdBodega_nt == info.IdBodega && q.IdNota_nt == info.IdNota).ToList();
                    db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.RemoveRange(lst_cruce);
                    Secuencia = 1;
                    foreach (var item in info.lst_cruce)
                    {
                        db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.Add(new fa_notaCreDeb_x_fa_factura_NotaDeb
                        {
                            IdEmpresa_nt              = info.IdEmpresa,
                            IdSucursal_nt             = info.IdSucursal,
                            IdBodega_nt               = info.IdBodega,
                            IdNota_nt                 = info.IdNota,
                            secuencia                 = Secuencia++,
                            IdEmpresa_fac_nd_doc_mod  = item.IdEmpresa_fac_nd_doc_mod,
                            IdSucursal_fac_nd_doc_mod = item.IdSucursal_fac_nd_doc_mod,
                            IdBodega_fac_nd_doc_mod   = item.IdBodega_fac_nd_doc_mod,
                            IdCbteVta_fac_nd_doc_mod  = item.IdCbteVta_fac_nd_doc_mod,
                            vt_tipoDoc                = item.vt_tipoDoc,
                            Valor_Aplicado            = item.Valor_Aplicado,
                            fecha_cruce               = DateTime.Now,
                        });
                    }
                    #endregion

                    db_f.SaveChanges();

                    #endregion

                    #region Parametros
                    var parametros = db_f.fa_parametro.Where(q => q.IdEmpresa == info.IdEmpresa).FirstOrDefault();
                    var cliente    = db_f.fa_cliente.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdCliente == info.IdCliente).FirstOrDefault();
                    #endregion

                    #region Contabilidad
                    if (parametros != null)
                    {
                        var rel_conta           = db_f.fa_notaCreDeb_x_ct_cbtecble.Where(q => q.no_IdEmpresa == info.IdEmpresa && q.no_IdSucursal == info.IdSucursal && q.no_IdBodega == info.IdBodega && q.no_IdNota == info.IdNota).FirstOrDefault();
                        ct_cbtecble_Info diario = armar_diario(info, info.CreDeb.Trim() == "C" ? (int)parametros.IdTipoCbteCble_NC : (int)parametros.IdTipoCbteCble_ND, cliente.IdCtaCble_cxc_Credito, info.IdCtaCble_TipoNota);
                        if (diario != null)
                        {
                            if (rel_conta == null)
                            {
                                if (odata_ct.guardarDB(diario))
                                {
                                    db_f.fa_notaCreDeb_x_ct_cbtecble.Add(new fa_notaCreDeb_x_ct_cbtecble
                                    {
                                        no_IdEmpresa  = info.IdEmpresa,
                                        no_IdSucursal = info.IdSucursal,
                                        no_IdBodega   = info.IdBodega,
                                        no_IdNota     = info.IdNota,

                                        ct_IdEmpresa  = diario.IdEmpresa,
                                        ct_IdTipoCbte = diario.IdTipoCbte,
                                        ct_IdCbteCble = diario.IdCbteCble,

                                        observacion = info.CodDocumentoTipo + (info.NaturalezaNota == "SRI" ? ("-" + info.Serie1 + "-" + info.Serie2 + "-" + info.NumNota_Impresa) : info.IdNota.ToString("000000000"))
                                    });
                                    db_f.SaveChanges();
                                }
                            }
                            else
                            {
                                diario.IdCbteCble = rel_conta.ct_IdCbteCble;
                                odata_ct.modificarDB(diario);
                            }
                        }
                    }
                    #endregion

                    #region Cobranza
                    if (info.CreDeb.Trim() == "C" && info.lst_cruce.Count != 0)
                    {
                        cxc_cobro_Info cobro = armar_cobro(info);
                        if (cobro != null)
                        {
                            var rel_cobr = db_f.fa_notaCreDeb_x_cxc_cobro.Where(q => q.IdEmpresa_nt == info.IdEmpresa && q.IdSucursal_nt == info.IdSucursal && q.IdBodega_nt == info.IdBodega && q.IdNota_nt == info.IdNota).FirstOrDefault();
                            if (rel_cobr == null)
                            {
                                if (odata_cobr.guardarDB(cobro))
                                {
                                    db_f.fa_notaCreDeb_x_cxc_cobro.Add(new fa_notaCreDeb_x_cxc_cobro
                                    {
                                        IdEmpresa_nt   = info.IdEmpresa,
                                        IdSucursal_nt  = info.IdSucursal,
                                        IdBodega_nt    = info.IdBodega,
                                        IdNota_nt      = info.IdNota,
                                        IdEmpresa_cbr  = cobro.IdEmpresa,
                                        IdSucursal_cbr = cobro.IdSucursal,
                                        IdCobro_cbr    = cobro.IdCobro,
                                        Valor_cobro    = Math.Round(info.lst_cruce.Sum(q => q.Valor_Aplicado), 2, MidpointRounding.AwayFromZero)
                                    });
                                    db_f.SaveChanges();
                                }
                            }
                            else
                            {
                                cobro.IdCobro = rel_cobr.IdCobro_cbr;
                                odata_cobr.modificarDB(cobro);
                            }
                        }
                    }

                    #endregion
                }

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public Boolean guardarDB(cp_retencion_Info info)
        {
            Boolean res = true;
            tb_sis_Documento_Tipo_Talonario_Info info_documento = new tb_sis_Documento_Tipo_Talonario_Info();
            tb_sis_Documento_Tipo_Talonario_Data data_talonario = new tb_sis_Documento_Tipo_Talonario_Data();

            var punto_venta = odata_pto.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta ?? 0);

            if (punto_venta != null)
            {
                if (punto_venta.EsElectronico == true)
                {
                    info_documento = odata_talonario.GetUltimoNoUsado(info.IdEmpresa, punto_venta.codDocumentoTipo, punto_venta.Su_CodigoEstablecimiento, punto_venta.cod_PuntoVta, punto_venta.EsElectronico, true);
                }
                else
                {
                    info_documento.IdEmpresa        = info.IdEmpresa;
                    info_documento.CodDocumentoTipo = info.CodDocumentoTipo;
                    info_documento.Establecimiento  = info.serie1;
                    info_documento.PuntoEmision     = info.serie2;
                    info_documento.NumDocumento     = info.NumRetencion;
                    info_documento.IdSucursal       = info.IdSucursal;
                    info_documento.Usado            = true;

                    data_talonario.modificar_estado_usadoDB(info_documento);
                }
            }

            try
            {
                using (Entities_cuentas_por_pagar Context = new Entities_cuentas_por_pagar())
                {
                    var lstf = Context.cp_retencion.Where(q => q.IdEmpresa_Ogiro == info.IdEmpresa && q.IdTipoCbte_Ogiro == info.IdTipoCbte_Ogiro && q.IdCbteCble_Ogiro == info.IdCbteCble_Ogiro).FirstOrDefault();
                    if (lstf != null)
                    {
                        return(false);
                    }

                    Context.cp_retencion.Add(new cp_retencion
                    {
                        IdEmpresa        = info.IdEmpresa,
                        IdEmpresa_Ogiro  = info.IdEmpresa_Ogiro,
                        IdCbteCble_Ogiro = info.IdCbteCble_Ogiro,
                        IdTipoCbte_Ogiro = info.IdTipoCbte_Ogiro,
                        IdRetencion      = info.IdRetencion = get_id(info.IdEmpresa),
                        CodDocumentoTipo = info.CodDocumentoTipo = "RETEN",

                        serie1       = info.serie1 = info_documento == null ? null : info_documento.Establecimiento,
                        serie2       = info.serie2 = info_documento == null ? null : info_documento.PuntoEmision,
                        NumRetencion = info.NumRetencion = info_documento == null ? null : info_documento.NumDocumento,

                        NAutorizacion = info.NAutorizacion,
                        observacion   = info.observacion,
                        fecha         = info.fecha.Date,
                        Estado        = "A",
                        IdPuntoVta    = info.IdPuntoVta,
                        IdSucursal    = info.IdSucursal,
                        Fecha_Transac = DateTime.Now,
                        IdUsuario     = info.IdUsuario,
                    });

                    int Secuencia = 1;
                    foreach (var item in info.detalle)
                    {
                        Context.cp_retencion_det.Add(new cp_retencion_det
                        {
                            IdEmpresa           = info.IdEmpresa,
                            IdRetencion         = info.IdRetencion,
                            Idsecuencia         = Secuencia++,
                            re_tipoRet          = item.re_tipoRet,
                            re_Codigo_impuesto  = item.re_Codigo_impuesto,
                            re_baseRetencion    = (double)item.re_baseRetencion,
                            re_Porcen_retencion = (double)item.re_Porcen_retencion,
                            re_valor_retencion  = (double)item.re_valor_retencion,
                            IdCodigo_SRI        = item.IdCodigo_SRI,
                            IdUsuario           = info.IdUsuario,
                            re_estado           = "A"
                        });
                    }
                    Context.SaveChanges();

                    if (Math.Round((double)info.detalle.Sum(q => q.re_valor_retencion), 2) > 0.01)
                    {
                        ct_cbtecble_Data odata_ct = new ct_cbtecble_Data();
                        var param  = Context.cp_parametros.Where(q => q.IdEmpresa == info.IdEmpresa).FirstOrDefault();
                        var diario = odata_ct.armar_info(info.info_comprobante.lst_ct_cbtecble_det, info.IdEmpresa, info.IdSucursal, (int)param.pa_IdTipoCbte_x_Retencion, 0,
                                                         "Comprobante contable de retención #" + info.serie1 + " " + info.serie2 + " " + info.NumRetencion
                                                         , info.fecha);

                        var prov = data_proveedor.get_info(info.IdEmpresa, info.IdProveedor);
                        if (prov != null)
                        {
                            if (diario.cb_Observacion == null)
                            {
                                diario.cb_Observacion = "";
                            }

                            diario.cb_Observacion = "Prov: " + prov.info_persona.pe_nombreCompleto + " FAC# " + info.co_serie + "-" + info.co_factura + " OBS: " + diario.cb_Observacion;
                        }

                        odata_ct.guardarDB(diario);

                        Context.cp_retencion_x_ct_cbtecble.Add(new cp_retencion_x_ct_cbtecble
                        {
                            rt_IdEmpresa   = info.IdEmpresa,
                            rt_IdRetencion = info.IdRetencion,

                            ct_IdEmpresa  = diario.IdEmpresa,
                            ct_IdTipoCbte = diario.IdTipoCbte,
                            ct_IdCbteCble = diario.IdCbteCble,
                            Observacion   = "Relacion"
                        });
                        Context.SaveChanges();
                    }
                }

                return(res);
            }
            catch (Exception ex)
            {
                tb_LogError_Data LogData = new tb_LogError_Data();
                LogData.GuardarDB(new tb_LogError_Info {
                    Descripcion = ex.Message, InnerException = ex.InnerException == null ? null : ex.InnerException.Message, Clase = "cp_retencion_Data", Metodo = "guardarDB", IdUsuario = info.IdUsuario
                });
                return(false);
            }
        }