Module: Ufebs

Extended by:
Ufebs
Included in:
Ufebs
Defined in:
lib/ufebs.rb,
lib/ufebs/configuration.rb,
lib/ufebs/entities/bank.rb,
lib/ufebs/fields/header.rb,
lib/ufebs/entities/acc_doc.rb,
lib/ufebs/entities/session.rb,
lib/ufebs/requests/receipt.rb,
lib/ufebs/documents/package.rb,
lib/ufebs/entities/ed_ref_id.rb,
lib/ufebs/entities/trans_info.rb,
lib/ufebs/entities/participant.rb,
lib/ufebs/requests/test_request.rb,
lib/ufebs/entities/ed_field_list.rb,
lib/ufebs/requests/define_answer.rb,
lib/ufebs/requests/group_request.rb,
lib/ufebs/requests/status_answer.rb,
lib/ufebs/documents/payment_order.rb,
lib/ufebs/entities/ed_reestr_info.rb,
lib/ufebs/entities/initial_packet.rb,
lib/ufebs/requests/define_request.rb,
lib/ufebs/requests/package_request.rb,
lib/ufebs/documents/package_response.rb,
lib/ufebs/documents/payment_response.rb,
lib/ufebs/entities/departmental_info.rb,
lib/ufebs/entities/processing_details.rb,
lib/ufebs/entities/ed_define_answer_info.rb,
lib/ufebs/entities/ed_define_request_info.rb

Defined Under Namespace

Modules: Documents, Entities, Fields, Requests Classes: Configuration

Instance Method Summary collapse

Instance Method Details

#configurationObject



24
25
26
# File 'lib/ufebs.rb', line 24

def configuration
  @configuration ||= Configuration.new
end

#configure(&block) ⇒ Object

Конфигурация



29
30
31
# File 'lib/ufebs.rb', line 29

def configure(&block)
  block.call(configuration)
end

#ED101(params) ⇒ Ufebs::Documents::PaymentOrder+

Создание XML по формату ED101(Платежное поручение)

Examples:

Пример документа

ed101 = Ufebs::ED101(
  number: 7,
  sum: 150000,
  receipt_date: Time.now,
  acc_doc: { number: '3', date: Time.now },
  ed_author: 4525595000
  purpose: 'оплата в том числе ндс 4000 руб',
  payer: {
    name: 'ООО ТЕСТ',
    account: '40702810200203001037',
    inn: '7726274727',
    bank_bic: '044525545',
    bank_account: '30101810300000000545'
  },
  payee: {
    name: 'ООО ТЕСТ',
    account: '40702810200203001037',
    inn: '7726274727',
    bank_bic: '044525545',
    bank_account: '30101810300000000545'
  },
  departmental_info: {
    kbk: '18210301000010000110',
    okato: '45263591000',
    drawer_status: '01',
    tax_period: 'МС.03.2017',
    tax_payt_kind: 'НС',
    doc_no: '111',
    payt_reason: 'ТП'
  }
)
ed101.to_xml(Nokogiri::XML::Builder.new(encoding: 'UTF-8'), nil, nil).to_xml #=>
 '<?xml version="1.0" encoding="UTF-8"?>
 <ed:ED101 xmlns:ed="urn:cbr-ru:ed:v2.0" EDNo="7" EDDate="2017-12-11" EDAuthor="4525595000" Sum="150000" TransKind="01" ChargeOffDate="2017-12-11" ReceiptDate="2017-12-11" SystemCode="01" Priority="0">
   <ed:AccDoc AccDocNo="003" AccDocDate="2017-12-11"/>
   <ed:Payer INN="7726274727" PersonalAcc="40702810200203001037">
     <ed:Name>ООО ТЕСТ</ed:Name>
     <ed:Bank BIC="044525545" CorrespAcc="30101810300000000545"/>
   </ed:Payer>
   <ed:Payee INN="7726274727" PersonalAcc="40702810200203001037">
     <ed:Name>ООО ТЕСТ</ed:Name>
     <ed:Bank BIC="044525545" CorrespAcc="30101810300000000545"/>
   </ed:Payee>
   <ed:Purpose>оплата в том числе ндс 4000 руб</ed:Purpose>
   <ed:DepartmentalInfo CBC="18210301000010000110" OKATO="45263591000" TaxPeriod="МС.03.2017" DrawerStatus="01" PaytReason="ТП" DocNo="111" TaxPaytKind="НС" DocDate="2017-12-11"/>
 </ed:ED101>'

Чтение XML

Ufebs::ED101(File.read('packet_epd.xml')) #=> [#<Ufebs::Documents::PaymentOrder:0x00..>]

Parameters:

  • params (Hash, String)

    Hash значений документа или его строковое представление в виде XML

