Module: Telasi::SAP

Defined in:
lib/telasi-ruby/model.rb,
lib/telasi-ruby/converter.rb

Overview

Module containint SAP models and operations.

Defined Under Namespace

Classes: Address, Base, DriverInfo, InvoiceItem, MaterialDocumentHeader, MaterialItem, MaterialText, WarehouseAddress

Constant Summary collapse

LANG_KA =

ქართული ენის კონსტანტა.

''
SCHEMA =
'SAPSR3'
TELASI_TIN =

თელასის საიდენტიფიკაციო ნომერი.

'202052580'
TELASI_NAME =

თელასის ოფიციალური დასახელება.

'ს.ს. თელასი'
TELASI_ID =

თელასის გადამხდელის ID.

1000

Class Method Summary collapse

Class Method Details

.material_doc_to_waybill(doc) ⇒ Object

აკონვერტებს მოცემული მასალის დოკუმენტს ზედნადების ფორმატში. მიღებული ზედნადების კლასი შესაძლოა ატვირთულ იქნას rs.ge ვებ-საიტზე.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/telasi-ruby/converter.rb', line 18

def self.material_doc_to_waybill(doc)
  waybill = RS::Waybill.new

  not_auto = nil
  #with_auto = nil
  doc.items.each do |item|
    not_auto = item and break unless item.auto?
    #with_auto = item if item.auto?
    #break if not_auto and with_auto
  end

  # operation type
  case not_auto.ebeln[0..1]
  when '45' #
    waybill.type = doc.driver_info ? RS::WaybillType::TRANSPORTATION : RS::WaybillType::WITHOUT_TRANSPORTATION
  when '49' # შიდა გადაზიდვა
    waybill.type = RS::WaybillType::INNER
    waybill.seller_id       = TELASI_ID
    waybill.seller_tin      = TELASI_TIN
    waybill.seller_name     = TELASI_NAME
    waybill.check_buyer_tin = true
    waybill.buyer_tin       = TELASI_TIN
    waybill.buyer_name      = TELASI_NAME
  else
    #raise RuntimeError.new("not supported: #{ebeln}")
  end

  if doc.driver_info
    waybill.car_number = doc.driver_info.vehicle
    waybill.transport_type_id = RS::TransportType::VEHICLE
    waybill.driver_name = doc.driver_info.driver
    waybill.driver_tin = doc.driver_info.drperno
    waybill.check_driver_tin  = true
  end

  # start/end address
  if not_auto
    address1 = not_auto.warehouse_address
    address2 = not_auto.invoice_address
    waybill.start_address = address1.address.to_s if address1
    waybill.end_address   = address2.address.to_s if address2
  end

  # items
  items = []
  doc.items.each do |doc_item|
    item = RS::WaybillItem.new
    item.bar_code = doc_item.matnr.match(/[1-9][0-9]*/)[0]
    item.prod_name = doc_item.material_name_ka.maktx
    item.unit_id = RS::WaybillUnit::OTHERS
    item.unit_name = doc_item.meins
    item.quantity = doc_item.menge
    item.price = doc_item.dmbtr / item.quantity
    items << item
  end
  waybill.items = items

  waybill
end