public ActionResult LiquidarCreate(int ID)
        {
            ViaticoWS.Viatico viaticoObtenido = new ViaticoWS.Viatico();
            LiquidacionesWS.Liquidar liquidacionObtenida = new LiquidacionesWS.Liquidar();
            LiquidacionesWS.Solicitud solicitudObtenida = new LiquidacionesWS.Solicitud();
            LiquidacionesWS.SolicitudDetalle solicitudDetalleObtenida = new LiquidacionesWS.SolicitudDetalle();
            LiquidacionesWS.SolicitudDetallePK solicitudDetallePKObtenida = new LiquidacionesWS.SolicitudDetallePK();
            LiquidacionesWS.TipoViatico tipoViaticoObtenida = new LiquidacionesWS.TipoViatico();
            LiquidacionesWS.Ubigeo ubigeoOri = new LiquidacionesWS.Ubigeo();
            LiquidacionesWS.Ubigeo ubigeoDest = new LiquidacionesWS.Ubigeo();

            viaticoObtenido = proxy2.ObtenerSolicitud(ID);

            solicitudObtenida.Co_Solicitud = viaticoObtenido.CodigoSolicitud;
            solicitudObtenida.Fe_Solicitud = viaticoObtenido.FechaSolicitud;
            solicitudObtenida.Co_EmpSolicitante = viaticoObtenido.CodigoEmpleadoSolicitante;

            ubigeoOri.CodigoUbigeo = viaticoObtenido.ubigeoOrigen.CodigoUbigeo;
            ubigeoOri.NoDescripcion = viaticoObtenido.ubigeoOrigen.NoDescripcion;
            solicitudObtenida.ubigeoOrigen = ubigeoOri;

            ubigeoDest.CodigoUbigeo = viaticoObtenido.ubigeoDestino.CodigoUbigeo;
            ubigeoDest.NoDescripcion = viaticoObtenido.ubigeoDestino.NoDescripcion;
            solicitudObtenida.ubigeoDestino = ubigeoDest;

            solicitudObtenida.Fe_Salida = viaticoObtenido.FechaSalida;
            solicitudObtenida.Fe_Retorno = viaticoObtenido.FechaRetorno;
            solicitudObtenida.Tx_Sustento = viaticoObtenido.SustentoViaje;
            solicitudObtenida.Ss_TotalSolicitado = viaticoObtenido.TotalSolicitado;

            LiquidacionesWS.SolicitudDetalle[] item = new LiquidacionesWS.SolicitudDetalle[viaticoObtenido.Detalles.Count];
            //LiquidacionesWS.LiquidarDetalle[] item = new LiquidacionesWS.LiquidarDetalle[viaticoObtenido.Detalles.Count];

            for (int i = 0; i < viaticoObtenido.Detalles.Count; i++)
            {
                item[i] = new SolicitudDetalle();
                //item[i] = new LiquidarDetalle();
                item[i].PK = new SolicitudDetallePK();
                //item[i].PK = new LiquidarDetallePK();
                item[i].PK.TipoViatico = new TipoViatico();

                item[i].PK.TipoViatico.Co_TipoViatico = viaticoObtenido.Detalles[i].PK.TipoViatico.Co_TipoViatico;
                item[i].PK.TipoViatico.No_Descripcion = viaticoObtenido.Detalles[i].PK.TipoViatico.No_Descripcion;
                item[i].PK.Solicitud = viaticoObtenido.Detalles[i].PK.Viatico;
                item[i].Ss_MontoSolicitado = viaticoObtenido.Detalles[i].Ss_MontoSolicitado;
            }

            solicitudObtenida.Detalles = item;

            liquidacionObtenida.solicitud = solicitudObtenida;

            return View(liquidacionObtenida);
        }
        public void TestMethod1()
        {
            try
            {
                LiquidacionesWS.LiquidacionesClient proxy = new LiquidacionesWS.LiquidacionesClient();

                LiquidacionesWS.Liquidar liquidar = new LiquidacionesWS.Liquidar();
                liquidar = proxy.CrearLiquidacion(DateTime.Parse("14/07/2014 0:00:00"),
                                                    int.Parse("2"),
                                                    Double.Parse("120.00"),
                                                    Double.Parse("100.00"),
                                                    Double.Parse("21.00"));

                Assert.IsNotNull(liquidar);
            }
            catch (FaultException<ValidationException> ex)
            {
                Assert.AreEqual("Otros Gastos no puede ser mayor al 20% del monto utilizado.", ex.Message);

            }
        }
        public ActionResult LiquidarCreate(FormCollection collection)
        {
            try
            {
                ViaticoWS.Viatico viaticoObtenido = new ViaticoWS.Viatico();
                LiquidacionesWS.Liquidar liquidacionObtenida = new LiquidacionesWS.Liquidar();
                LiquidacionesWS.Solicitud solicitudObtenida = new LiquidacionesWS.Solicitud();
                LiquidacionesWS.SolicitudDetalle solicitudDetalleObtenida = new LiquidacionesWS.SolicitudDetalle();
                LiquidacionesWS.SolicitudDetallePK solicitudDetallePKObtenida = new LiquidacionesWS.SolicitudDetallePK();
                LiquidacionesWS.TipoViatico tipoViaticoObtenida = new LiquidacionesWS.TipoViatico();
                LiquidacionesWS.Ubigeo ubigeoOri = new LiquidacionesWS.Ubigeo();
                LiquidacionesWS.Ubigeo ubigeoDest = new LiquidacionesWS.Ubigeo();

                viaticoObtenido = proxy2.ObtenerSolicitud(int.Parse(collection["solicitud.Co_Solicitud"]));

                solicitudObtenida.Co_Solicitud = viaticoObtenido.CodigoSolicitud;
                solicitudObtenida.Fe_Solicitud = viaticoObtenido.FechaSolicitud;
                solicitudObtenida.Co_EmpSolicitante = viaticoObtenido.CodigoEmpleadoSolicitante;

                ubigeoOri.CodigoUbigeo = viaticoObtenido.ubigeoOrigen.CodigoUbigeo;
                ubigeoOri.NoDescripcion = viaticoObtenido.ubigeoOrigen.NoDescripcion;
                solicitudObtenida.ubigeoOrigen = ubigeoOri;

                ubigeoDest.CodigoUbigeo = viaticoObtenido.ubigeoDestino.CodigoUbigeo;
                ubigeoDest.NoDescripcion = viaticoObtenido.ubigeoDestino.NoDescripcion;
                solicitudObtenida.ubigeoDestino = ubigeoDest;

                solicitudObtenida.Fe_Salida = viaticoObtenido.FechaSalida;
                solicitudObtenida.Fe_Retorno = viaticoObtenido.FechaRetorno;
                solicitudObtenida.Tx_Sustento = viaticoObtenido.SustentoViaje;
                solicitudObtenida.Ss_TotalSolicitado = viaticoObtenido.TotalSolicitado;

                LiquidacionesWS.Item[] item = new LiquidacionesWS.Item[viaticoObtenido.Detalles.Count];
                for (int i = 0; i < viaticoObtenido.Detalles.Count; i++)
                {
                    LiquidacionesWS.Item itemY = new LiquidacionesWS.Item();
                    itemY.Co_TipoViatico = viaticoObtenido.Detalles[i].PK.TipoViatico.Co_TipoViatico;
                    itemY.Ss_MontoUtilizado = viaticoObtenido.Detalles[i].Ss_MontoSolicitado;
                    item[i] = itemY;
                }

                proxy.CrearLiquidacion( DateTime.Today,
                                        solicitudObtenida.Co_Solicitud,
                                        solicitudObtenida.Ss_TotalSolicitado,
                                        solicitudObtenida.Ss_TotalSolicitado,
                                        Double.Parse(collection["Ss_OtrosGastos"]),
                                        item
                                        );

                return RedirectToAction("Index");
            }catch (Exception e){
                return View();
            }
        }