henkm/docdata

View on GitHub
lib/docdata/xml/create.xml.erb

Summary

Maintainability
Test Coverage
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:_1="http://www.docdatapayments.com/services/paymentservice/1_1/">
   <soapenv:Header/>
   <soapenv:Body>
      <_1:createRequest version="1.1">
         <_1:merchant name="<%= Docdata::Config.username %>" password="<%= Docdata::Config.password %>"/>
         <_1:merchantOrderReference><%= payment.order_reference %></_1:merchantOrderReference>
         <_1:paymentPreferences>
            <_1:profile><%= payment.profile %></_1:profile>
            <_1:numberOfDaysToPay>14</_1:numberOfDaysToPay>
         </_1:paymentPreferences>
         
         <_1:shopper id="<%= shopper.id %>">
            <_1:name>
               <_1:first><%= shopper.first_name %></_1:first>
               <_1:last><%= shopper.last_name %></_1:last>
            </_1:name>
            <_1:email><%= shopper.email %></_1:email>
            <_1:language code="<%= shopper.language_code %>"/>
            <_1:gender><%= shopper.gender.upcase %></_1:gender>
            
         </_1:shopper>
         <_1:totalGrossAmount currency="<%= payment.currency %>"><%= payment.amount %></_1:totalGrossAmount>
         <_1:billTo>
            <_1:name>
               <_1:first><%= shopper.first_name %></_1:first>
               <_1:last><%= shopper.last_name %></_1:last>
            </_1:name>
            <_1:address>
               <_1:street><%= shopper.street %></_1:street>
               <_1:houseNumber><%= shopper.house_number %></_1:houseNumber>
               <_1:postalCode><%= shopper.postal_code %></_1:postalCode>
               <_1:city><%= shopper.city %></_1:city>
               <_1:country code="<%= shopper.country_code %>"/>
            </_1:address>
         </_1:billTo>

         <% if payment.description.present? %>
         <_1:description><%= payment.cleaned_up_description %></_1:description>
         <% end %>
         <% if payment.receipt_text.present? %>
         <_1:receiptText><%= payment.receipt_text %></_1:receiptText>
         <% end %>

         <% if payment.line_items.any? %>
         <_1:invoice>
            <!-- TODO: include VAT options -->
            <_1:totalNetAmount currency="<%= payment.currency %>"><%= payment.amount %></_1:totalNetAmount>
            <!--1 to 1000 repetitions:-->
            <% for vat_rate in payment.vat_rates %>
            <% puts "Rate: #{vat_rate}" %>
            
            <_1:totalVatAmount currency="<%= payment.currency %>" rate="<%= vat_rate[:rate].to_s %>"><%= vat_rate[:total].to_i.to_s %></_1:totalVatAmount>
            <% end %>
            <!--1 to 1000 repetitions:-->
            <% payment.line_items.each_with_index do |line_item, i| %>
            <_1:item number="<%= i+1 %>">
               <_1:name><%= line_item.name %></_1:name>
               <_1:code><%= line_item.code %></_1:code>
               <_1:quantity unitOfMeasure="<%= line_item.unit_of_measure %>"><%= line_item.quantity %></_1:quantity>
               <_1:description><%= line_item.description %></_1:description>

               <% if line_item.image.present? %>
               <_1:image><%= line_item.image %></_1:image>
               <% end %>
               <_1:netAmount currency="<%= payment.currency %>">20</_1:netAmount>
               <_1:grossAmount currency="<%= payment.currency %>">20</_1:grossAmount>
               <_1:vat rate="20">
                  <_1:amount currency="<%= payment.currency %>">20</_1:amount>
               </_1:vat>
               <_1:totalNetAmount currency="<%= payment.currency %>">20</_1:totalNetAmount>
               <_1:totalGrossAmount currency="<%= payment.currency %>">20</_1:totalGrossAmount>
               <_1:totalVat rate="20">
                  <_1:amount currency="20">20</_1:amount>
               </_1:totalVat>

            </_1:item>
            <% end %>
            <_1:shipTo>
               <_1:name>
                  <_1:first><%= shopper.first_name %></_1:first>
                  <_1:last><%= shopper.first_name %></_1:last>
               </_1:name>
               <_1:address>
                  <_1:street><%= shopper.street %></_1:street>
                  <_1:houseNumber><%= shopper.house_number %></_1:houseNumber>
                  <_1:postalCode><%= shopper.postal_code %></_1:postalCode>
                  <_1:city><%= shopper.city %></_1:city>
                  <_1:country code="<%= shopper.country_code %>"/>
               </_1:address>
            </_1:shipTo>
            <!--Optional:-->
            <_1:additionalDescription></_1:additionalDescription>
         </_1:invoice>
         <% end %>

      </_1:createRequest>
   </soapenv:Body>
</soapenv:Envelope>