Commit 0e300c7e by chenith

J006 - Payment palan for job.

parent e38be188
......@@ -22,6 +22,7 @@
<column name="stripe_reference" type="String" nullable="true" length="100"/>
<column name="stripe_subscription" type="String" nullable="true" length="100"/>
<column name="added_by_user_id" type="Long" length="11" nullable="false"/>
<column name="payment_plan_id" type="Long" length="11" nullable="true"/>
</NODE>
</NODE></OBJECTS>
\ No newline at end of file
......@@ -21,7 +21,8 @@ CREATE TABLE tl_company (
has_client_support char(1) NULL,
stripe_reference varchar(100) NULL,
stripe_subscription varchar(100) NULL,
added_by_user_id numeric(12) NOT NULL
added_by_user_id numeric(12) NOT NULL,
payment_plan_id numeric(12) NULL
);
......
......@@ -22,7 +22,8 @@ CREATE TABLE tl_company (
has_client_support char(1) NULL,
stripe_reference varchar2(100) NULL,
stripe_subscription varchar2(100) NULL,
added_by_user_id number(12) NOT NULL
added_by_user_id number(12) NOT NULL,
payment_plan_id number(12) NULL
);
......
......@@ -22,7 +22,8 @@ CREATE TABLE tl_company (
has_client_support char(1) NULL,
stripe_reference varchar(100) NULL,
stripe_subscription varchar(100) NULL,
added_by_user_id numeric(12) NOT NULL
added_by_user_id numeric(12) NOT NULL,
payment_plan_id numeric(12) NULL
);
......
......@@ -85,6 +85,7 @@ public class SaveJobFP extends SaveFP
HttpServletRequest request = submission.getRequest();
Job job = process.getAttribute("Job") != null ? (Job) process.getAttribute("Job") : (Job) request.getAttribute("Job");
Boolean openJob = (Boolean) request.getAttribute("openJob");
JobStatus status = (JobStatus) request.getAttribute("JobStatus");
if(job.getJobStatus() != JobStatus.DRAFT || openJob == Boolean.TRUE)
{
......@@ -96,6 +97,16 @@ public class SaveJobFP extends SaveFP
}
}
//to select payment plan when job open
if(status!=null && status==JobStatus.OPEN)
{
SecUser loggedInUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = loggedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
Company company = companyUser.getCompany();
BusinessObjectParser.assertFieldCondition(company.getPaymentPlan() != null, job , Company.SINGLEREFERENCE_PaymentPlan, "mandatory", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
}
}
\ No newline at end of file
......@@ -73,4 +73,15 @@ public class Company extends BaseCompany
{
return StringUtils.subNulls(getCompanyName(), super.getToString());
}
public Double getPaymentPlanAmount()
{
if(getPaymentPlan()!=null)
{
return getPaymentPlan().getAmount();
}
return null;
}
}
\ No newline at end of file
......@@ -35,6 +35,7 @@
<ATTRIB name="StripeSubscription" type="String" dbcol="stripe_subscription" length="100"/>
<SINGLEREFERENCE name="AddedByUser" type="CompanyUser" dbcol="added_by_user_id" mandatory="true"/>
<SINGLEREFERENCE name="PaymentPlan" type="PaymentPlan" dbcol="payment_plan_id" mandatory="false"/>
</TABLE>
......
package performa.orm;
import java.io.*;
import java.util.*;
import oneit.appservices.config.*;
import oneit.logging.*;
import oneit.objstore.*;
import oneit.utils.*;
import performa.orm.types.*;
public class PaymentPlan extends BasePaymentPlan
{
......@@ -24,6 +10,15 @@ public class PaymentPlan extends BasePaymentPlan
{
// Do not add any code to this, always put it in initialiseNewObject
}
}
@Override
public String getToString()
{
if(getActiveJobCount()!=null)
{
return getActiveJobCount().toString();
}
return super.getToString();
}
}
\ No newline at end of file
......@@ -25,6 +25,7 @@ public class WebUtils
public static final String JOB_REVIEW = "JobReview";
public static final String APPLY_JOB = "ApplyJob";
public static final String JOB_APPLICATION = "JobApplication";
public static final String MANAGE_PLAN = "ManagePlan";
public static final String CREATED_JOB = "CreatedJob";
public static final String EDIT_JOB = "EditJob";
public static final String JOBS = "Jobs";
......@@ -147,6 +148,7 @@ public class WebUtils
renderMode.equals(WORKPLACE_CULTURE) ||
renderMode.equals(JOB_MATCH) ||
renderMode.equals(JOB_REVIEW) ||
renderMode.equals(MANAGE_PLAN) ||
renderMode.equals(CREATED_JOB);
}
......
......@@ -5941,3 +5941,106 @@ input{
font-size: 18px;
float: right;
}
.select-payment-optio {
color: #1A2531;
font-family: "Usual-Light";
font-size: 28px;
font-weight: 300;
line-height: 34px;
}
.payment-optio-bg {
text-align: center;
}
.annual-plan {
height: 22px;
color: #4A4A4A;
font-family: "Usual-Bold";
font-size: 18px;
font-weight: 500;
line-height: 22px;
}
.payment-optio-text {
height: 17px;
color: #8D8D8D;
font-family: Usual;
font-size: 14px;
line-height: 17px;
text-align: center;
padding: 12px 0;
}
.payment-optio-sep {
border-top: 1px solid #E6E6E6;
padding: 42px 0;
}
.payment-amt {
color: #418DE0;
font-family: "Usual-Light";
font-size: 40px;
font-weight: 300;
/*line-height: 48px;*/
text-align: center;
}
.payment-type-row{
padding-top: 30px;
padding-bottom: 80px;
}
.active-jobs-per-mont {
width: 66px;
color: #8D8D8D;
font-family: "Usual-Light";
font-size: 12px;
}
.per-job {
width: 21px;
color: #969696;
font-family: "Usual-Light";
font-size: 12px;
font-style: italic;
text-align: center;
display: inline-block;
}
.pay-only-job-btn {
height: 48px;
width: 243px;
border: 1px solid #E2E2E2;
border-radius: 24px;
background-color: #FFFFFF;
}
.pay-only-job-amt{
width: 79px;
color: #6D6D6D;
font-family: "Usual-Light";
font-size: 18px;
line-height: 22px;
}
.pay-only-job-txt {
width: 118px;
color: #8D8D8D;
font-family: "Usual-Light";
font-size: 14px;
line-height: 17px;
}
.payment-cancel{
padding-top: 60px;
}
.payment-job-det {
width: 265px;
color: #777777;
font-family: "Usual-Light";
font-size: 12px;
font-style: italic;
}
\ No newline at end of file
......@@ -40,6 +40,7 @@
<RenderMode name="WorkplaceCulture" preIncludeJSP="extensions/adminportal/workplace_culture.jsp"/>
<RenderMode name="JobMatchAssessment" preIncludeJSP="extensions/adminportal/job_match_assessment.jsp"/>
<RenderMode name="JobReview" preIncludeJSP="extensions/adminportal/job_review_submit.jsp"/>
<RenderMode name="ManagePlan" preIncludeJSP="extensions/adminportal/manage_plan.jsp"/>
<RenderMode name="CardPayment" preIncludeJSP="extensions/adminportal/card_payment.jsp"/>
<RenderMode name="CreatedJob" preIncludeJSP="extensions/adminportal/created_job.jsp"/>
</NODE>
......
......@@ -6,7 +6,7 @@
<oneit:dynIncluded>
<%
Job job = (Job) process.getAttribute("Job");
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.CREATED_JOB) + "&fromJob=true";
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.MANAGE_PLAN);
String firstPage = WebUtils.getSamePageInRenderMode(request, WebUtils.CREATE_JOB);
String secondPage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA);
String thirdPage = WebUtils.getSamePageInRenderMode(request, WebUtils.WORKPLACE_CULTURE);
......@@ -213,13 +213,8 @@
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.toMap() %>" />
<oneit:button value="Open this job" name="saveJob" cssClass="btn btn-primary btn-green top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry ("fromPage", fifthPage)
.mapEntry("JobStatus", JobStatus.OPEN)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.toMap() %>" />
<oneit:button value="Confirm and make payment" name="gotoPage" cssClass="btn btn-primary btn-green top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage).toMap() %>" />
</div>
</div>
</div>
......
......@@ -6,87 +6,111 @@
<oneit:dynIncluded>
<%
Job job = (Job) process.getAttribute("Job");
SecUser loggedInUser = SecUser.getTXUser(transaction);
CompanyUser companyUser = loggedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
Company company = companyUser.getCompany();
Debug.assertion(company != null , "Invalid company in admin portal my company");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Page");
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.CREATED_JOB) + "&fromJob=true";
String jobsPage = WebUtils.getSamePageInRenderMode(request, "Page");
String fromPage = WebUtils.getSamePageInRenderMode(request, WebUtils.MANAGE_PLAN);
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
$("#upload").change(function(){
readURL(this);
});
$("#remove-logo").click(function(){
removeLogo();
});
});
</script>
<div class="container-fluid">
<div class="row content">
<div class="main-content-area">
<h1 class="page-title">My Hiring Team</h1>
<div class="my-company-area">
<oneit:form name="editCompany" method="post" enctype="multipart/form-data">
<oneit:form name="editJob" method="post" enctype="multipart/form-data">
<div style="padding-left: 15px; padding-right: 15px;">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
</div>
<oneit:dynInclude page="/extensions/adminportal/inc/my_company_tabs.jsp" TabNumber="2" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="company-content-area">
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="company-detail">
<div class="tabpage-title">
<label class="label-20">No Current Plan</label><br/>
<label class="label-14">You'll be charged each time you add a new job</label>
<div class="line-break"></div>
<div class="main-created-job">
<h1 class="page-title select-payment-optio">
Select Payment Option
</h1>
<div class="form-page-area payment-optio-bg">
<div class="a-label-row annual-plan">
Annual Plan
</div>
<div>
<label class="label-20">Pay Per Job</label>
<div class="a-label-row payment-optio-text">
<p>Hire for any role, save up to $995.00 / mo</p>
</div>
<div class="a-label-row payment-type-row">
<div class="col-md-1 col-sm-1 col-xs-1 text-right">
</div>
<div class="col-md-2 col-sm-2 col-xs-2 text-right">
<div class="active-jobs-per-mont">
Active Jobs Per Month
</div>
</div>
<div class="col-md-3 col-sm-3 col-xs-3">
<tagfile:ormsingleasso_select obj="<%= company %>" assocName="PaymentPlan" options="<%= PaymentPlan.searchAll(transaction) %>"/>
</div>
<div class="grey-area">
<div class="text-center">
<label class="label-20">Subscribe and save</label>
<div class="col-md-5 col-sm-5 col-xs-5 text-right">
<oneit:recalcClass htmlTag="span" classScript="company.getPaymentPlanAmount()!=null ? 'show': 'hide'" company="<%= company %>">
<div >
<span class="payment-amt text-right">
<oneit:recalc mode="Currency" script="company.getPaymentPlanAmount()" company="<%= company %>" nullValue=""/>
</span>
<span class="text-left">
<p class="per-job">
Per Job
</p>
</span>
</div>
<div class="text-center">
<label class="label-14">Active Jobs Per Month</label>
<input type="number" min="0" max="10" step="2" value="6" size="6">
<label class="label-14">$300.00</label>
<label class="label-14">Per Job</label>
</oneit:recalcClass>
</div>
<div class="text-center form-group">
<oneit:button value="Upgrade" name="managePlans" cssClass="btn btn-primary btn-green large-btn"
<div class="col-md-1 col-sm-1 col-xs-1 text-right">
</div>
</div>
<div class="a-label-row text-center">
<oneit:button value="Select Plan" name="saveJob" cssClass="btn btn-primary largeBtn btn-green"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Company", company)
.mapEntry ("fromPage", fromPage)
.mapEntry("JobStatus", JobStatus.OPEN)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.toMap() %>" />
</div>
<div class="text-center">
<label class="label-14">$1500.00 Monthly for up to 5 jobs / month</label>
<div class="a-label-row text-center">
<div class="col-md-4 col-sm-4 col-xs-4">
</div>
<div class="text-center">
<label class="label-14">Save $995.00 per month</label>
<div class="col-md-4 col-sm-4 col-xs-4 payment-job-det text-center">
$1500.00 Monthly for up to 5 jobs / month Save $995.00 per month
</div>
<div class="col-md-4 col-sm-4 col-xs-4">
</div>
<div class="text-center footer-note">
Looking to cancel your account? Please <a href="#">contact us.</a>
</div>
</div>
<div class="form-page-area payment-optio-sep">
<div class="a-label-row">
<div class="col-md-3 col-sm-3 col-xs-3">
</div>
<div class="col-md-3 col-sm-3 col-xs-3">
<div class="annual-plan">Pay Per Job</div>
<div class="">
<span class="pay-only-job-amt">$499.00</span>
<span class="pay-only-job-txt">&ensp;&ensp;Open for 30 Days</span>
</div>
</oneit:form>
</div>
<div class="col-md-6 col-sm-6 col-xs-6">
<oneit:button value="Select Plan" name="" cssClass="btn pay-only-job-btn"/>
</div>
</div>
</div>
</div>
<div class="payment-optio-text text-center payment-cancel">
<oneit:button value="Cancel and go back to Jobs" name="gotoPage" cssClass="" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobsPage)
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE).toMap() %>"/>
</div>
</oneit:form>
</oneit:dynIncluded>
......@@ -36,3 +36,4 @@ Company.RoleType = Role
Company.CompanyLogo = Logo
Company.HiringTeamType = Hiring Team
Company.CompanyName = Hiring Team Name
Company.PaymentPlan = Payment Plan
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.RedefineTableOperation">
<tableName factory="String">tl_company</tableName>
<column name="payment_plan_id" type="Long" length="11" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment