Пример #1
0
        public ActionResult crearMatriculaND(int id, string placa, string observacion, int valor, string fechamatricula,
                                             int tipodoc, string bodega, string nit, string asesor, string perfilc, int tramitador_id, int cartera)
        {
            int response = 0;
            int idbodega = context.bodega_concesionario.Where(x => x.bodccs_nombre == bodega).Select(z => z.id)
                           .FirstOrDefault();
            int tpdocumento = context.tp_doc_registros.Where(x => x.tpdoc_id == tipodoc).Select(z => z.tpdoc_id)
                              .FirstOrDefault();
            int terceroid = context.icb_terceros.Where(x => x.doc_tercero == nit).Select(z => z.tercero_id)
                            .FirstOrDefault();
            int?idasesor = context.vw_pendientesEntrega.Where(x => x.asesor == asesor).Select(z => z.idAsesor)
                           .FirstOrDefault();
            int idperfilc = context.perfil_contable_documento.Where(x => x.tipo == tpdocumento).Select(z => z.id)
                            .FirstOrDefault();


            if (tramitador_id == 0 && cartera == 0)
            {
                tramitador_id = Convert.ToInt32(Session["user_usuarioid"]);
            }


            if (ModelState.IsValid)
            {
                //consecutivo
                grupoconsecutivos grupo = context.grupoconsecutivos.FirstOrDefault(x =>
                                                                                   x.documento_id == tpdocumento && x.bodega_id == idbodega);
                if (grupo != null)
                {
                    DocumentoPorBodegaController doc = new DocumentoPorBodegaController();
                    long consecutivo = doc.BuscarConsecutivo(grupo.grupo);

                    //Encabezado documento
                    encab_documento encabezado = new encab_documento
                    {
                        tipo               = tpdocumento,
                        numero             = consecutivo,
                        nit                = terceroid,
                        fecha              = DateTime.Now,
                        valor_total        = Convert.ToDecimal(valor),
                        iva                = Convert.ToDecimal(0),
                        retencion          = Convert.ToDecimal(0),
                        retencion_ica      = Convert.ToDecimal(0),
                        retencion_iva      = Convert.ToDecimal(0),
                        vendedor           = idasesor,
                        documento          = nit,
                        valor_mercancia    = Convert.ToDecimal(valor),
                        userid_creacion    = Convert.ToInt32(Session["user_usuarioid"]),
                        fec_creacion       = DateTime.Now,
                        porcen_retencion   = float.Parse("0", CultureInfo.InvariantCulture),
                        porcen_reteiva     = float.Parse("0", CultureInfo.InvariantCulture),
                        porcen_retica      = float.Parse("0", CultureInfo.InvariantCulture),
                        perfilcontable     = idperfilc,
                        bodega             = idbodega,
                        id_pedido_vehiculo = id
                    };
                    context.encab_documento.Add(encabezado);

                    //movimiento contable
                    //buscamos en perfil cuenta documento, por medio del perfil seleccionado
                    var parametrosCuentasVerificar = (from perfil in context.perfil_cuentas_documento
                                                      join nombreParametro in context.paramcontablenombres
                                                      on perfil.id_nombre_parametro equals nombreParametro.id
                                                      join cuenta in context.cuenta_puc
                                                      on perfil.cuenta equals cuenta.cntpuc_id
                                                      where perfil.id_perfil == idperfilc
                                                      select new
                    {
                        perfil.id,
                        perfil.id_nombre_parametro,
                        perfil.cuenta,
                        perfil.centro,
                        perfil.id_perfil,
                        nombreParametro.descripcion_parametro,
                        cuenta.cntpuc_numero
                    }).ToList();
                    int     secuencia     = 1;
                    decimal totalDebitos  = 0;
                    decimal totalCreditos = 0;

                    List <DocumentoDescuadradoModel> listaDescuadrados   = new List <DocumentoDescuadradoModel>();
                    List <cuentas_valores>           ids_cuentas_valores = new List <cuentas_valores>();
                    centro_costo centroValorCero = context.centro_costo.FirstOrDefault(x => x.pre_centcst == "0");
                    int          idCentroCero    = centroValorCero != null?Convert.ToInt32(centroValorCero.centcst_id) : 0;

                    foreach (var parametro in parametrosCuentasVerificar)
                    {
                        string descripcionParametro = context.paramcontablenombres
                                                      .FirstOrDefault(x => x.id == parametro.id_nombre_parametro).descripcion_parametro;
                        cuenta_puc buscarCuenta = context.cuenta_puc.FirstOrDefault(x => x.cntpuc_id == parametro.cuenta);

                        if (buscarCuenta != null)
                        {
                            if (parametro.id_nombre_parametro == 2 && Convert.ToDecimal(0) != 0 ||
                                parametro.id_nombre_parametro == 3 && Convert.ToDecimal(0) != 0 ||
                                parametro.id_nombre_parametro == 4 && Convert.ToDecimal(0) != 0 ||
                                parametro.id_nombre_parametro == 5 && Convert.ToDecimal(0) != 0 ||
                                parametro.id_nombre_parametro == 10 ||
                                parametro.id_nombre_parametro == 11)
                            {
                                mov_contable movNuevo = new mov_contable
                                {
                                    id_encab          = 0,
                                    seq               = secuencia,
                                    idparametronombre = parametro.id_nombre_parametro,
                                    cuenta            = parametro.cuenta,
                                    centro            = parametro.centro,
                                    fec               = DateTime.Now,
                                    fec_creacion      = DateTime.Now,
                                    userid_creacion   = Convert.ToInt32(Session["user_usuarioid"])
                                };
                                //            movNuevo.detalle = ndm.nota1;

                                cuenta_puc info = context.cuenta_puc.Where(i => i.cntpuc_id == parametro.cuenta)
                                                  .FirstOrDefault();

                                if (info.tercero)
                                {
                                    movNuevo.nit = terceroid;
                                }
                                else
                                {
                                    icb_terceros tercero = context.icb_terceros.Where(t => t.doc_tercero == "0")
                                                           .FirstOrDefault();
                                    movNuevo.nit = tercero.tercero_id;
                                }

                                // las siguientes validaciones se hacen dependiendo de la cuenta que esta moviendo la nota credito, para guardar la informacion acorde
                                if (parametro.id_nombre_parametro == 10)
                                {
                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(valor);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = encabezado.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(valor);

                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(valor);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(valor);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(valor);
                                    }
                                }

                                if (parametro.id_nombre_parametro == 11)
                                {
                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(valor);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = encabezado.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = Convert.ToDecimal(valor);
                                        movNuevo.debito  = 0;

                                        movNuevo.creditoniif = Convert.ToDecimal(valor);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = Convert.ToDecimal(valor);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = Convert.ToDecimal(valor);
                                        movNuevo.debito  = 0;
                                    }
                                }

                                if (parametro.id_nombre_parametro == 2)
                                {
                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(valor);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = encabezado.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito     = Convert.ToDecimal(encabezado.iva);
                                        movNuevo.debito      = 0;
                                        movNuevo.creditoniif = Convert.ToDecimal(encabezado.iva);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = Convert.ToDecimal(encabezado.iva);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = Convert.ToDecimal(encabezado.iva);
                                        movNuevo.debito  = 0;
                                    }
                                }

                                if (parametro.id_nombre_parametro == 3 && Convert.ToDecimal(encabezado.retencion) != 0)
                                {
                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(valor);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = encabezado.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(encabezado.retencion);

                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(encabezado.retencion);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(encabezado.retencion);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(encabezado.retencion);
                                    }
                                }

                                if (parametro.id_nombre_parametro == 4)
                                {
                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(encabezado.iva);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = encabezado.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(encabezado.retencion_iva);

                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(encabezado.retencion_iva);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(encabezado.retencion_iva);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(encabezado.retencion_iva);
                                    }
                                }

                                if (parametro.id_nombre_parametro == 5)
                                {
                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(valor);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = encabezado.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito     = 0;
                                        movNuevo.debito      = Convert.ToDecimal(encabezado.retencion_ica);
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(encabezado.retencion_ica);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(encabezado.retencion_ica);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(encabezado.retencion_ica);
                                    }
                                }

                                secuencia++;

                                //Cuentas valores
                                cuentas_valores buscar_cuentas_valores = context.cuentas_valores.FirstOrDefault(x =>
                                                                                                                x.centro == parametro.centro && x.cuenta == parametro.cuenta &&
                                                                                                                x.nit == movNuevo.nit);
                                if (buscar_cuentas_valores != null)
                                {
                                    buscar_cuentas_valores.debito              += movNuevo.debito;
                                    buscar_cuentas_valores.credito             += movNuevo.credito;
                                    buscar_cuentas_valores.debitoniff          += movNuevo.debitoniif;
                                    buscar_cuentas_valores.creditoniff         += movNuevo.creditoniif;
                                    context.Entry(buscar_cuentas_valores).State = EntityState.Modified;
                                }
                                else
                                {
                                    DateTime        fechaHoy         = DateTime.Now;
                                    cuentas_valores crearCuentaValor = new cuentas_valores
                                    {
                                        ano         = fechaHoy.Year,
                                        mes         = fechaHoy.Month,
                                        cuenta      = movNuevo.cuenta,
                                        centro      = movNuevo.centro,
                                        nit         = movNuevo.nit,
                                        debito      = movNuevo.debito,
                                        credito     = movNuevo.credito,
                                        debitoniff  = movNuevo.debitoniif,
                                        creditoniff = movNuevo.creditoniif
                                    };
                                    context.cuentas_valores.Add(crearCuentaValor);
                                }

                                context.mov_contable.Add(movNuevo);

                                totalCreditos += movNuevo.credito;
                                totalDebitos  += movNuevo.debito;

                                listaDescuadrados.Add(new DocumentoDescuadradoModel
                                {
                                    NumeroCuenta         = "(" + info.cntpuc_numero + ")" + info.cntpuc_descp,
                                    DescripcionParametro = descripcionParametro,
                                    ValorDebito          = movNuevo.debito,
                                    ValorCredito         = movNuevo.credito
                                });
                            }
                        }
                    }

                    if (totalDebitos != totalCreditos)
                    {
                        response = 0;
                    }
                    else
                    {
                        context.SaveChanges();
                        DocumentoPorBodegaController conse = new DocumentoPorBodegaController();
                        doc.ActualizarConsecutivo(grupo.grupo, consecutivo);
                        crearMatricula(id, tramitador_id, cartera, placa, valor, fechamatricula, observacion, encabezado);
                        response = 1;
                    }
                }
                else
                {
                    response = 0;
                }
            }
            else
            {
                List <ModelErrorCollection> errors = ModelState.Select(x => x.Value.Errors)
                                                     .Where(y => y.Count > 0)
                                                     .ToList();
                response = 0;
            }

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public ActionResult Create(NotasContablesModel ncp)
        {
            if (ModelState.IsValid)
            {
                //consecutivo
                grupoconsecutivos grupo = context.grupoconsecutivos.FirstOrDefault(x =>
                                                                                   x.documento_id == ncp.tipo && x.bodega_id == ncp.bodega);
                if (grupo != null)
                {
                    DocumentoPorBodegaController doc = new DocumentoPorBodegaController();
                    long consecutivo = doc.BuscarConsecutivo(grupo.grupo);

                    //Encabezado documento
                    encab_documento encabezado = new encab_documento
                    {
                        tipo             = ncp.tipo,
                        numero           = consecutivo,
                        nit              = ncp.nit,
                        fecha            = DateTime.Now,
                        valor_total      = Convert.ToDecimal(ncp.valor_total),
                        iva              = Convert.ToDecimal(ncp.iva),
                        retencion        = Convert.ToDecimal(ncp.retencion),
                        retencion_ica    = Convert.ToDecimal(ncp.retencion_ica),
                        retencion_iva    = Convert.ToDecimal(ncp.retencion_iva),
                        vendedor         = ncp.vendedor,
                        documento        = ncp.documento,
                        prefijo          = ncp.prefijo,
                        valor_mercancia  = Convert.ToDecimal(ncp.costo),
                        nota1            = ncp.nota1,
                        userid_creacion  = Convert.ToInt32(Session["user_usuarioid"]),
                        fec_creacion     = DateTime.Now,
                        porcen_retencion =
                            float.Parse(ncp.por_retencion,
                                        CultureInfo
                                        .InvariantCulture), //esto se utiliza para que al guardar el dato en la BD me quede con la "," del decimal
                        porcen_reteiva =
                            float.Parse(ncp.por_retencion_iva,
                                        CultureInfo
                                        .InvariantCulture), //esto se utiliza para que al guardar el dato en la BD me quede con la "," del decimal
                        porcen_retica =
                            float.Parse(ncp.por_retencion_ica,
                                        CultureInfo
                                        .InvariantCulture), //esto se utiliza para que al guardar el dato en la BD me quede con la "," del decimal
                        perfilcontable = ncp.perfilcontable,
                        bodega         = ncp.bodega
                    };
                    context.encab_documento.Add(encabezado); // ***** ACTUALIZA ENCABEZADO *****

                    //valor aplicado tengo que actualizarlo en la factura a la que estoy generando la nota
                    //buscas la factura
                    if (!string.IsNullOrWhiteSpace(ncp.documento) && ncp.prefijo != null)
                    {
                        int             numerodocumento = Convert.ToInt32(ncp.documento);
                        encab_documento factura         = context.encab_documento
                                                          .Where(d => d.idencabezado == ncp.prefijo && d.numero == numerodocumento).FirstOrDefault();

                        if (factura != null)
                        {
                            int valoraplicado = Convert.ToInt32(factura.valor_aplicado) != null
                                ? Convert.ToInt32(factura.valor_aplicado)
                                : 0;

                            decimal nuevovalor = Convert.ToDecimal(valoraplicado) + Convert.ToDecimal(ncp.valor_total);
                            factura.valor_aplicado       = Convert.ToDecimal(nuevovalor);
                            context.Entry(factura).State = EntityState.Modified;
                            // si al crear la nota credito se selecciono factura se debe guardar el registro tambien en cruce documentos, de lo contrario NO
                            //Cruce documentos
                            cruce_documentos cd = new cruce_documentos
                            {
                                idtipo          = ncp.tipo,
                                numero          = consecutivo,
                                idtipoaplica    = Convert.ToInt32(ncp.tipofactura),
                                numeroaplica    = Convert.ToInt32(ncp.documento),
                                valor           = Convert.ToDecimal(ncp.valor_total),
                                fecha           = DateTime.Now,
                                fechacruce      = DateTime.Now,
                                userid_creacion = Convert.ToInt32(Session["user_usuarioid"])
                            };
                            context.cruce_documentos.Add(cd); // ***** ACTUALIZA CRUCE DE DOCUMENTOS *****
                        }
                    }

                    //movimiento contable
                    //buscamos en perfil cuenta documento, por medio del perfil seleccionado
                    var parametrosCuentasVerificar = (from perfil in context.perfil_cuentas_documento
                                                      join nombreParametro in context.paramcontablenombres
                                                      on perfil.id_nombre_parametro equals nombreParametro.id
                                                      join cuenta in context.cuenta_puc
                                                      on perfil.cuenta equals cuenta.cntpuc_id
                                                      where perfil.id_perfil == ncp.perfilcontable
                                                      select new
                    {
                        perfil.id,
                        perfil.id_nombre_parametro,
                        perfil.cuenta,
                        perfil.centro,
                        perfil.id_perfil,
                        nombreParametro.descripcion_parametro,
                        cuenta.cntpuc_numero
                    }).ToList();

                    int     secuencia     = 1;
                    decimal totalDebitos  = 0;
                    decimal totalCreditos = 0;

                    List <DocumentoDescuadradoModel> listaDescuadrados   = new List <DocumentoDescuadradoModel>();
                    List <cuentas_valores>           ids_cuentas_valores = new List <cuentas_valores>();
                    centro_costo centroValorCero = context.centro_costo.FirstOrDefault(x => x.pre_centcst == "0");
                    int          idCentroCero    = centroValorCero != null?Convert.ToInt32(centroValorCero.centcst_id) : 0;

                    foreach (var parametro in parametrosCuentasVerificar)
                    {
                        string descripcionParametro = context.paramcontablenombres
                                                      .FirstOrDefault(x => x.id == parametro.id_nombre_parametro).descripcion_parametro;
                        cuenta_puc buscarCuenta = context.cuenta_puc.FirstOrDefault(x => x.cntpuc_id == parametro.cuenta);

                        if (buscarCuenta != null)
                        {
                            if (parametro.id_nombre_parametro == 2 && Convert.ToDecimal(ncp.iva) != 0 ||
                                parametro.id_nombre_parametro == 3 && Convert.ToDecimal(ncp.retencion) != 0 ||
                                parametro.id_nombre_parametro == 4 && Convert.ToDecimal(ncp.por_retencion_iva) != 0 ||
                                parametro.id_nombre_parametro == 5 && Convert.ToDecimal(ncp.retencion_ica) != 0 ||
                                parametro.id_nombre_parametro == 1 ||
                                parametro.id_nombre_parametro == 9)
                            {
                                mov_contable movNuevo = new mov_contable
                                {
                                    id_encab          = ncp.id_encab,
                                    seq               = secuencia,
                                    idparametronombre = parametro.id_nombre_parametro,
                                    cuenta            = parametro.cuenta,
                                    centro            = parametro.centro,
                                    fec               = DateTime.Now,
                                    fec_creacion      = DateTime.Now,
                                    userid_creacion   = Convert.ToInt32(Session["user_usuarioid"]),
                                    detalle           = ncp.nota1
                                };

                                cuenta_puc info = context.cuenta_puc.Where(i => i.cntpuc_id == parametro.cuenta)
                                                  .FirstOrDefault();

                                if (info.tercero)
                                {
                                    movNuevo.nit = ncp.nit;
                                }
                                else
                                {
                                    icb_terceros tercero = context.icb_terceros.Where(t => t.doc_tercero == "0")
                                                           .FirstOrDefault();
                                    movNuevo.nit = tercero.tercero_id;
                                }

                                // las siguientes validaciones se hacen dependiendo de la cuenta que esta moviendo la nota credito, para guardar la informacion acorde
                                if (parametro.id_nombre_parametro == 1) // if (parametro.id_nombre_parametro == 10)
                                {
                                    /*if (info.aplicaniff==true)
                                     *                      {
                                     *
                                     *                      }*/

                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(ncp.costo);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = ncp.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        //movNuevo.credito = Convert.ToDecimal(ncp.valor_total);
                                        //movNuevo.debito = 0;

                                        //movNuevo.creditoniif = Convert.ToDecimal(ncp.valor_total);
                                        //movNuevo.debitoniif = 0;
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.valor_total);

                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.valor_total);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.valor_total);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.valor_total);
                                    }
                                }

                                if (parametro.id_nombre_parametro == 9) // credito
                                {
                                    /*if (info.aplicaniff == true)
                                     *                      {
                                     *
                                     *                      }*/

                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(ncp.costo);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = ncp.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = Convert.ToDecimal(ncp.costo);
                                        movNuevo.debito  = 0;

                                        movNuevo.creditoniif = Convert.ToDecimal(ncp.costo);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = Convert.ToDecimal(ncp.costo);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = Convert.ToDecimal(ncp.costo);
                                        movNuevo.debito  = 0;
                                    }
                                }

                                if (parametro.id_nombre_parametro == 2) // credito
                                {
                                    /*if (info.aplicaniff == true)
                                     *                      {
                                     *
                                     *                      }*/

                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(ncp.costo);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = ncp.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito     = Convert.ToDecimal(ncp.iva);
                                        movNuevo.debito      = 0;
                                        movNuevo.creditoniif = Convert.ToDecimal(ncp.iva);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = Convert.ToDecimal(ncp.iva);
                                        movNuevo.debitoniif  = 0;
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = Convert.ToDecimal(ncp.iva);
                                        movNuevo.debito  = 0;
                                    }
                                }

                                if (parametro.id_nombre_parametro == 3)
                                {
                                    /*if (info.aplicaniff == true)
                                     *                      {
                                     *
                                     *                      }*/

                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(ncp.costo);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = ncp.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.retencion);

                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.retencion);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.retencion);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.retencion);
                                    }
                                }

                                if (parametro.id_nombre_parametro == 4)
                                {
                                    /*if (info.aplicaniff == true)
                                     *                      {
                                     *
                                     *                      }*/

                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(ncp.iva);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = ncp.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.retencion_iva);

                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.retencion_iva);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.retencion_iva);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.retencion_iva);
                                    }
                                }

                                if (parametro.id_nombre_parametro == 5)
                                {
                                    /*if (info.aplicaniff == true)
                                     *                      {
                                     *
                                     *                      }*/

                                    if (info.manejabase)
                                    {
                                        movNuevo.basecontable = Convert.ToDecimal(ncp.costo);
                                    }
                                    else
                                    {
                                        movNuevo.basecontable = 0;
                                    }

                                    if (info.documeto)
                                    {
                                        movNuevo.documento = ncp.documento;
                                    }

                                    if (buscarCuenta.concepniff == 1)
                                    {
                                        movNuevo.credito     = 0;
                                        movNuevo.debito      = Convert.ToDecimal(ncp.retencion_ica);
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.retencion_ica);
                                    }

                                    if (buscarCuenta.concepniff == 4)
                                    {
                                        movNuevo.creditoniif = 0;
                                        movNuevo.debitoniif  = Convert.ToDecimal(ncp.retencion_ica);
                                    }

                                    if (buscarCuenta.concepniff == 5)
                                    {
                                        movNuevo.credito = 0;
                                        movNuevo.debito  = Convert.ToDecimal(ncp.retencion_ica);
                                    }
                                }

                                secuencia++;

                                //Cuentas valores
                                cuentas_valores buscar_cuentas_valores = context.cuentas_valores.FirstOrDefault(x =>
                                                                                                                x.centro == parametro.centro && x.cuenta == parametro.cuenta &&
                                                                                                                x.nit == movNuevo.nit);
                                if (buscar_cuentas_valores != null)
                                {
                                    buscar_cuentas_valores.debito              += movNuevo.debito;
                                    buscar_cuentas_valores.credito             += movNuevo.credito;
                                    buscar_cuentas_valores.debitoniff          += movNuevo.debitoniif;
                                    buscar_cuentas_valores.creditoniff         += movNuevo.creditoniif;
                                    context.Entry(buscar_cuentas_valores).State = EntityState.Modified;
                                }
                                else
                                {
                                    DateTime        fechaHoy         = DateTime.Now;
                                    cuentas_valores crearCuentaValor = new cuentas_valores
                                    {
                                        ano         = fechaHoy.Year,
                                        mes         = fechaHoy.Month,
                                        cuenta      = movNuevo.cuenta,
                                        centro      = movNuevo.centro,
                                        nit         = movNuevo.nit,
                                        debito      = movNuevo.debito,
                                        credito     = movNuevo.credito,
                                        debitoniff  = movNuevo.debitoniif,
                                        creditoniff = movNuevo.creditoniif
                                    };
                                    context.cuentas_valores
                                    .Add(crearCuentaValor);     // ***** ACTUALIZA CUENTA VALORES *****
                                }

                                context.mov_contable.Add(movNuevo); // ***** ACTUALIZA MOV CONTABLES *****

                                totalCreditos += movNuevo.credito;
                                totalDebitos  += movNuevo.debito;

                                listaDescuadrados.Add(
                                    new DocumentoDescuadradoModel // ***** ACTUALIZA listaDescuadrados *****
                                {
                                    NumeroCuenta         = "(" + info.cntpuc_numero + ")" + info.cntpuc_descp,
                                    DescripcionParametro = descripcionParametro,
                                    ValorDebito          = movNuevo.debito,
                                    ValorCredito         = movNuevo.credito
                                });
                            }
                        }
                    }

                    if (totalDebitos != totalCreditos)
                    {
                        TempData["mensaje_error"] =
                            "El documento no tiene los movimientos calculados correctamente, verifique el perfil del documento";

                        ViewBag.documentoSeleccionado = encabezado.tipo;
                        ViewBag.bodegaSeleccionado    = encabezado.bodega;
                        ViewBag.perfilSeleccionado    = encabezado.perfilcontable;

                        ViewBag.documentoDescuadrado = listaDescuadrados;
                        ViewBag.calculoDebito        = totalDebitos;
                        ViewBag.calculoCredito       = totalCreditos;

                        listas();
                        return(View(ncp));
                    }

                    context.SaveChanges();
                    TempData["mensaje"] = "registro creado correctamente";
                    DocumentoPorBodegaController conse = new DocumentoPorBodegaController();
                    doc.ActualizarConsecutivo(grupo.grupo, consecutivo);

                    return(RedirectToAction("Create"));
                }

                TempData["mensaje_error"] = "no hay consecutivo";
            }
            else
            {
                TempData["mensaje_error"] = "No fue posible guardar el registro, por favor valide";
                List <ModelErrorCollection> errors = ModelState.Select(x => x.Value.Errors)
                                                     .Where(y => y.Count > 0)
                                                     .ToList();
            }

            listas();
            return(View(ncp));
        }