Options Hash (params):

  • :number (Integer)

    номер документа аттрибут EDNo

  • :sum (Integer)

    Сумма документа аттрибут Sum

  • :receipt_date (DateTime)

    ReceiptDate дата обработки

  • :acc_doc (Hash)

    AccDoc информация о счете(number: Номер исходного расчетного документа, date: Дата выписки расчетного документа

  • :purpose (String)

    Purpose предназначение-описание платежа

  • :payer (Hash)

    Payer плательщик

  • :payer (Hash)

    Payee получатель

  • :departmental_info (Hash) — default: {}

    DepartmentalInfo Ведомственная информация

Returns:



157
158
159
# File 'lib/ufebs.rb', line 157

def ED101(params)
  params.is_a?(Hash) ? Ufebs::Documents::PaymentOrder.new(params) : Ufebs::Documents::PaymentOrder.parse(params)
end

#ED205(params) ⇒ Object



52
53
54
# File 'lib/ufebs.rb', line 52

def ED205(params)
  Ufebs::Requests::StatusAnswer.parse(params)
end

#ED206(params) ⇒ Object



165
166
167
168
# File 'lib/ufebs.rb', line 165

def ED206(params)
  return Ufebs::Documents::PaymentResponse.new(params) if params.is_a?(Hash)
  Ufebs::Documents::PaymentResponse.parse(params)
end

#ED210(params) ⇒ Object



49
50
# File 'lib/ufebs.rb', line 49

def ED210(params)
end

#ED211(params) ⇒ Object

Создание/Парсинг выписки ED211

Examples:

Пример

ed211 = Ufebs::Requests::Receipt.new(
  number: '8',
  ed_date: '2003-04-14',
  ed_author: '4525545000',
  ed_receiver: '4525000000',
  abstract_date: Date.today,
  abstract_kind: '1',
  acc: '30101810945250000420',
  bic: '044525000',
  end_time: '00:47:07',
  enter_bal: '72619100',
  inquiry_session: '0',
  last_movet_date: Date.today,
  out_bal: '72619100',
  rtgs_unconfirmed_ed: '0'
)


74
75
76
# File 'lib/ufebs.rb', line 74

def ED211(params)
  params.is_a?(Hash) ? Ufebs::Requests::Receipt.new(params) : Ufebs::Requests::Receipt.parse(params)
end

#ED218(params) ⇒ Object



86
87
# File 'lib/ufebs.rb', line 86

def ED218(params)
end

#ED243(params) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/ufebs.rb', line 78

def ED243(params)
  if params.is_a?(Hash)
    Ufebs::Requests::DefineRequest.new(params)
  else
    Ufebs::Requests::DefineRequest.parse(params)
  end
end

#ED244(params) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/ufebs.rb', line 89

def ED244(params)
  if params.is_a?(Hash)
    Ufebs::Requests::DefineAnswer.new(params)
  else
    Ufebs::Requests::DefineAnswer.parse(params)
  end
end

#ED999(params) ⇒ Object

XML запрос-зонд

Parameters:

  • params (Hash)
  • :number (Hash)

    a customizable set of options

  • :ed_date (Hash)

    a customizable set of options

  • :ed_author (Hash)

    a customizable set of options



45
46
47
# File 'lib/ufebs.rb', line 45

def ED999(params)
  Ufebs::Requests::TestRequest.new(params)
end

#namespaceObject



12
13
14
# File 'lib/ufebs.rb', line 12

def namespace
  "urn:cbr-ru:ed:v2.0".freeze
end

#PacketEPD(payment_eds, params) ⇒ Object



161
162
163
# File 'lib/ufebs.rb', line 161

def PacketEPD(payment_eds, params)
  Ufebs::Documents::Package.new(payment_eds, params)
end

#PacketESID(params) ⇒ Object



170
171
172
# File 'lib/ufebs.rb', line 170

def PacketESID(params)
  Ufebs::Documents::PackageResponse.parse(params)
end

#Session(params) ⇒ Ufebs::Entities::Session

Получение Сессии(Номера рейса)

Examples:

Пример

session = Ufebs::Session(File.read('doc.xml')) #=> #<Ufebs::Entities::Session:0x00..>

Returns:



20
21
22
# File 'lib/ufebs.rb', line 20

def Session(params)
  params.is_a?(Hash) ? Ufebs::Entities::Session.new(params) : Ufebs::Entities::Session.parse(params, single: true)
end

#validate(doc) ⇒ Object



174
175
176
177
178
179
180
181
182
183
# File 'lib/ufebs.rb', line 174

def validate(doc)
  doc = Nokogiri::XML(doc) if doc.is_a?(String)

  errors = []
  validation_schema.validate(doc).each do |error|
    errors << error.message
    puts error.message
  end
  errors.empty?
end

#validation_schemaObject



33
34
35
36
37
38
# File 'lib/ufebs.rb', line 33

def validation_schema
  @validation ||= begin
                    validation = Nokogiri::XML(File.read(configuration.schemas), configuration.schemas)
                    Nokogiri::XML::Schema.from_document(validation)
                  end
end