Ejemplo n.º 1
0
 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
         },
     };
 }
Ejemplo n.º 2
0
 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 "?";
     }
 }
Ejemplo n.º 3
0
 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 "?";
         }
 }
Ejemplo n.º 4
0
 public void TransformLine(SalesOrderItem netSuiteLine, LineDTO line, NetSuiteApi api)
 {
     netSuiteLine.location = new RecordRef { internalId = this.getLocation(line, api) };
 }
Ejemplo n.º 5
0
 public double GetPriceOfLine(LineDTO line, dynamic netSuiteItem, NetSuiteApi api)
 {
     var discountPercentage = getCountry(api).GetIvaPercentage(netSuiteItem);
     return line.Price / (discountPercentage + 1);
 }
Ejemplo n.º 6
0
 public CustomFieldRef[] GetCustomerFields(ContactDTO contact, LineDTO line, NetSuiteApi api)
 {
     return new CustomFieldRef[0];
 }
Ejemplo n.º 7
0
 public void TransformLine(SalesOrderItem salesOrderItem, LineDTO line, NetSuiteApi api)
 {
     // nothing
 }
Ejemplo n.º 8
0
 public double GetPriceOfLine(LineDTO line, dynamic netSuiteItem, NetSuiteApi api)
 {
     return line.Price / 1.16;
 }
Ejemplo n.º 9
0
        /// <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();
            }
        }