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/modules/common.rb,
lib/ufebs/entities/acc_doc.rb,
lib/ufebs/entities/ed_info.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/fields/payment_doc.rb,
lib/ufebs/entities/trans_info.rb,
lib/ufebs/entities/participant.rb,
lib/ufebs/requests/test_request.rb,
lib/ufebs/documents/base_payment.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/invoice_order.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/schema_validation_result.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/requests/group_status_answer.rb,
lib/ufebs/entities/ed_define_answer_info.rb,
lib/ufebs/entities/ed_define_request_info.rb,
lib/ufebs/requests/negative_status_notification.rb,
lib/ufebs/requests/positive_status_notification.rb

Defined Under Namespace

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

Instance Method Summary collapse

Instance Method Details

#configurationObject



26
27
28
# File 'lib/ufebs.rb', line 26

def configuration
  @configuration ||= Configuration.new
end

#configure(&block) ⇒ Object

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



31
32
33
# File 'lib/ufebs.rb', line 31

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:



102
103
104
# File 'lib/ufebs.rb', line 102

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

#ED104(params) ⇒ Object



115
116
117
# File 'lib/ufebs.rb', line 115

def ED104(params)
  params.is_a?(Hash) ? Ufebs::Documents::InvoiceOrder.new(params) : Ufebs::Documents::InvoiceOrder.parse(params)
end

#ED201(params) ⇒ Object



107
108
109
# File 'lib/ufebs.rb', line 107

def ED201(params)
  Ufebs::Requests::NegativeStatusNotification.parse(params)
end

#ED205(params) ⇒ Object



111
112
113
# File 'lib/ufebs.rb', line 111

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

#ED206(params) ⇒ Object



123
124
125
126
# File 'lib/ufebs.rb', line 123

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

#ED207(params) ⇒ Object



128
129
130
131
# File 'lib/ufebs.rb', line 128

def ED207(params)
  return Ufebs::Requests::GroupStatusAnswer.new(params) if params.is_a?(Hash)
  Ufebs::Requests::GroupStatusAnswer.parse(params)
end

#ED208(params) ⇒ Object



133
134
135
# File 'lib/ufebs.rb', line 133

def ED208(params)
  Ufebs::Requests::PositiveStatusNotification.parse(params)
end

#ED210(params) ⇒ Object



137
138
# File 'lib/ufebs.rb', line 137

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'
)


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

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

#ED218(params) ⇒ Object



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

def ED218(params)
end

#ED243(params) ⇒ Object



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

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

#ED244(params) ⇒ Object



173
174
175
176
177
178
179
# File 'lib/ufebs.rb', line 173

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



186
187
188
# File 'lib/ufebs.rb', line 186

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

#namespaceObject



14
15
16
# File 'lib/ufebs.rb', line 14

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

#PacketEPD(payment_eds, params) ⇒ Object



119
120
121
# File 'lib/ufebs.rb', line 119

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

#PacketESID(params) ⇒ Object



194
195
196
# File 'lib/ufebs.rb', line 194

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:



22
23
24
# File 'lib/ufebs.rb', line 22

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

#validate(doc) ⇒ Object



198
199
200
201
202
203
204
205
206
207
# File 'lib/ufebs.rb', line 198

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

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

  Ufebs::SchemaValidationResult.new(errors)
end

#validation_schemaObject



35
36
37
38
39
40
# File 'lib/ufebs.rb', line 35

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