private void startQuickbooks() { if (!quickbooksReady) { Cursor.Current = Cursors.WaitCursor; quickbooksQueries = new QuickbooksQueries(); try { string qbFilename = ""; if (!String.IsNullOrWhiteSpace(Properties.Settings.Default["QBLastFilePath"].ToString())) { qbFilename = Properties.Settings.Default["QBLastFilePath"].ToString(); } if (quickbooksQueries.OpenConnection("QBGC Contabilidad Electronica", qbFilename)) { quickbooksReady = true; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); reportsResult.Hide(); } Cursor.Current = Cursors.Default; } }
public string insertData(ref QuickbooksQueries quickbooksQueries, string listId, string value) { string msg = ""; XmlDocument inputItemXMLDoc; XmlElement qbXMLMsgsRq; QuickbooksUtils.BuildXMLQueryBase(out inputItemXMLDoc, out qbXMLMsgsRq); // Mark as query type XmlElement ItemsAddRq = inputItemXMLDoc.CreateElement("DataExtAddRq"); qbXMLMsgsRq.AppendChild(ItemsAddRq); XmlElement itemXML = inputItemXMLDoc.CreateElement("DataExtAdd"); ItemsAddRq.AppendChild(itemXML); XmlElement itemOwnerXML = inputItemXMLDoc.CreateElement("OwnerID"); itemOwnerXML.InnerText = "0"; itemXML.AppendChild(itemOwnerXML); XmlElement itemNameXML = inputItemXMLDoc.CreateElement("DataExtName"); itemNameXML.InnerText = "CLAVEPROD"; itemXML.AppendChild(itemNameXML); XmlElement itemtypeXML = inputItemXMLDoc.CreateElement("ListDataExtType"); itemtypeXML.InnerText = "Item"; itemXML.AppendChild(itemtypeXML); XmlElement itemobjXML = inputItemXMLDoc.CreateElement("ListObjRef"); itemXML.AppendChild(itemobjXML); XmlElement itemListIdXML = inputItemXMLDoc.CreateElement("ListID"); itemListIdXML.InnerText = listId; itemobjXML.AppendChild(itemListIdXML); XmlElement itemValueXML = inputItemXMLDoc.CreateElement("DataExtValue"); itemValueXML.InnerText = value; itemXML.AppendChild(itemValueXML); string qbResponse; if (quickbooksQueries.QueryQB(inputItemXMLDoc.OuterXml, out qbResponse)) { QuicbooksResponse qbResultQuery = new QuicbooksResponse(qbResponse, "DataExtAddRs"); if (qbResultQuery.GetNumberOfResulst() > 0) { if (qbResultQuery.success) { msg = null; } else { msg = "No se pudo agregar el item "; } } else { msg = "Quickbooks regresó una respuesta vacía al agregar item "; } } else { msg = "Se produjo un error al agregar insertar item "; } return(msg); }
public XmlElement CreateBillLine(ref XmlDocument inputXMLDoc, BillLineItemType billLineItemType, double amount, ref QuickbooksQueries quickbooksQueries, string claveprodserv, string descripcion, double quantity) { XmlElement expenseLine = inputXMLDoc.CreateElement("ItemLineAdd"); /* * // Agregar cuenta si el vendor tiene * if (billLineItemType == BillLineItemType.Concepto) * { * XmlElement accountRef = inputXMLDoc.CreateElement("AccountRef"); * XmlElement accountList = inputXMLDoc.CreateElement("ListID"); * if (!String.IsNullOrEmpty(vendor.accountListId)) * { * accountList.InnerText = vendor.accountListId; * } * else * { * accountList.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; * } * accountRef.AppendChild(accountList); * expenseLine.AppendChild(accountRef); * } * else if (billLineItemType != BillLineItemType.Concepto) * { * XmlElement accountRef = inputXMLDoc.CreateElement("AccountRef"); * XmlElement accountList = inputXMLDoc.CreateElement("ListID"); * accountList.InnerText = specialAccounts[billLineItemType]; * accountRef.AppendChild(accountList); * expenseLine.AppendChild(accountRef); * } */ Item bLineItem = quickbooksQueries.Items[claveprodserv]; string itemlistId = bLineItem.listId; System.Diagnostics.Trace.WriteLine(itemlistId); XmlElement itemNode = inputXMLDoc.CreateElement("ItemRef"); //itemNode.InnerText = Convert.ToDecimal(amount).ToString("F"); expenseLine.AppendChild(itemNode); XmlElement itemListIdNode = inputXMLDoc.CreateElement("ListID"); itemListIdNode.InnerText = itemlistId;// GET ITEM ID itemNode.AppendChild(itemListIdNode); // Otros datos del billLineItem XmlElement memoItem = inputXMLDoc.CreateElement("Desc"); memoItem.InnerText = descripcion.Substring(0, Math.Min(4000, descripcion.Length)); expenseLine.AppendChild(memoItem); // Otros datos del billLineItem XmlElement quantItem = inputXMLDoc.CreateElement("Quantity"); quantItem.InnerText = quantity.ToString(); expenseLine.AppendChild(quantItem); XmlElement amountNode = inputXMLDoc.CreateElement("Amount"); amountNode.InnerText = Convert.ToDecimal(amount).ToString("F"); expenseLine.AppendChild(amountNode); return(expenseLine); }
public string InsertBill(ref QuickbooksQueries quickbooksQueries, Bill bill) { XmlDocument inputXMLDoc; XmlElement qbXMLMsgsRq; QuickbooksUtils.BuildXMLQueryBase(out inputXMLDoc, out qbXMLMsgsRq); // Mark as query type XmlElement InvoicesAddRq = inputXMLDoc.CreateElement("BillAddRq"); qbXMLMsgsRq.AppendChild(InvoicesAddRq); XmlElement invoiceXML = inputXMLDoc.CreateElement("BillAdd"); InvoicesAddRq.AppendChild(invoiceXML); XmlElement vendorRef = inputXMLDoc.CreateElement("VendorRef"); XmlElement vendorListID = inputXMLDoc.CreateElement("ListID"); vendorListID.InnerText = vendor.listId; vendorRef.AppendChild(vendorListID); invoiceXML.AppendChild(vendorRef); XmlElement txnDate = inputXMLDoc.CreateElement("TxnDate"); string billDate = bill.fecha.ToString("yyyy-MM-dd"); txnDate.InnerText = billDate; invoiceXML.AppendChild(txnDate); bool billExists = quickbooksQueries.QueryExistingBill(billDate, bill.uuid); if (billExists) { return("La factura ya existe"); } else { XmlElement refNumber = inputXMLDoc.CreateElement("RefNumber"); string folioAndSeries = bill.serie.Trim() + bill.folio.Trim(); refNumber.InnerText = folioAndSeries.Substring(0, Math.Min(19, folioAndSeries.Length)); invoiceXML.AppendChild(refNumber); XmlElement memo = inputXMLDoc.CreateElement("Memo"); memo.InnerText = bill.uuid; invoiceXML.AppendChild(memo); if (bill.moneda != "mxn") { XmlElement exchangeRate = inputXMLDoc.CreateElement("ExchangeRate"); exchangeRate.InnerText = bill.tipoCambio.ToString(); invoiceXML.AppendChild(exchangeRate); } foreach (BillLineItem billLineItem in bill.conceptos) { invoiceXML.AppendChild(CreateBillLine(ref inputXMLDoc, BillLineItemType.Concepto, billLineItem.importe, ref quickbooksQueries, billLineItem.claveprodserv, billLineItem.descripcion, billLineItem.cantidad)); } // Agregar cada tipo de impuesto /* * string claveprodserv = "0"; * if (bill.descuento != 0) * { * invoiceXML.AppendChild(CreateBillLine(ref inputXMLDoc, BillLineItemType.Descuentos, -bill.descuento, ref quickbooksQueries, claveprodserv, "Descuento")); * } */ string claveprodserv; if (bill.retencionesIVA != 0) { claveprodserv = "IMPUESTOS002BR"; invoiceXML.AppendChild(CreateBillLine(ref inputXMLDoc, BillLineItemType.RetencionesIVA, -bill.retencionesIVA, ref quickbooksQueries, claveprodserv, "Retenciones IVA", 1)); } if (bill.retencionesISR != 0) { claveprodserv = "IMPUESTOS001BR"; invoiceXML.AppendChild(CreateBillLine(ref inputXMLDoc, BillLineItemType.RetencionesISR, -bill.retencionesISR, ref quickbooksQueries, claveprodserv, "Retenciones ISR", 1)); } if (bill.trasladosIVA != 0) { claveprodserv = "IMPUESTOS002IT"; invoiceXML.AppendChild(CreateBillLine(ref inputXMLDoc, BillLineItemType.TrasladosIVA, bill.trasladosIVA, ref quickbooksQueries, claveprodserv, "Traslados IVA", 1)); } if (bill.trasladosIEPS != 0) { claveprodserv = "IMPUESTOS003BT"; invoiceXML.AppendChild(CreateBillLine(ref inputXMLDoc, BillLineItemType.TrasladosIEPS, bill.trasladosIEPS, ref quickbooksQueries, claveprodserv, "Traslados IEPS", 1)); } string updateResponse; if (quickbooksQueries.QueryQB(inputXMLDoc.OuterXml, out updateResponse)) { QuicbooksResponse qbResultUpdateInvoice = new QuicbooksResponse(updateResponse, "BillAddRs"); if (qbResultUpdateInvoice.GetNumberOfResulst() > 0) { if (qbResultUpdateInvoice.success) { return(null); } else { return("No se puedo agregar bill " + bill.uuid + " proveedor " + vendor.nombre); } } else { return("Quickbooks regresó una respuesta vacía al agregar bill " + bill.uuid + " proveedor " + vendor.nombre); } } else { return("Se produjo un error al agregar insertar bill " + bill.uuid + " proveedor " + vendor.nombre + ": " + quickbooksQueries.lastError); } } }
public string InsertItem(ref QuickbooksQueries quickbooksQueries, ref BillLineItem item, int recursive_int = 1) { //specialAccounts = specialAccounts = new Dictionary <BillLineItemType, string>(); foreach (KeyValuePair <string, Account> account in quickbooksQueries.Accounts) { switch (account.Value.satAccount.NumCta) { case "50301": specialAccounts[BillLineItemType.Descuentos] = account.Value.listId; break; case "21610": specialAccounts[BillLineItemType.RetencionesIVA] = account.Value.listId; break; case "216": specialAccounts[BillLineItemType.RetencionesISR] = account.Value.listId; break; case "11901": specialAccounts[BillLineItemType.TrasladosIVA] = account.Value.listId; break; case "11903": specialAccounts[BillLineItemType.TrasladosIEPS] = account.Value.listId; break; case "40101": specialAccounts[BillLineItemType.TaxedAccount] = account.Value.listId; break; case "40104": specialAccounts[BillLineItemType.NonTaxedAccount] = account.Value.listId; break; case "11501": specialAccounts[BillLineItemType.Inventario] = account.Value.listId; break; case "CLASIFICACION PENDIENTE": specialAccounts[BillLineItemType.ClasificacionPendiente] = account.Value.listId; break; } } //Creates item XmlDocument inputItemXMLDoc; XmlElement qbXMLMsgsRq; QuickbooksUtils.BuildXMLQueryBase(out inputItemXMLDoc, out qbXMLMsgsRq); // Mark as query type XmlElement ItemsAddRq = inputItemXMLDoc.CreateElement("ItemNonInventoryAddRq"); qbXMLMsgsRq.AppendChild(ItemsAddRq); XmlElement itemXML = inputItemXMLDoc.CreateElement("ItemNonInventoryAdd"); ItemsAddRq.AppendChild(itemXML); XmlElement itemNameXML = inputItemXMLDoc.CreateElement("Name"); itemNameXML.InnerText = item.descripcion.Substring(0, Math.Min(28, item.descripcion.Length)); itemXML.AppendChild(itemNameXML); XmlElement itemProductKeyXML = inputItemXMLDoc.CreateElement("ManufacturerPartNumber"); itemProductKeyXML.InnerText = item.claveprodserv; itemXML.AppendChild(itemProductKeyXML); if (quickbooksQueries.Uoms.ContainsKey(item.claveunidad)) { XmlElement uomXML = inputItemXMLDoc.CreateElement("UnitOfMeasureSetRef"); itemXML.AppendChild(uomXML); XmlElement uomNameXML = inputItemXMLDoc.CreateElement("ListID"); uomNameXML.InnerText = quickbooksQueries.Uoms[item.claveunidad].listId; uomXML.AppendChild(uomNameXML); } //Fields For non item inventory TESTING WORKING /* * XmlElement salesOrPurchaseXML = inputItemXMLDoc.CreateElement("SalesOrPurchase"); * itemXML.AppendChild(salesOrPurchaseXML); * * * XmlElement salesDescXML = inputItemXMLDoc.CreateElement("Desc"); * salesDescXML.InnerText = item.descripcion; * salesOrPurchaseXML.AppendChild(salesDescXML); * * * XmlElement salesPriceXML = inputItemXMLDoc.CreateElement("Price"); * salesPriceXML.InnerText = item.importe.ToString(); * salesOrPurchaseXML.AppendChild(salesPriceXML); * * XmlElement incomeAccountXML = inputItemXMLDoc.CreateElement("AccountRef"); * salesOrPurchaseXML.AppendChild(incomeAccountXML); * * XmlElement incomeAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); * incomeAccountListIdXML.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; * incomeAccountXML.AppendChild(incomeAccountListIdXML); * */ XmlElement salesTaxCodeXML = inputItemXMLDoc.CreateElement("SalesTaxCodeRef"); itemXML.AppendChild(salesTaxCodeXML); XmlElement salesTaxIdXML = inputItemXMLDoc.CreateElement("ListID"); if (item.createsTax) { salesTaxIdXML.InnerText = quickbooksQueries.Taxes["Tax"].listId; } else { salesTaxIdXML.InnerText = quickbooksQueries.Taxes["Non"].listId; } salesTaxCodeXML.AppendChild(salesTaxIdXML); //Fields For non item inventory TESTING XmlElement salesAndPurchaseXML = inputItemXMLDoc.CreateElement("SalesAndPurchase"); itemXML.AppendChild(salesAndPurchaseXML); XmlElement salesDescXML = inputItemXMLDoc.CreateElement("SalesDesc"); salesDescXML.InnerText = item.descripcion; salesAndPurchaseXML.AppendChild(salesDescXML); XmlElement salesPriceXML = inputItemXMLDoc.CreateElement("SalesPrice"); salesPriceXML.InnerText = "0";//item.importe.ToString(); salesAndPurchaseXML.AppendChild(salesPriceXML); XmlElement incomeAccountXML = inputItemXMLDoc.CreateElement("IncomeAccountRef"); salesAndPurchaseXML.AppendChild(incomeAccountXML); XmlElement incomeAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); if (item.createsTax) { incomeAccountListIdXML.InnerText = specialAccounts[BillLineItemType.TaxedAccount]; } else { incomeAccountListIdXML.InnerText = specialAccounts[BillLineItemType.NonTaxedAccount]; } incomeAccountXML.AppendChild(incomeAccountListIdXML); XmlElement purchaseDescXML = inputItemXMLDoc.CreateElement("PurchaseDesc"); purchaseDescXML.InnerText = item.descripcion; salesAndPurchaseXML.AppendChild(purchaseDescXML); XmlElement purchaseCostXML = inputItemXMLDoc.CreateElement("PurchaseCost"); purchaseCostXML.InnerText = "0"; //item.importe.ToString(); salesAndPurchaseXML.AppendChild(purchaseCostXML); XmlElement expenseAccountXML = inputItemXMLDoc.CreateElement("ExpenseAccountRef"); salesAndPurchaseXML.AppendChild(expenseAccountXML); XmlElement expenseAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); if (item.is_invoice) { expenseAccountListIdXML.InnerText = specialAccounts[BillLineItemType.Inventario]; } else { expenseAccountListIdXML.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; } expenseAccountXML.AppendChild(expenseAccountListIdXML); //XmlElement prodKey = inputItemXMLDoc.CreateElement("IncludeRetElement"); //prodKey.InnerText = "CLAVEPROD"; //itemXML.AppendChild(prodKey); /* * XmlElement vendorAccountXML = inputItemXMLDoc.CreateElement("PrefVendorRef"); * salesAndPurchaseXML.AppendChild(vendorAccountXML); * * XmlElement vendorAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); * vendorAccountListIdXML.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; * vendorAccountXML.AppendChild(vendorAccountListIdXML); */ //string updateResponse; //Fields for item inventory /* * * XmlElement incomeAccountXML = inputItemXMLDoc.CreateElement("IncomeAccountRef"); * itemXML.AppendChild(incomeAccountXML); * * XmlElement incomeAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); * incomeAccountListIdXML.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; * incomeAccountXML.AppendChild(incomeAccountListIdXML); * * XmlElement cogsAccountXML = inputItemXMLDoc.CreateElement("COGSAccountRef"); * itemXML.AppendChild(cogsAccountXML); * * XmlElement cogsAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); * cogsAccountListIdXML.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; * cogsAccountXML.AppendChild(cogsAccountListIdXML); * * * * * XmlElement assetAccountXML = inputItemXMLDoc.CreateElement("AssetAccountRef"); * itemXML.AppendChild(assetAccountXML); * * XmlElement assetAccountListIdXML = inputItemXMLDoc.CreateElement("ListID"); * assetAccountListIdXML.InnerText = specialAccounts[BillLineItemType.ClasificacionPendiente]; * assetAccountXML.AppendChild(assetAccountListIdXML); */ string msg = "some_msg"; string qbResponse; ItemAdder itemAdder = new ItemAdder(); if (quickbooksQueries.QueryQB(inputItemXMLDoc.OuterXml, out qbResponse)) { QuicbooksResponse qbResultQuery = new QuicbooksResponse(qbResponse, "ItemNonInventoryAddRs"); if (qbResultQuery.GetNumberOfResulst() > 0) { if (qbResultQuery.success) { //qbXMLMsgsRsNodeList //itemlistId = ""; msg = "Item created"; XmlNodeList responseNodeList = qbResultQuery.GetXmlNodeList().Item(0).ChildNodes; foreach (XmlNode responseNode in responseNodeList) { Item new_item = new Item(); if (responseNode["ListID"] != null) { new_item.listId = responseNode["ListID"].InnerText; } if (responseNode["Name"] != null) { new_item.name = responseNode["Name"].InnerText; } if (responseNode["FullName"] != null) { new_item.fullName = responseNode["FullName"].InnerText; } if (responseNode["ManufacturerPartNumber"] != null) { new_item.productKey = responseNode["ManufacturerPartNumber"].InnerText; } if (responseNode["UnitOfMeasureSetRef"] != null) { foreach (XmlNode DataRowNode in responseNode["UnitOfMeasureSetRef"]) { if (DataRowNode["ListID"] != null) { new_item.uomListId = DataRowNode["ListID"].InnerText; } if (DataRowNode["FullName"] != null) { new_item.uomFullName = DataRowNode["FullName"].InnerText; } } } if (!String.IsNullOrEmpty(new_item.listId)) { //itemlistId = new_item.listId; //Items[new_item.productKey] = new_item; quickbooksQueries.Items[new_item.productKey] = new_item; return(null); } else { return("Item no tiene List id " + new_item.name); } } } else { if (recursive_int < 7) { ++recursive_int; item.descripcion = item.descripcion.Substring(0, Math.Min(26, item.descripcion.Length)) + "-" + recursive_int.ToString(); //item.descripcion = item.descripcion + " - " + recursive_int.ToString(); string itemAdderResult = itemAdder.InsertItem(ref quickbooksQueries, ref item, recursive_int); return(itemAdderResult); } else { return("No se puede agregar item " + item.descripcion); } } } else { // It could be a same item name..// QB doesnt allow 2 items with same name msg = "Quickbooks regresó una respuesta vacía al agregar item "; } } else { msg = "Se produjo un error al agregar insertar item "; } string some_string = msg;// To debug return(some_string); }
public string InsertVendor(ref QuickbooksQueries quickbooksQueries, ref Vendor vendor, int recursive_int = 1) { XmlDocument inputXMLDoc; XmlElement qbXMLMsgsRq; QuickbooksUtils.BuildXMLQueryBase(out inputXMLDoc, out qbXMLMsgsRq); // Mark as query type XmlElement InvoicesAddRq = inputXMLDoc.CreateElement("VendorAddRq"); qbXMLMsgsRq.AppendChild(InvoicesAddRq); XmlElement invoiceXML = inputXMLDoc.CreateElement("VendorAdd"); InvoicesAddRq.AppendChild(invoiceXML); XmlElement companyName = inputXMLDoc.CreateElement("Name"); companyName.InnerText = vendor.nombre.Substring(0, Math.Min(40, vendor.nombre.Length)); invoiceXML.AppendChild(companyName); XmlElement vendorAddress = inputXMLDoc.CreateElement("VendorAddress"); if (!String.IsNullOrWhiteSpace(vendor.calle + vendor.noInterior + vendor.noExterior)) { XmlElement addr1 = inputXMLDoc.CreateElement("Addr1"); string addr1Full = ((vendor.calle.Trim() + " " + vendor.noInterior).Trim() + " " + vendor.noExterior).Trim(); addr1.InnerText = addr1Full.Substring(0, Math.Min(40, addr1Full.Length)); vendorAddress.AppendChild(addr1); } if (!String.IsNullOrWhiteSpace(vendor.colonia)) { XmlElement addr2 = inputXMLDoc.CreateElement("Addr2"); string addr2Full = vendor.colonia.Trim(); addr2.InnerText = addr2Full.Substring(0, Math.Min(40, addr2Full.Length)); vendorAddress.AppendChild(addr2); } if (!String.IsNullOrWhiteSpace(vendor.municipio)) { XmlElement city = inputXMLDoc.CreateElement("City"); city.InnerText = vendor.municipio.Substring(0, Math.Min(30, vendor.municipio.Length));; vendorAddress.AppendChild(city); } if (!String.IsNullOrWhiteSpace(vendor.estado)) { XmlElement state = inputXMLDoc.CreateElement("State"); state.InnerText = vendor.estado.Substring(0, Math.Min(30, vendor.estado.Length));; vendorAddress.AppendChild(state); } if (!String.IsNullOrWhiteSpace(vendor.codigoPostal)) { XmlElement postalCode = inputXMLDoc.CreateElement("PostalCode"); postalCode.InnerText = vendor.codigoPostal.Substring(0, Math.Min(10, vendor.codigoPostal.Length)); vendorAddress.AppendChild(postalCode); } invoiceXML.AppendChild(vendorAddress); XmlElement accountNumber = inputXMLDoc.CreateElement("AccountNumber"); accountNumber.InnerText = vendor.rfc; invoiceXML.AppendChild(accountNumber); /*aqui puede ser*/ if (vendor.rfc.Contains("XEXX010101000")) { XmlElement currencyRef = inputXMLDoc.CreateElement("CurrencyRef"); XmlElement currencyRefId = inputXMLDoc.CreateElement("ListID"); currencyRefId.InnerText = quickbooksQueries.Currencies["US Dollar"].listId; /*currencyRefId.InnerText = quickbooksQueries.Currencies["Mexican Peso"].listId;*/ currencyRef.AppendChild(currencyRefId); invoiceXML.AppendChild(currencyRef); } string updateResponse; VendorAdder vendorAdder = new VendorAdder(); if (quickbooksQueries.QueryQB(inputXMLDoc.OuterXml, out updateResponse)) { QuicbooksResponse qbResultUpdateInvoice = new QuicbooksResponse(updateResponse, "VendorAddRs"); if (qbResultUpdateInvoice.GetNumberOfResulst() > 0) { if (qbResultUpdateInvoice.success) { // Grab the ListID for the new vendor XmlNode VendorNode = qbResultUpdateInvoice.GetXmlNodeList().Item(0).ChildNodes.Item(0); if (VendorNode["ListID"] != null) { vendor.listId = VendorNode["ListID"].InnerText; return(null); } else { return("Vendor no tiene ListID: " + vendor.nombre); } } else { if (recursive_int < 7) { ++recursive_int; vendor.nombre = vendor.nombre + " - " + recursive_int.ToString(); string vendorAdderResult = vendorAdder.InsertVendor(ref quickbooksQueries, ref vendor, recursive_int); //string msg = "No se puede agregar proveedor " + ; //string msg; msg = "Agregado " + vendor.nombre; return(vendorAdderResult); } else { return("No se puede agregar Proveedor " + vendor.nombre); } } } else { return("Quickbooks regresó una respuesta vacía al agregar " + vendor.nombre); } } else { return("Se produjo un error al agregar insertar " + vendor.nombre + ": " + quickbooksQueries.lastError); } }
public string InsertUom(ref QuickbooksQueries quickbooksQueries, ref BillLineItem item) { XmlDocument inputXMLDoc; XmlElement qbXMLMsgsRq; QuickbooksUtils.BuildXMLQueryBase(out inputXMLDoc, out qbXMLMsgsRq); // Mark as query type XmlElement InvoicesAddRq = inputXMLDoc.CreateElement("UnitOfMeasureSetAddRq"); qbXMLMsgsRq.AppendChild(InvoicesAddRq); XmlElement invoiceXML = inputXMLDoc.CreateElement("UnitOfMeasureSetAdd"); InvoicesAddRq.AppendChild(invoiceXML); XmlElement name = inputXMLDoc.CreateElement("Name"); name.InnerText = item.unidad.Substring(0, Math.Min(30, item.unidad.Length)); invoiceXML.AppendChild(name); XmlElement unitType = inputXMLDoc.CreateElement("UnitOfMeasureType"); unitType.InnerText = "Other"; invoiceXML.AppendChild(unitType); XmlElement baseUnit = inputXMLDoc.CreateElement("BaseUnit"); invoiceXML.AppendChild(baseUnit); XmlElement baseUnitName = inputXMLDoc.CreateElement("Name"); baseUnitName.InnerText = item.unidad.Substring(0, Math.Min(30, item.unidad.Length)); baseUnit.AppendChild(baseUnitName); XmlElement abbr = inputXMLDoc.CreateElement("Abbreviation"); abbr.InnerText = item.claveunidad; baseUnit.AppendChild(abbr); string updateResponse; UomAdder uomAdder = new UomAdder(); if (quickbooksQueries.QueryQB(inputXMLDoc.OuterXml, out updateResponse)) { QuicbooksResponse qbResultUpdateInvoice = new QuicbooksResponse(updateResponse, "UnitOfMeasureSetAddRs"); if (qbResultUpdateInvoice.GetNumberOfResulst() > 0) { if (qbResultUpdateInvoice.success) { // Grab the ListID for the new vendor //XmlNode ClientNode = qbResultUpdateInvoice.GetXmlNodeList().Item(0).ChildNodes.Item(0); //msg = "Item created"; XmlNodeList responseNodeList = qbResultUpdateInvoice.GetXmlNodeList().Item(0).ChildNodes; foreach (XmlNode responseNode in responseNodeList) { UnitMeasure newUom = new UnitMeasure(); //Here is some weird behavior foreach (XmlNode childNode in responseNode.ChildNodes) { if (childNode.Name == "ListID") { newUom.listId = childNode.InnerText; } if (childNode.Name == "Name") { newUom.name = childNode.InnerText; } } if (responseNode["BaseUnit"] != null) { foreach (XmlNode DataRowNode in responseNode["BaseUnit"]) { if (DataRowNode.Name == "Name") { newUom.baseUnitName = DataRowNode.InnerText; } if (DataRowNode.Name == "Abbreviation") { newUom.abbreviation = DataRowNode.InnerText; } } } if (!String.IsNullOrEmpty(newUom.abbreviation)) { //itemlistId = new_item.listId; //Items[new_item.productKey] = new_item; quickbooksQueries.Uoms[newUom.abbreviation] = newUom; return(null); } else { return("Item no tiene List id " + newUom.name); } } } else { //Random rnd = new Random(); //Makes recursive insertion tries 5 times // Misssing loop of 5 :/ //client.nombre = client.nombre + " - " + rnd.ToString(); //string clientAdderResult = clientAdder.InsertClient(ref quickbooksQueries, ref client); //string msg = "No se puede agregar proveedor " + ; //string msg; msg = "Agregado " + vendor.nombre; return("No se puede agregar unit"); } } else { return("Quickbooks regresó una respuesta vacía al agregar " + item.descripcion); } } else { return("Se produjo un error al agregar insertar " + item.descripcion + ": " + quickbooksQueries.lastError); } return("ERror"); }
public string InsertClient(ref QuickbooksQueries quickbooksQueries, ref Client client, int recursive_int = 1, string moneda = "mxn") { XmlDocument inputXMLDoc; XmlElement qbXMLMsgsRq; QuickbooksUtils.BuildXMLQueryBase(out inputXMLDoc, out qbXMLMsgsRq); // Mark as query type XmlElement InvoicesAddRq = inputXMLDoc.CreateElement("CustomerAddRq"); qbXMLMsgsRq.AppendChild(InvoicesAddRq); XmlElement invoiceXML = inputXMLDoc.CreateElement("CustomerAdd"); InvoicesAddRq.AppendChild(invoiceXML); XmlElement companyName = inputXMLDoc.CreateElement("Name"); companyName.InnerText = client.nombre.Substring(0, Math.Min(40, client.nombre.Length)); invoiceXML.AppendChild(companyName); XmlElement accountNumber = inputXMLDoc.CreateElement("AccountNumber"); accountNumber.InnerText = client.rfc; invoiceXML.AppendChild(accountNumber); /*aqui puede ser*/ /*Aqui tambien agrega*/ /*if (client.rfc.Contains("XEXX010101000"))*/ if (moneda != "mxn") { XmlElement currencyRef = inputXMLDoc.CreateElement("CurrencyRef"); XmlElement currencyRefId = inputXMLDoc.CreateElement("ListID"); /* currencyRefId.InnerText = quickbooksQueries.Currencies["Mexican Peso"].listId;*/ currencyRefId.InnerText = quickbooksQueries.Currencies["US Dollar"].listId; currencyRef.AppendChild(currencyRefId); invoiceXML.AppendChild(currencyRef); } string updateResponse; ClientAdder clientAdder = new ClientAdder(); if (quickbooksQueries.QueryQB(inputXMLDoc.OuterXml, out updateResponse)) { QuicbooksResponse qbResultUpdateInvoice = new QuicbooksResponse(updateResponse, "CustomerAddRs"); if (qbResultUpdateInvoice.GetNumberOfResulst() > 0) { if (qbResultUpdateInvoice.success) { // Grab the ListID for the new vendor XmlNode ClientNode = qbResultUpdateInvoice.GetXmlNodeList().Item(0).ChildNodes.Item(0); if (ClientNode["ListID"] != null) { client.listId = ClientNode["ListID"].InnerText; return(null); } else { return("Customer no tiene ListID: " + client.nombre); } } else { if (recursive_int < 7) { ++recursive_int; client.nombre = client.nombre + " - " + recursive_int.ToString(); string clientAdderResult = clientAdder.InsertClient(ref quickbooksQueries, ref client, recursive_int); return(clientAdderResult); } else { return("No se puede agregar cliente " + client.nombre); } } } else { return("Quickbooks regresó una respuesta vacía al agregar " + client.nombre); } } else { return("Se produjo un error al agregar insertar " + client.nombre + ": " + quickbooksQueries.lastError); } }
public void SetQuickbooksQueries(QuickbooksQueries quickbooksQueries) { this.quickbooksQueries = quickbooksQueries; }