using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ApiBas = ApisMicrosip.ApiMspBasicaExt;
using ApiVtas = ApisMicrosip.ApiMspVentasExt;
namespace PodcastApiMicrosip
{
public partial class Menu : Form
{
int bd = ApiBas.NewDB();
int cliente_id = 0;
public Menu()
{
InitializeComponent();
LlenaTabla();
}
private void LlenaTabla()
{
tblDetalle.Rows.Add("BOL-0013", "Bola de Boliche No. 13", 10, 750.00,
5);
tblDetalle.Rows.Add("BOL-0014", "Bola de Boliche No. 14", 20, 850.00,
10);
tblDetalle.Rows.Add("BOL-0015", "Bola de Boliche No. 15", 30, 950.00,
5);
}
private int ConectaBd()
{
ApiBas.SetErrorHandling(0, 0);
int trn = ApiBas.NewTrn(bd, 3);
string path = txtFdb.Text;
int conecta = ApiBas.DBConnect(bd, path, txtUsuario.Text,
txtPassword.Text);
StringBuilder obtieneError = new StringBuilder(1000);
int codigoError = ApiBas.GetLastErrorMessage(obtieneError);
String mensajeError = codigoError.ToString();
if (codigoError > 0)
{
MessageBox.Show(obtieneError.ToString());
return 0;
}
else
{
btnFacturar.Enabled = true;
return 1;
}
}
private void btnConecta_Click(object sender, EventArgs e)
{
ConectaBd();
}
private void btnSalir_Click(object sender, EventArgs e)
{
Salir();
}
private void Salir()
{
ApiBas.DBDisconnect(bd);
Application.Exit();
}
private void btnFacturar_Click(object sender, EventArgs e)
{
CreaFactura();
}
private void CreaFactura()
{
int art_id = 0;
double cantidad = 0;
double precio = 0;
double descuento = 0;
ConsultaCliente();
string fecha = dtFechaFactura.Value.ToString("dd/MM/yyyy");
ApiVtas.SetDBVentas(bd);
ApiVtas.SetReglasVentas(1, 1);
double descuentoGeneral = Convert.ToDouble(txtDescuento.Text);
int factura = ApiVtas.NuevaFactura(fecha, "AA", cliente_id, 0, 0, "P",
descuentoGeneral, "", "Factura generada por medio de API Microsip", 0, 0, 0, 0, 0,
0, 0, 0, "");
//MessageBox.Show("Factura: " + factura);
int renglones = tblDetalle.RowCount - 1;
for (int i = 0; i < renglones; i++)
{
art_id =
ConsultaArticulo(tblDetalle.Rows[i].Cells[1].Value.ToString());
cantidad = Convert.ToDouble(tblDetalle.Rows[i].Cells[2].Value);
precio = Convert.ToDouble(tblDetalle.Rows[i].Cells[3].Value);
descuento = Convert.ToDouble(tblDetalle.Rows[i].Cells[4].Value);
int renglon = ApiVtas.RenglonFactura(art_id, cantidad, precio,
descuento, "");
//MessageBox.Show("Renglón: " + renglon);
}
int aplica = ApiVtas.AplicaFactura();
// MessageBox.Show("Aplica: " + aplica);
MessageBox.Show("Factura generada correctamente");
}
private int ConsultaArticulo(string articulo)
{
int articulo_id = 0;
int trn = ApiBas.NewTrn(bd, 3);
int sql = ApiBas.NewSql(trn);
ApiBas.TrnStart(trn);
string cadenaConsulta = "select articulo_id from articulos where nombre
= :nombre";
int consulta = ApiBas.SqlQry(sql, cadenaConsulta);
int parametro = ApiBas.SqlSetParamAsString(sql, "nombre", articulo);
int ejecutaConsulta = ApiBas.SqlExecQuery(sql);
StringBuilder obtieneError = new StringBuilder(1000);
int codigoError = ApiBas.GetLastErrorMessage(obtieneError);
String mensajeError = codigoError.ToString();
if (codigoError > 0)
{
MessageBox.Show(obtieneError.ToString());
}
ApiBas.SqlGetFieldAsInteger(sql, "articulo_id", ref articulo_id);
ApiBas.SqlClose(sql);
return articulo_id;
}
private void ConsultaCliente()
{
int trn = ApiBas.NewTrn(bd, 3);
int sql = ApiBas.NewSql(trn);
ApiBas.TrnStart(trn);
string cadenaConsulta = "select cliente_id from clientes where nombre
= :nombre";
int consulta = ApiBas.SqlQry(sql, cadenaConsulta);
int parametro = ApiBas.SqlSetParamAsString(sql, "nombre",
txtCliente.Text);
int ejecutaConsulta = ApiBas.SqlExecQuery(sql);
StringBuilder obtieneError = new StringBuilder(1000);
int codigoError = ApiBas.GetLastErrorMessage(obtieneError);
String mensajeError = codigoError.ToString();
if (codigoError > 0)
{
MessageBox.Show(obtieneError.ToString());
}
ApiBas.SqlGetFieldAsInteger(sql, "cliente_id", ref cliente_id);
ApiBas.SqlClose(sql);
}
private void dtFechaFactura_ValueChanged(object sender, EventArgs e)
{
private void button1_Click(object sender, EventArgs e)
{
BuscaFdb();
}
private void BuscaFdb()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Text Files (.fdb)|*.fdb";
if (ofd.ShowDialog() == DialogResult.OK)
{
System.IO.FileInfo fi = new System.IO.FileInfo(ofd.FileName);
txtFdb.Text = ofd.FileName;
btnProbarConexion.Enabled = true;
}
}
private void btnProbarConexion_Click(object sender, EventArgs e)
{
probarConexion();
}
private void probarConexion()
{
int conecta = ConectaBd();
if (conecta == 1)
{
MessageBox.Show("Conexión exitosa");
ApiBas.DBDisconnect(bd);
}
}
}
}