public CustomFieldRef[] GetCustomerFields(ContactDTO contact, LineDTO line, NetSuiteApi api) { return new CustomFieldRef[] { new StringCustomFieldRef { scriptId = "custentity_l54_tipo_documento", value = getDocumentType(contact, api) }, new StringCustomFieldRef { scriptId = "custentity_l54_nombre_legal", value = contact.ContactPerson }, new StringCustomFieldRef { scriptId = "custentity_l54_tipo_contribuyente", value = "1" // consumidor final }, new StringCustomFieldRef { scriptId = "custentity_l54_cuit_entity", value = getVatRegNumber(contact) // el cuit de vuelta, igual que vatregnumber }, new StringCustomFieldRef { scriptId = "custentity_clase_cuenta", value = "15" // consumidor final }, new StringCustomFieldRef { scriptId = "custentity_canal", value = "3" // consumidor final }, new StringCustomFieldRef { scriptId = "custentity_subcanal", value = "3" // mercadolibre }, new StringCustomFieldRef { scriptId = "custentity_tipocliente", value = this.getTypeOfClient(line, api) }, new StringCustomFieldRef { scriptId = "custentity_3k_usuarioweb", value = contact.Name }, }; }
private string getTypeOfClient(LineDTO line, NetSuiteApi api) { switch (api.Credentials.AccountName) { case "EDIFIERCHILE": return "5"; // Edifier Chile case "STADIO CHILE": return "7"; // Stadio Chile case "DIRECTO.LAT": return "8"; // Directo Argentina case "TIENDAS STADIO": switch (line.Product.Brand) { case "Reloop": return "12"; // Reloop Argentina case "Presonus": return "14"; // PreSonus Argentina case "Ddrum": return "15"; // DDrum Argentina case "Ampeg": return "10"; // Ampeg Argentina case "Audix": return "13"; // Audix Argentina case "Edifier": return "4"; // Edifier Argentina case "Dean Guitars": return "11"; // Dean Guitars Argentina default: return "?"; } case "STADIOURUGUAY": switch (line.Product.Brand) { case "Mackie": return "17"; // Mackie Uruguay case "Ampeg": return "16"; // Ampeg Uruguay case "Presonus": return "18"; // PreSonus Uruguay default: return "?"; } case "STADIO ARGENTINA": return "6"; // Stadio Argentina default: return "?"; } }
private string getLocation(LineDTO line, NetSuiteApi api) { switch (api.Credentials.AccountName) { case "EDIFIERCHILE": case "STADIO CHILE": return "5"; // Bodega Tiendas Web case "DIRECTO.LAT": return "20"; // Ecommerce_Salta case "TIENDAS STADIO": return "20"; // Ecommerce_Salta case "STADIO ARGENTINA": return "20"; // Ecommerce_Salta case "STADIOURUGUAY": return "6"; // BODEGA UES default: return "?"; } }
public void TransformLine(SalesOrderItem netSuiteLine, LineDTO line, NetSuiteApi api) { netSuiteLine.location = new RecordRef { internalId = this.getLocation(line, api) }; }
public double GetPriceOfLine(LineDTO line, dynamic netSuiteItem, NetSuiteApi api) { var discountPercentage = getCountry(api).GetIvaPercentage(netSuiteItem); return line.Price / (discountPercentage + 1); }
public CustomFieldRef[] GetCustomerFields(ContactDTO contact, LineDTO line, NetSuiteApi api) { return new CustomFieldRef[0]; }
public void TransformLine(SalesOrderItem salesOrderItem, LineDTO line, NetSuiteApi api) { // nothing }
public double GetPriceOfLine(LineDTO line, dynamic netSuiteItem, NetSuiteApi api) { return line.Price / 1.16; }
/// <summary> /// Gets or create a customer. Returns its internal id. /// </summary> private Customer getOrCreateCustomer(ContactDTO contact, Address address, LineDTO line, out bool created) { if (contact.ContactPerson == null) throw new ApplicationException("The contact doesn't have a contact person"); Func<Customer> getCustomer = () => api.SearchOne(new CustomerSearch { basic = new CustomerSearchBasic { email = new SearchStringField { @operator = SearchStringFieldOperator.@is, operatorSpecified = true, searchValue = contact.Mail.TrimAndLimit(100) } } }, true); try { created = false; return getCustomer(); } catch (InvalidOperationException) { var customer = new Customer { firstName = contact.Name.TrimAndLimit(32), lastName = contact.ContactPerson.TrimAndLimit(32), email = contact.Mail.TrimAndLimit(100), phone = new String(contact.PhoneNumber.Where(Char.IsDigit).ToArray()), isPerson = true, isPersonSpecified = true, addressbookList = new CustomerAddressbookList { addressbook = new[] { this.api.Integration.TransformAddressbook(new CustomerAddressbook { addressbookAddress = address, defaultBilling = true, defaultBillingSpecified = true, isResidential = true, isResidentialSpecified = true }) }, replaceAll = true }, customFieldList = this.api.Integration.GetCustomerFields(contact, line, this.api) }; this.api.Integration.TransformCustomer(customer, contact, this.api); api.Query<WriteResponse>(() => api.Service.add(customer) ); created = true; return getCustomer(); } }