Guest User

Untitled

a guest
Mar 20th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  1. "{"timestamp":"2018-03-20T09:31:24.479+0000","status":400,"error":"Bad Request","exception":"org.springframework.http.converter.HttpMessageNotReadableException","message":"Could not read document: Can not deserialize value of type java.util.Date from String "2018-03-19T23:00:00.000Z": expected format "yyyy-MM-dd hh:mm:ss"n at [Source: java.io.PushbackInputStream@5f8a9170; line: 1, column: 45] (through reference chain: com.pegusapps.dashboard.Invoices.web.InvoiceForm["dueDate"]); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2018-03-19T23:00:00.000Z": expected format "yyyy-MM-dd hh:mm:ss"n at [Source: java.io.PushbackInputStream@5f8a9170; line: 1, column: 45] (through reference chain: com.pegusapps.dashboard.Invoices.web.InvoiceForm["dueDate"])","path":"/finance/invoice/saveInvoice"}"
  2.  
  3. <div class="modal-content">
  4. <div class="modal-header">
  5. <button type="button" class="close" data-dismiss="modal">&times;</button>
  6. <h4 class="modal-title">New invoice</h4>
  7. </div>
  8. <div class="modal-body" style="display: inline-block;" >
  9. <div style="width: 48%; float: left; margin: 5px">
  10. <select class="selectpicker" style="width:100%" required id="chooseContract">
  11. <option value="" selected disabled hidden>Choose a contract</option>
  12. <option th:each="project : ${projects}" th:data-status="${project.status}" th:text="${project.name}"></option>
  13. </select></div>
  14. <div style="float: right;width: 48%">
  15. <input class="form-control" style="width: 100%;margin: 5px;" id="datetimepicker" placeholder="DueDate" name="dueDate" required/>
  16. <textarea class="form-control" id="remarks" rows="9" style="width: 100%; resize: none;margin: 5px"placeholder="Remarks" name="remarks"></textarea>
  17. </div>
  18. <input class="form-control" id="amount" type="number" style="float: left;clear: left;margin: 5px;width: 48%"placeholder="Amount" name="amount" required/>
  19. <input class="form-control" id="discount" type="number" min="0" step="0.5" style="float: left;resize: none;clear:left;margin: 5px;width: 48%"placeholder="Discount" name="discount" required/>
  20. <textarea class="form-control" id="description" rows="4"style="float: left;resize: none;clear:left;width: 48%;margin: 5px" placeholder="Description" name="description"></textarea>
  21.  
  22. </div>
  23. <div class="modal-footer">
  24. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  25. <button class="btn" style="background: #a81616; color: white;" type="submit" onclick="saveInvoice()">Save invoice</button>
  26. </div>
  27. </div>
  28.  
  29. function toDate(dateStr) {
  30. var parts = dateStr.split("/");
  31. return new Date(parts[2], parts[1] - 1, parts[0]);
  32. }
  33.  
  34. function saveInvoice(){
  35. console.log("succesvol saved invoice");
  36. console.log(toDate($("#datetimepicker").val()));
  37. var data = {}
  38. data["contract"] = $("#chooseContract").val();
  39. data["dueDate"] = toDate($("#datetimepicker").val());
  40. data["remarks"] = $("#remarks").val();
  41. data["amount"] = $("#amount").val();
  42. data["discount"] = $("#discount").val();
  43. data["description"] = $("#description").val();
  44.  
  45. $.ajax({
  46. type: "POST",
  47. contentType: "application/json",
  48. url: window.location.href + "/saveInvoice",
  49. data: JSON.stringify(data),
  50. dataType: 'json',
  51. timeout: 600000,
  52. success: function (data) {
  53. refresh();
  54. },
  55. error: function (e) {
  56. console.log(e);
  57. }
  58. });
  59. };
  60.  
  61. package com.pegusapps.dashboard.Invoices.web;
  62.  
  63. import com.fasterxml.jackson.annotation.JsonFormat;
  64. import com.pegusapps.dashboard.Invoices.Invoice;
  65. import com.pegusapps.dashboard.Invoices.InvoiceId;
  66. import com.pegusapps.dashboard.Invoices.InvoiceService;
  67. import com.pegusapps.dashboard.Invoices.InvoiceType;
  68. import com.pegusapps.dashboard.customer.web.ValidCustomerForm;
  69. import com.pegusapps.dashboard.project.AbstractProject;
  70. import lombok.*;
  71.  
  72. import javax.persistence.Temporal;
  73. import javax.persistence.TemporalType;
  74. import java.time.LocalDateTime;
  75. import java.util.Date;
  76. import java.util.UUID;
  77.  
  78. @Getter
  79. @Setter
  80. @AllArgsConstructor
  81. @NoArgsConstructor
  82. @ValidInvoiceForm
  83. public class InvoiceForm {
  84.  
  85. private UUID id;
  86.  
  87. @NonNull
  88. @Temporal(TemporalType.DATE)
  89. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")
  90. private Date invoiceDate;
  91.  
  92. @NonNull
  93. @Temporal(TemporalType.DATE)
  94. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")
  95. private Date dueDate;
  96.  
  97. @NonNull
  98. private double amount;
  99.  
  100. private String description;
  101.  
  102. private double discount;
  103.  
  104. @NonNull
  105. private InvoiceType type;
  106.  
  107. private String remarks;
  108.  
  109. @NonNull
  110. private Boolean sent;
  111.  
  112. @NonNull
  113. private Boolean paid;
  114.  
  115. private AbstractProject project;
  116.  
  117. public Invoice asInvoice(InvoiceId id, InvoiceService invoiceService){
  118. return new Invoice(id, new Date(), getDueDate(), getAmount(), getDescription(), getDiscount(), InvoiceType.NON_INVOICED_RANGE, getRemarks(),
  119. getSent(), getPaid(), getProjectForm(invoiceService, id));
  120. }
  121.  
  122. private AbstractProject getProjectForm(InvoiceService invoiceService, InvoiceId id){
  123. if(project == null){
  124. return invoiceService.getProject(id).orElse(null);
  125. }else{
  126. return project;
  127. }
  128. }
  129.  
  130. public static InvoiceForm create(Invoice invoice){
  131. return new InvoiceForm(invoice.getId().getId(),invoice.getInvoiceDate(), invoice.getDueDate(), invoice.getAmount(), invoice.getDescription(), invoice.getDiscount(),
  132. invoice.getType(), invoice.getRemarks(), invoice.getSent(), invoice.getPaid(),getProjectOrNull(invoice.getProject()));
  133. }
  134.  
  135. private static AbstractProject getProjectOrNull(AbstractProject project){
  136. if(project == null){
  137. return null;
  138. }else{
  139. return project;
  140. }
  141. }
  142. }
  143.  
  144. @RequestMapping(value= "/saveInvoice", method = RequestMethod.POST)
  145. public String saveCreatedInvoice(@Valid @RequestBody final InvoiceForm invoiceForm, BindingResult bindingResult, Model model) {
  146. if (bindingResult.hasErrors()) {
  147. model.addAttribute(INVOICE_ATTRIBUTE);
  148. model.addAttribute(CREATE_ATTRIBUTE, true);
  149. model.addAttribute(Invoice_ATTRIBUTE, service.getInvoices());
  150. return INVOICE_EDIT_PATH;
  151. }
  152. service.save(invoiceForm.asInvoice(service.nextId(), service));
  153. return "redirect:/finance/invoice";
  154. }
Add Comment
Please, Sign In to add comment