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:
Si alguien ha realizado algo similar, alguna interfaz con contpaq que me pueda ayudar. Mientras no sea generar archivos y luego subirlos desde contpaq.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(); } }
O si alguien sabe como insertar registros directamente a la BD de contpaq tambien me serviria