示例#1
0
        private void btn_nuevo_Click(object sender, EventArgs e)
        {
            //Validar que no haya campos vacios
            if (this.txtPuntoVenta.Text == "")
            {
                MessageBox.Show("El campo PUNTO DE VENTA no puede estar vacío");
                this.txtPuntoVenta.Focus();
            }

            else if (this.txtNumero.Text == "")
            {
                MessageBox.Show("El campo NUMERO no puede estar vacío");
                this.txtNumero.Focus();
            }
            else if (this.txtFecha.Text == "")
            {
                MessageBox.Show("El campo FECHA no puede estar vacío");
                this.txtFecha.Focus();
            }
            else
            {
                _BD.iniciar_transaccion();

                DataTable existe = _BD.consulta("SELECT ISNULL( (SELECT 1 from facturas where ptoVenta = " + this.txtPuntoVenta.Text + " and nroFactura = " + this.txtNumero.Text + " and tipoComprobante = 'V'),0) as existe ");
                if (existe.Rows[0]["existe"].ToString() == "1")
                {
                    MessageBox.Show("Ya existe una factura para ese punto de venta y ese numero");
                }
                else
                {
                    DataTable consultaId = _BD.consulta("SELECT ISNULL(max(idFactura),0)+1 as idFactura from facturas");
                    int       id         = int.Parse(consultaId.Rows[0]["idFactura"].ToString());


                    string sql = @"INSERT INTO FACTURAS (idFactura, 
                                                         tipoComprobante,
                                                         ptoVenta,
                                                         nroFactura,
                                                         fecha,
                                                         idCliente,
                                                         idVendedor,
                                                         total,
                                                         descripcion,
                                                         idEstado) 
                                   VALUES (" + id + ", "
                                 + " 'V' , "
                                 + this.txtPuntoVenta.Text + ", "
                                 + this.txtNumero.Text + ", "
                                 + "convert(datetime, '" + this.txtFecha.Text + "', 103)" + ", "
                                 + int.Parse(this.cmbCliente.SelectedValue.ToString()) + ", "
                                 + int.Parse(this.cmbVendedor.SelectedValue.ToString()) + ", "
                                 + int.Parse(this.txtTotal.Text) + ", '"
                                 + this.txtDescripcion.Text + "', "
                                 + "1 "
                                 + ")";
                    _BD.insert_update_delete(sql);

                    if (dataGridView1.Rows.Count == 0)
                    {
                        MessageBox.Show("No puede insertar una factura sin detalle");
                        _BD.cerrar_transaccion();
                    }
                    else
                    {
                        for (int i = 0; i < dataGridView1.Rows.Count; i++)
                        {
                            string sqlDetalle = @"INSERT INTO FACTURASDET (orden,
                                                                           idFactura,
                                                                           idProducto,
                                                                           cantidad,
                                                                           precioUnitario) 
                                                VALUES (" + dataGridView1.Rows[i].Cells["orden"].Value + ", "
                                                + id + ", "
                                                + dataGridView1.Rows[i].Cells["idProducto"].Value + ", "
                                                + dataGridView1.Rows[i].Cells["cantidad"].Value + ", "
                                                + dataGridView1.Rows[i].Cells["precio"].Value
                                                + ")";
                            _BD.insert_update_delete(sqlDetalle);

                            //Actualizo Stock
                            string sqlStock = @"UPDATE STOCK
                                                SET cantidad = cantidad - " + dataGridView1.Rows[i].Cells["cantidad"].Value +
                                              " WHERE idProducto = " + dataGridView1.Rows[i].Cells["idProducto"].Value;
                            _BD.insert_update_delete(sqlStock);
                        }
                        _BD.cerrar_transaccion();
                        blanquear_objetos();
                    }
                }
            }
        }