private void frmCliente_Load(object sender, EventArgs e)
        {
            //OBTIENE EL LISTADO DE CLIENTES REGISTRADOS
            //A TRAVES DEL SERVICIO SOAP CLIENTES - ListarClientes()
            ClientesServiceReference.ClientesClient client = new ClientesServiceReference.ClientesClient();
            dataGridView1.DataSource = client.ListarClientes();

            dataGridView1.Columns["RUC"].DisplayIndex = 1;
            dataGridView1.Columns["RUC"].HeaderText = "Número RUC";
            dataGridView1.Columns["RUC"].Width = 100;
            dataGridView1.Columns["RUC"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

            dataGridView1.Columns["RazonSocial"].DisplayIndex = 0;
            dataGridView1.Columns["RazonSocial"].HeaderText = "Razón Social";
            dataGridView1.Columns["RazonSocial"].Width = 200;

            dataGridView1.Columns["Correo"].DisplayIndex = 2;
            dataGridView1.Columns["Correo"].HeaderText = "Correo Electrónico";
            dataGridView1.Columns["Correo"].Width = 200;

            dataGridView1.Columns[0].Visible = false;
            dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[1];
        }
        private void Guardar_Click(object sender, EventArgs e)
        {
            if (txtCodigoCliente.Text == "")
            {
                MessageBox.Show("Debe seleccionar el Cliente", "Sistema de Pedidos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                if (dataGridView1.Rows.Count == 1)
                {
                    MessageBox.Show("Debe agregar Productos al Pedido", "Sistema de Pedidos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    try
                    {
                        //Verificamos datos del cliente
                        int CodCliente = Convert.ToInt32(txtCodigoCliente.Text);
                        ClientesServiceReference.ClientesClient proxyCliente = new ClientesServiceReference.ClientesClient();
                        Cliente resultadoCliente = proxyCliente.ObtenerCliente(CodCliente);

                        VerificarRUCServiceReference.VerificaDocumentoClient proxyRUC = new VerificarRUCServiceReference.VerificaDocumentoClient();
                        bool validaRUC = proxyRUC.VerificaRUC(resultadoCliente.RUC);

                        if (!validaRUC)
                        {
                            throw new System.ArgumentException("Cliente : " + Convert.ToString(resultadoCliente.RazonSocial) +"\r" + "\n" +
                            "No tiene número de RUC válido" +"\r" + "\n" +
                            "Por favor verificar en Sunat");
                        }

                        //Verificamos existencia de Stocks
                        foreach (DataGridViewRow row in dataGridView1.Rows)
                        {
                            int NUMEROITEM = Convert.ToInt32(row.Cells["colItem"].Value);

                            if (NUMEROITEM == 0)
                            {
                                break;
                            }

                            int CodigoItemPedido = Convert.ToInt32(row.Cells["colCodigo"].Value);
                            int CantidadItemPedido = Convert.ToInt32(row.Cells["colCantidad"].Value);

                            StocksServiceReference.StocksClient proxyStock = new StocksServiceReference.StocksClient();
                            Stock resultadoStock = proxyStock.ObtenerStock(CodigoItemPedido);

                            if (CantidadItemPedido > resultadoStock.StockActual)
                            {
                                throw new System.ArgumentException("Producto : " + row.Cells["colDescripcion"].Value + "\r" +"\n"+
                                    "No hay Stock suficiente para completar el pedido"  + "\r" +"\n"+
                                    "Stock Actual : " + Convert.ToString(resultadoStock.StockActual) + " Unidades");
                            }
                        }
                        //variables para completar cabecera
                        int CODCOMPANIA = 1;
                        int CODSUCURSALCIA = 1;
                        int ANO = 2015;
                        DateTime FECPEDIDO = Convert.ToDateTime(this.dateTimePicker1.Value);
                        int CODCLIENTE = Convert.ToInt32(txtCodigoCliente.Text);
                        int CODSUCURSAL = 1;
                        string CODUSUARIOVENDEDOR = "VENDEDOR";
                        int CODDOCUMENTOFACTURACION = 1;
                        string NUMEROORDENCOMPRA = "A001";
                        int CODMONEDA = 1;
                        double IMPORTETOTALBRUTO = Convert.ToDouble(txtSubTotal.Text);
                        double IMPORTETOTALDESCUENTO = 0.00;
                        double PORCENTAJEIGV = 18.00;
                        double IMPORTETOTALIGV = Convert.ToDouble(txtIGV.Text);
                        double IMPORTETOTALNETO = Convert.ToDouble(txtTotal.Text);
                        int CODESTADOATENCION = 1;
                        int CODALMACEN = 1;
                        int CODESTADOREGISTRO = 1;
                        string CODUSUARIOCREADOR = "CREADOR";
                        DateTime FECCREACION = Convert.ToDateTime(this.dateTimePicker1.Value);
                        string CODUSUARIOUPDATE = "ACTUALIZADOR";
                        DateTime FECUPDATE = Convert.ToDateTime(this.dateTimePicker1.Value);

                        PedidosWS.PedidosClient proxyPedido = new PedidosWS.PedidosClient();
                        Pedido resultadoPedido = proxyPedido.CrearPedido(CODCOMPANIA, CODSUCURSALCIA, ANO, FECPEDIDO, CODCLIENTE, CODSUCURSAL, CODUSUARIOVENDEDOR, CODDOCUMENTOFACTURACION,
                            NUMEROORDENCOMPRA, CODMONEDA, IMPORTETOTALBRUTO, IMPORTETOTALDESCUENTO, PORCENTAJEIGV, IMPORTETOTALIGV, IMPORTETOTALNETO, CODESTADOATENCION, CODALMACEN,
                            CODESTADOREGISTRO, CODUSUARIOCREADOR, FECCREACION, CODUSUARIOUPDATE, FECUPDATE);

                        int NUMEROPEDIDO = resultadoPedido.NumeroPedido;

                        //variables para completar detalle
                        foreach (DataGridViewRow row in dataGridView1.Rows)
                        {
                            int NUMEROITEM = Convert.ToInt32(row.Cells["colItem"].Value);

                            if (NUMEROITEM == 0)
                            {
                                break;
                            }

                            int CODITEMARTICULO = Convert.ToInt32(row.Cells["colCodigo"].Value);
                            int UNIDADESPEDIDAS = Convert.ToInt32(row.Cells["colCantidad"].Value);
                            int UNIDADESCOMPROMETIDAS = Convert.ToInt32(row.Cells["colCantidad"].Value);
                            double IMPORTEPRECIOUNITARIOSIGV = Convert.ToDouble(row.Cells["colPrecio"].Value);
                            double IMPORTEPRECIOUNITARIOCIGV = Convert.ToDouble(row.Cells["colPrecio"].Value) * 1.18;
                            double IMPORTESUBTOTALBRUTO = Convert.ToDouble(row.Cells["colTotal"].Value);
                            double PORCENTAJEDESCUENTO = 0.00;
                            double IMPORTESUBTOTALDESCUENTO = 0.00;
                            double IMPORTESUBTOTALNETO = Convert.ToDouble(row.Cells["colTotal"].Value);

                            PedidoDetallesWS.PedidoDetallesClient proxyDetalle = new PedidoDetallesWS.PedidoDetallesClient();
                            PedidoDetalle resultadoDetalle = proxyDetalle.CrearPedidoDetalle(CODCOMPANIA, CODSUCURSALCIA, ANO, NUMEROPEDIDO, NUMEROITEM, CODITEMARTICULO, UNIDADESPEDIDAS,
                                UNIDADESCOMPROMETIDAS, IMPORTEPRECIOUNITARIOSIGV, IMPORTEPRECIOUNITARIOCIGV, IMPORTESUBTOTALBRUTO, PORCENTAJEDESCUENTO, IMPORTESUBTOTALDESCUENTO,
                                IMPORTESUBTOTALNETO, CODESTADOATENCION, CODESTADOREGISTRO, CODUSUARIOCREADOR, FECCREACION, CODUSUARIOUPDATE, FECUPDATE);

                            //Actualizamos existencia de Stocks
                            StocksServiceReference.StocksClient proxyStock = new StocksServiceReference.StocksClient();
                            Stock resultadoS = proxyStock.ObtenerStock(CODITEMARTICULO);
                            Stock actualizaS = proxyStock.ModificarStock(CODITEMARTICULO, resultadoS.StockActual - UNIDADESPEDIDAS);
                        }
                        MessageBox.Show("Pedido Registrado OK!", "Sistema de Pedidos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();

                        frmListado oFrmListado = new frmListado();
                        oFrmListado.Show();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Sistema de Pedidos", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
            }
        }