class Sap::Invoice

Public Class Methods

new(source) click to toggle source

对象初始化方法(初始化来源) @note 对象初始化方法(初始化来源) @param source [string]

# File lib/resource/sap/invoice.rb, line 9
def initialize(source)
  @source = source
end

Public Instance Methods

convert_to_sap_invoice(order) click to toggle source
# File lib/resource/sap/invoice.rb, line 64
def convert_to_sap_invoice(order)
  sap_invoice = yhash

  # 汇率
  sap_invoice.exchangeRate = 1

  # 过账时间
  sap_invoice.postingTime = order.try(:orderTime)

  # 到期时间
  sap_invoice.dueTime = order.try(:orderTime)

  # 备注
  sap_invoice.remark = "来源订单编号[#{order.try(:docNumber)}]"

  # 联系人
  # sap_invoice.contactPerson = yhash
  # sap_invoice.contactPerson.id = ''

  # 账单地址
  sap_invoice.billingAddress = yhash
  sap_invoice.billingAddress.state = order.try(:billingAddress).try(:state)
  sap_invoice.billingAddress.cityName = order.try(:billingAddress).try(:cityName)
  sap_invoice.billingAddress.street1 = order.try(:billingAddress).try(:street1)
  sap_invoice.billingAddress.street2 = order.try(:billingAddress).try(:street2)
  sap_invoice.billingAddress.zipCode = order.try(:billingAddress).try(:zipCode)
  sap_invoice.billingAddress.mobile = order.try(:billingAddress).try(:mobile)
  sap_invoice.billingAddress.telephone = order.try(:billingAddress).try(:telephone)
  sap_invoice.billingAddress.recipientName = order.try(:billingAddress).try(:recipientName)
  sap_invoice.billingAddress.displayName = order.try(:billingAddress).try(:displayName)

  # 发票行
  sap_invoice.invoiceLines = []
  order.try(:productLines).try(:each) do |child_product_lines|
    child_invoice_lines = yhash
    child_invoice_lines.baseDocument = yhash
    child_invoice_lines.baseDocument.baseId = order.try(:id)
    child_invoice_lines.baseDocument.baseNumber = nil
    child_invoice_lines.baseDocument.baseType = nil
    child_invoice_lines.baseDocument.baseLineId = child_product_lines.try(:id)
    child_invoice_lines.baseDocument.baseLineNumber = nil
    child_invoice_lines.remark = nil

    sap_invoice.invoiceLines << child_invoice_lines
  end

  # 物流行
  sap_invoice.shippingLines = [
      {
          baseDocument: {
              baseId: order.try(:id),
              baseNumber: nil,
              baseType: nil,
              baseLineId: order.try(:shippingLines).try(:first).try(:id),
              baseLineNumber: nil
          },
          remark: nil
      }
  ]

  # # 付款信息
  sap_invoice.paymentTerm = yhash
  sap_invoice.paymentTerm.id = order.try(:paymentTerm).try(:id)
  sap_invoice.paymentTerm.name = order.try(:paymentTerm).try(:name)

  sap_invoice

end
find(id) click to toggle source

通过接口获得单个数据 @note 通过接口获得单个数据 @param id [Integer] 数据id

# File lib/resource/sap/invoice.rb, line 24
def find(id)
  get(query(id))
end
list() click to toggle source

通过接口获得一堆数据 @note 通过接口获得一堆数据 @param source [string] 来源 @param request_name [string] 请求资源名

# File lib/resource/sap/invoice.rb, line 17
def list
  get(query)
end
query(params = {}, id = {}) click to toggle source
# File lib/resource/sap/invoice.rb, line 40
def  query(params = {}, id = {})
  # Rails.logger.info params[:user_id]
  request_names = if params.class == Fixnum || params.class == String
                    "#{request_name}/#{params}?expand=*&"
                  elsif id.class == Fixnum
                    "#{request_name}/#{id}?expand=*&"
                  else
                    "#{request_name}?expand=*&"
                  end
  post_params = {
      source: @source,
      request_name: request_names
  }
  p "params是#{params}"
  p "id是#{id}"
  if params.class != Fixnum && params.class != String && params.present?
    post_params.merge!(invoice: convert_to_sap_invoice(params))
    p "post_params#{post_params}"
  end
  post_params.merge(id: id) if id.class == Fixnum
  # p "当前参数#{post_params}"
  post_params
end
request_name() click to toggle source

获取请求路径的请求名 @note 获取请求路径的请求名

# File lib/resource/sap/invoice.rb, line 36
def request_name
  'SalesInvoices'
end
upload(invoice_order) click to toggle source

将收付款单数据从云店家上传到sap @param invoice_order [string]

# File lib/resource/sap/invoice.rb, line 30
def upload(invoice_order)
  invoice_id = post(query(invoice_order))
end