Пример #3
0
        public ActionResult Create(encab_documento encabezado, int?menu)
        {
            listas();

            string lista = Request["lista"];
            int    datos = Convert.ToInt32(lista);

            //consecutivo
            int grupo = context.grupoconsecutivos
                        .FirstOrDefault(x => x.documento_id == encabezado.tipo && x.bodega_id == encabezado.bodega).grupo;
            DocumentoPorBodegaController doc = new DocumentoPorBodegaController();
            long consecutivo = doc.BuscarConsecutivo(grupo);

            encabezado.numero          = consecutivo;
            encabezado.impoconsumo     = 0;
            encabezado.fec_creacion    = DateTime.Now;
            encabezado.userid_creacion = Convert.ToInt32(Session["user_usuarioid"]);
            encabezado.estado          = true;
            context.encab_documento.Add(encabezado);
            context.SaveChanges();


            int prueba        = encabezado.idencabezado;
            int id_encabezado = context.encab_documento.OrderByDescending(x => x.idencabezado).FirstOrDefault()
                                .idencabezado;

            int total = Convert.ToInt32(lista);

            for (int i = 1; i <= total; i++)
            {
                if (!string.IsNullOrEmpty(Request["cuenta_" + i]))
                {
                    mov_contable mov = new mov_contable
                    {
                        id_encab          = id_encabezado,
                        seq               = i,
                        idparametronombre = 19,
                        cuenta            = Convert.ToInt32(Request["cuenta_" + i])
                    };

                    if (!string.IsNullOrEmpty(Request["centro_" + i]))
                    {
                        mov.centro = Convert.ToInt32(Request["centro_" + i]);
                    }
                    else
                    {
                        var centroCosto = (from c in context.centro_costo
                                           where c.pre_centcst == "0"
                                           select new
                        {
                            c.centcst_id
                        }).FirstOrDefault();

                        mov.centro = Convert.ToInt32(centroCosto.centcst_id);
                    }

                    if (!string.IsNullOrEmpty(Request["nit_" + i]))
                    {
                        mov.nit = Convert.ToInt32(Request["nit_" + i]);
                    }
                    else
                    {
                        var nitCero = (from t in context.icb_terceros
                                       where t.doc_tercero == "0"
                                       select new
                        {
                            t.tercero_id
                        }).FirstOrDefault();

                        mov.nit = Convert.ToInt32(nitCero.tercero_id);
                    }

                    if (!string.IsNullOrEmpty(Request["nitAdmin_" + i]))
                    {
                        mov.idterceroadmin = Convert.ToInt32(Request["nitAdmin_" + i]);
                    }

                    mov.fec = encabezado.fecha;
                    if (!string.IsNullOrEmpty(Request["debito_" + i]))
                    {
                        mov.debito = Convert.ToDecimal(Request["debito_" + i]);
                    }

                    if (!string.IsNullOrEmpty(Request["credito_" + i]))
                    {
                        mov.credito = Convert.ToDecimal(Request["credito_" + i]);
                    }

                    if (!string.IsNullOrEmpty(Request["base_" + i]))
                    {
                        mov.basecontable = Convert.ToDecimal(Request["debitoNiff_" + i]);
                    }

                    if (!string.IsNullOrEmpty(Request["debitoNiff_" + i]))
                    {
                        mov.debitoniif = Convert.ToDecimal(Request["debitoNiff_" + i]);
                    }

                    if (!string.IsNullOrEmpty(Request["creditoNiff_" + i]))
                    {
                        mov.creditoniif = Convert.ToDecimal(Request["creditoNiff_" + i]);
                    }

                    mov.detalle         = Request["detalle_" + i];
                    mov.fec_creacion    = DateTime.Now;
                    mov.userid_creacion = Convert.ToInt32(Session["user_usuarioid"]);
                    mov.estado          = true;
                    context.mov_contable.Add(mov);
                    context.SaveChanges();
                }
            }

            DocumentoPorBodegaController conse = new DocumentoPorBodegaController();

            doc.ActualizarConsecutivo(grupo, consecutivo);

            TempData["mensaje"] = "Registro creado correctamente";

            context.SaveChanges();
            return(RedirectToAction("Create", new { id = encabezado.idencabezado, menu }));
        }