Microsoft Visual Studio 2010
Sql Server 2005
ContPaq i contabilidad 2012
Hola estoy realizando una sistema contable y me pidieron que las polizas que realice las puede enviar a contpaq.
Estuve buscando informacion y podia importarlas desde un archivo de excel (Af_NG.xls) que tiene unas macros, que viene al instalar contpaq, tambien venia un SDK (unas librerias) y un exe.
intente con las librerias y no pude anadirlas como referencia en c#, luego abri el archivo de excel para ver como la enviaba.
Vi que utilizaba VB en las macros y hacia como referencia a un exe.
intente abrir el archivo de excel en una forma. Si lo cargaba todo bien, pero no podia acceder a las macros.
Utilice el mismo ejecutable que usaba el xls como referencia en c# y ya pude utilizar los metodos y todo. pero me salio un error al asignar el codigo de cuenta (string).
"the server threw an exception (exception from hresult: 0x80010105 (RPC_E_SERVERFAULT))"
Código:
private void btnContpaq_Click(object sender, EventArgs e)
{
//this.WebBrowserExcel.OpenFile("C:\\Compac\\Empresas\\Reportes\\Contpaq\\Mis Reportes\\Af_NG.xls");
SDKCONTPAQNGLib.TSdkPoliza poliza = new SDKCONTPAQNGLib.TSdkPoliza();
SDKCONTPAQNGLib.TSdkTipoPoliza tpoliza = new SDKCONTPAQNGLib.TSdkTipoPoliza();
SDKCONTPAQNGLib.TSdkSesion sesion = new SDKCONTPAQNGLib.TSdkSesion();
SDKCONTPAQNGLib.TSdkMovimientoPoliza movimientosPoliza = new SDKCONTPAQNGLib.TSdkMovimientoPoliza();
SDKCONTPAQNGLib.TSdkCuenta cuenta = new SDKCONTPAQNGLib.TSdkCuenta();
SDKCONTPAQNGLib.TSdkEmpresa empresa = new SDKCONTPAQNGLib.TSdkEmpresa();
SDKCONTPAQNGLib.TSdkControlIVA iva = new SDKCONTPAQNGLib.TSdkControlIVA();
int idEmpresa;
if (sesion.conexionActiva == 0)
sesion.iniciaConexion();
if (sesion.conexionActiva == 1 && sesion.ingresoUsuario == 0)
sesion.firmaUsuario();
if (sesion.conexionActiva == 1 && sesion.ingresoUsuario == 1)
{
sesion.abreEmpresa("ctSAMEX_PRUEBA_SISTEMAS");
}
empresa.setSesion(sesion);
poliza.setSesion(sesion);
cuenta.setSesion(sesion);
tpoliza.setSesion(sesion);
idEmpresa = empresa.IdEmpresa;
try
{
poliza.iniciarInfo();
tpoliza.iniciarInfo();
if (tipoComboBox.Text == "Ingresos")
tpoliza.Tipo = SDKCONTPAQNGLib.ETIPOPOLIZA.TIPO_INGRESOS;
if (tipoComboBox.Text == "Egresos")
tpoliza.Tipo = SDKCONTPAQNGLib.ETIPOPOLIZA.TIPO_EGRESOS;
if (tipoComboBox.Text == "Diario")
tpoliza.Tipo = SDKCONTPAQNGLib.ETIPOPOLIZA.TIPO_DIARIO;
if (tipoComboBox.Text == "Orden")
tpoliza.Tipo = SDKCONTPAQNGLib.ETIPOPOLIZA.TIPO_ORDEN;
poliza.Fecha = Convert.ToDateTime("12/12/2011"); //fechaDateTimePicker.Value;
poliza.Tipo = tpoliza.Tipo;
poliza.Numero = 114122; //int.Parse(numeroTextBox.Text);
poliza.Clase = SDKCONTPAQNGLib.ECLASEPOLIZA.CLASE_AFECTAR;
poliza.Impresa = 0;
poliza.Concepto = conceptoTextBox.Text;
poliza.SistOrigen = SDKCONTPAQNGLib.ESISTORIGEN.ORIG_CONTPAQNG;
int contMov = 1;
foreach (DataGridViewRow row in polizaDetallesDataGridView.Rows)
{
if (row.Cells[3].Value != null)
{
movimientosPoliza.iniciarInfo();
movimientosPoliza.NumMovto = contMov;
//en la siguiente linea me marca el error
movimientosPoliza.CodigoCuenta = "111111111111";
if (decimal.Parse(row.Cells[6].Value.ToString())>0)
{
movimientosPoliza.TipoMovto = SDKCONTPAQNGLib.ETIPOIMPORTEMOVPOLIZA.MOVPOLIZA_CARGO;
movimientosPoliza.Importe = decimal.Parse(row.Cells[6].Value.ToString());
}
else
{
movimientosPoliza.TipoMovto = SDKCONTPAQNGLib.ETIPOIMPORTEMOVPOLIZA.MOVPOLIZA_ABONO;
movimientosPoliza.Importe = decimal.Parse(row.Cells[7].Value.ToString());
}
movimientosPoliza.Concepto = row.Cells[9].Value.ToString();
int movAgregado=poliza.agregaMovimiento(movimientosPoliza);
if (movAgregado == 0)
MessageBox.Show("No se pudo agregar Movimiento");
}
}
int grabada = poliza.crea();
if (grabada == 0)
MessageBox.Show("No se pudo grabar " + poliza.UltimoMsjError);
else
MessageBox.Show("Poliza Grabada con exito");
}
catch (Exception a)
{ MessageBox.Show(a.Message+" " +poliza.UltimoMsjError); }
finally
{
sesion.cierraEmpresa();
sesion.finalizaConexion();
}
}
Si alguien ha realizado algo similar, alguna interfaz con contpaq que me pueda ayudar. Mientras no sea generar archivos y luego subirlos desde contpaq.
O si alguien sabe como insertar registros directamente a la BD de contpaq tambien me serviria