예제 #1
0
        public async Task <IHttpActionResult> Guardar(VentaBE obe)
        {
            try
            {
                VentaBL     oVentaBL = new VentaBL(obe.IdCliente);
                RespuestaBE rpta     = new RespuestaBE();
                if (obe.Acuenta)
                {
                    rpta = oVentaBL.GuardarACuenta(obe);
                    if (rpta.codigo == 1 || rpta.codigo == 2)
                    {
                        return(Ok(Models.Util.GetBodyResponseF(210, rpta.descripcion, "")));
                    }
                    else
                    {
                        return(Ok(Models.Util.GetBodyResponseF(300, rpta.descripcion, "")));
                    }
                }
                else
                {
                    rpta = oVentaBL.Guardar(obe);

                    if (rpta.codigo == 2 & rpta.isFactOnline)
                    {
                        EDEDocumentoElectronico    objEDEDocumentoElectronicoResponse;
                        EDEEnviarDocumentoResponse objEDERespuesta;
                        FacturacionElectronicaBL   oFacturaElectronicaBL = new FacturacionElectronicaBL();
                        //Generar Estructura Facturacion electronica
                        objEDEDocumentoElectronicoResponse = new EDEDocumentoElectronico();
                        objEDEDocumentoElectronicoResponse = oFacturaElectronicaBL.GenerarEstructuraBoletaFactura(obe);
                        //Procesar Facturacion electronica
                        HelperLog.PutLine("Inicio proceso Facturacion Electronica Boletas y Facturas");
                        objEDERespuesta = oFacturaElectronicaBL.ProcesarBoletaFactura(objEDEDocumentoElectronicoResponse);
                        string msg         = "";
                        string byteArchivo = "";
                        if (objEDERespuesta.Exito)
                        {
                            ImprimirComprobanteBL oImprimirComprobanteBL = new ImprimirComprobanteBL();
                            byteArchivo = oImprimirComprobanteBL.ImprimirVenta(obe);
                            msg         = "Se envío a SUNAT Correctamente.";
                            if (objEDERespuesta.Procesado)
                            {
                                HelperLog.PutLine(string.Format("Se han actualizado el registro."));
                            }
                            else
                            {
                                HelperLog.PutLine(string.Format("No existen registros para actualizar."));
                            }
                        }
                        else
                        {
                            msg = "Ocurrío un error al enviar a SUNAT.";
                            HelperLog.PutLineError(string.Format(string.Format("Se ha generado el siguiente error: {0}", objEDERespuesta.MensajeError)));
                        }
                        //Actualizar Respuesta
                        ActualizarRespuesta(objEDERespuesta);
                        return(Ok(Models.Util.GetBodyResponseF(200, rpta.descripcion + " " + msg, byteArchivo)));
                    }
                    else if (rpta.codigo == 1)
                    {
                        string byteArchivo = "";
                        ImprimirComprobanteBL oImprimirComprobanteBL = new ImprimirComprobanteBL();
                        byteArchivo = oImprimirComprobanteBL.ImprimirVenta(obe);
                        return(Ok(Models.Util.GetBodyResponseF(200, rpta.descripcion, byteArchivo)));
                    }
                    else if (rpta.codigo == 2)
                    {
                        string byteArchivo = "";
                        ImprimirComprobanteBL oImprimirComprobanteBL = new ImprimirComprobanteBL();
                        byteArchivo = oImprimirComprobanteBL.ImprimirVenta(obe);
                        return(Ok(Models.Util.GetBodyResponseF(200, rpta.descripcion, byteArchivo)));
                    }
                    else
                    {
                        return(Ok(Models.Util.GetBodyResponse(300, rpta.descripcion)));
                    }
                }
            }
            catch (Exception ex)
            {
                //LogSA.GrabarLogError("SOL TR", model.user, "EditarTareas", ex);
                return(Ok(Models.Util.GetBodyResponse(400, ex.Message)));
            }
        }