Commit a8854243 by Nilu

when a hiring team doesnt manage its own billing - using the assigned team's job…

when a hiring team doesnt manage its own billing - using the assigned team's job availability to open a job
parent 6c8bbd5c
...@@ -42,4 +42,6 @@ ...@@ -42,4 +42,6 @@
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_hiring_team" indexName="idx_tl_hiring_team_company_id" isUnique="false"><column name="company_id"/></NODE> <NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_hiring_team" indexName="idx_tl_hiring_team_company_id" isUnique="false"><column name="company_id"/></NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_hiring_team" indexName="idx_tl_hiring_team_billing_team_id" isUnique="false"><column name="billing_team_id"/></NODE>
</NODE></OBJECTS> </NODE></OBJECTS>
\ No newline at end of file
...@@ -52,3 +52,6 @@ ALTER TABLE tl_hiring_team ADD ...@@ -52,3 +52,6 @@ ALTER TABLE tl_hiring_team ADD
CREATE INDEX idx_tl_hiring_team_company_id CREATE INDEX idx_tl_hiring_team_company_id
ON tl_hiring_team (company_id); ON tl_hiring_team (company_id);
CREATE INDEX idx_tl_hiring_team_billing_team_id
ON tl_hiring_team (billing_team_id);
...@@ -53,3 +53,6 @@ ALTER TABLE tl_hiring_team ADD ...@@ -53,3 +53,6 @@ ALTER TABLE tl_hiring_team ADD
CREATE INDEX idx_tl_hiring_team_company_id CREATE INDEX idx_tl_hiring_team_company_id
ON tl_hiring_team (company_id); ON tl_hiring_team (company_id);
CREATE INDEX idx_tl_hiring_team_billing_team_id
ON tl_hiring_team (billing_team_id);
...@@ -53,3 +53,6 @@ ALTER TABLE tl_hiring_team ADD ...@@ -53,3 +53,6 @@ ALTER TABLE tl_hiring_team ADD
CREATE INDEX idx_tl_hiring_team_company_id CREATE INDEX idx_tl_hiring_team_company_id
ON tl_hiring_team (company_id); ON tl_hiring_team (company_id);
CREATE INDEX idx_tl_hiring_team_billing_team_id
ON tl_hiring_team (billing_team_id);
...@@ -58,13 +58,13 @@ public class AddHiringTeamFP extends SaveFP ...@@ -58,13 +58,13 @@ public class AddHiringTeamFP extends SaveFP
if(hiringTeam.getManageOwnBilling()) if(hiringTeam.getManageOwnBilling())
{ {
hiringTeam.setBillingTeam(null); hiringTeam.setBilledByTeam(null);
StripeUtils.createCustomer(hiringTeam); StripeUtils.createCustomer(hiringTeam);
} }
else else
{ {
hiringTeam.setBillingTeam(company.getBillingTeam()); hiringTeam.setBilledByTeam(company.getBillingTeam());
} }
LogMgr.log(LOG, LogLevel.PROCESSING1, "New hiring team created : ", hiringTeam); LogMgr.log(LOG, LogLevel.PROCESSING1, "New hiring team created : ", hiringTeam);
......
...@@ -39,7 +39,7 @@ public class SaveCompanyFP extends SaveFP ...@@ -39,7 +39,7 @@ public class SaveCompanyFP extends SaveFP
if(hiringTeam.getManageOwnBilling()) if(hiringTeam.getManageOwnBilling())
{ {
hiringTeam.setBillingTeam(null); hiringTeam.setBilledByTeam(null);
if(hiringTeam.getStripeReference() == null) if(hiringTeam.getStripeReference() == null)
{ {
...@@ -143,7 +143,7 @@ public class SaveCompanyFP extends SaveFP ...@@ -143,7 +143,7 @@ public class SaveCompanyFP extends SaveFP
if(hiringTeam != null && !hiringTeam.getManageOwnBilling()) if(hiringTeam != null && !hiringTeam.getManageOwnBilling())
{ {
BusinessObjectParser.assertFieldCondition(hiringTeam.getBillingTeam() != null, hiringTeam , HiringTeam.SINGLEREFERENCE_BillingTeam, "mandatory", exceptions, true, request); BusinessObjectParser.assertFieldCondition(hiringTeam.getBilledByTeam() != null, hiringTeam , HiringTeam.SINGLEREFERENCE_BilledByTeam, "mandatory", exceptions, true, request);
} }
super.validate(process, submission, exceptions, params); super.validate(process, submission, exceptions, params);
......
...@@ -36,6 +36,7 @@ public class SaveJobFP extends SaveFP ...@@ -36,6 +36,7 @@ public class SaveJobFP extends SaveFP
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser); CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
Company company = companyUser.getCompany(); Company company = companyUser.getCompany();
HiringTeam hiringTeam = job.getHiringTeam(); HiringTeam hiringTeam = job.getHiringTeam();
HiringTeam billingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam : hiringTeam.getBilledByTeam();
LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"In SaveJobFP saving job : ", job ); LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"In SaveJobFP saving job : ", job );
...@@ -53,16 +54,16 @@ public class SaveJobFP extends SaveFP ...@@ -53,16 +54,16 @@ public class SaveJobFP extends SaveFP
job.setApplyBy(DateDiff.add(DateDiff.getToday(), Calendar.DATE, 30)); job.setApplyBy(DateDiff.add(DateDiff.getToday(), Calendar.DATE, 30));
job.setOpenDate(new Date()); job.setOpenDate(new Date());
if (!hiringTeam.canCreateJob()) if (!billingTeam.canCreateJob())
{ {
throw new BusinessException("Please change payment plan settings to open this job"); throw new BusinessException("Please change payment plan settings to open this job");
} }
hiringTeam.setUsedCredits(NullArith.add(hiringTeam.getUsedCredits(), 1).intValue()); billingTeam.setUsedCredits(NullArith.add(billingTeam.getUsedCredits(), 1).intValue());
if(hiringTeam.getUsedCredits() > hiringTeam.getAvailableCredits()) if(billingTeam.getUsedCredits() > billingTeam.getAvailableCredits())
{ {
StripeUtils.recordUsage(hiringTeam); StripeUtils.recordUsage(billingTeam);
} }
if(status == JobStatus.OPEN) if(status == JobStatus.OPEN)
...@@ -126,8 +127,8 @@ public class SaveJobFP extends SaveFP ...@@ -126,8 +127,8 @@ public class SaveJobFP extends SaveFP
JobStatus status = (JobStatus) request.getAttribute("JobStatus"); JobStatus status = (JobStatus) request.getAttribute("JobStatus");
SecUser loggedInUser = SecUser.getTXUser(process.getTransaction()); SecUser loggedInUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = loggedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser); CompanyUser companyUser = loggedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
Company company = companyUser.getCompany();
HiringTeam hiringTeam = job.getHiringTeam(); HiringTeam hiringTeam = job.getHiringTeam();
HiringTeam billingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam : hiringTeam.getBilledByTeam();
if(job.getJobStatus() != JobStatus.DRAFT || openJob == Boolean.TRUE) if(job.getJobStatus() != JobStatus.DRAFT || openJob == Boolean.TRUE)
{ {
...@@ -146,15 +147,15 @@ public class SaveJobFP extends SaveFP ...@@ -146,15 +147,15 @@ public class SaveJobFP extends SaveFP
// if(company.getSelectedPaymentPlan() != null) // if(company.getSelectedPaymentPlan() != null)
// { // {
BusinessObjectParser.assertFieldCondition(hiringTeam.canCreateJob() , job, Job.FIELD_JobStatus, "insufficientCredit", exceptions, true, request); BusinessObjectParser.assertFieldCondition(billingTeam.canCreateJob() , job, Job.FIELD_JobStatus, "insufficientCredit", exceptions, true, request);
// } // }
} }
if(job.getJobStatus() == JobStatus.OPEN) if(job.getJobStatus() == JobStatus.OPEN)
{ {
BusinessObjectParser.assertFieldCondition(hiringTeam.getCardID() != null , hiringTeam, HiringTeam.FIELD_CardID, "mandatoryCardDetails", exceptions, true, request); BusinessObjectParser.assertFieldCondition(billingTeam.getCardID() != null , billingTeam, HiringTeam.FIELD_CardID, "mandatoryCardDetails", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(hiringTeam.canCreateJob() , job, Job.FIELD_JobStatus, "insufficientCredit", exceptions, true, request); BusinessObjectParser.assertFieldCondition(billingTeam.canCreateJob() , job, Job.FIELD_JobStatus, "insufficientCredit", exceptions, true, request);
} }
super.validate(process, submission, exceptions, params); super.validate(process, submission, exceptions, params);
......
...@@ -148,9 +148,14 @@ public class HiringTeam extends BaseHiringTeam ...@@ -148,9 +148,14 @@ public class HiringTeam extends BaseHiringTeam
public boolean canCreateJob() public boolean canCreateJob()
{ {
if(getManageOwnBilling())
{
return getAvailableCredits() > getUsedCredits() || !getHasCap() || (getHasCap() && getMaxCap() > getUsedCredits()); return getAvailableCredits() > getUsedCredits() || !getHasCap() || (getHasCap() && getMaxCap() > getUsedCredits());
} }
return getBilledByTeam().canCreateJob();
}
@Override @Override
public FieldWriteability getWriteability_ManageOwnBilling() public FieldWriteability getWriteability_ManageOwnBilling()
{ {
...@@ -163,7 +168,7 @@ public class HiringTeam extends BaseHiringTeam ...@@ -163,7 +168,7 @@ public class HiringTeam extends BaseHiringTeam
} }
@Override @Override
public FieldWriteability getWriteability_BillingTeam() public FieldWriteability getWriteability_BilledByTeam()
{ {
if(!getManageOwnBilling()) if(!getManageOwnBilling())
{ {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<MULTIPLEREFERENCE name="Users" type="CompanyUserHiringTeamLink" backreferenceName="HiringTeam" /> <MULTIPLEREFERENCE name="Users" type="CompanyUserHiringTeamLink" backreferenceName="HiringTeam" />
<MULTIPLEREFERENCE name="Clients" type="Client" backreferenceName="HiringTeam" /> <MULTIPLEREFERENCE name="Clients" type="Client" backreferenceName="HiringTeam" />
<MULTIPLEREFERENCE name="BillingTeams" type="HiringTeam" backreferenceName="BilledByTeam" />
<TRANSIENT name="IsLogoDeleted" type="Boolean" defaultValue="Boolean.FALSE"/> <TRANSIENT name="IsLogoDeleted" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="CouponCode" type="String" length="20"/> <TRANSIENT name="CouponCode" type="String" length="20"/>
...@@ -45,7 +46,7 @@ ...@@ -45,7 +46,7 @@
<ATTRIB name="CouponExpiryDate" type="Date" dbcol="coupon_expiry_date" /> <ATTRIB name="CouponExpiryDate" type="Date" dbcol="coupon_expiry_date" />
<SINGLEREFERENCE name="Company" type="Company" dbcol="company_id" mandatory="true" backreferenceName="HiringTeams" /> <SINGLEREFERENCE name="Company" type="Company" dbcol="company_id" mandatory="true" backreferenceName="HiringTeams" />
<SINGLEREFERENCE name="BillingTeam" type="HiringTeam" dbcol="billing_team_id" mandatory="false" /> <SINGLEREFERENCE name="BilledByTeam" type="HiringTeam" dbcol="billing_team_id" mandatory="false" backreferenceName="BillingTeams" />
<SINGLEREFERENCE name="AddedByUser" type="CompanyUser" dbcol="added_by_user_id" mandatory="true" /> <SINGLEREFERENCE name="AddedByUser" type="CompanyUser" dbcol="added_by_user_id" mandatory="true" />
<SINGLEREFERENCE name="PaymentPlan" type="PaymentPlan" dbcol="payment_plan_id" mandatory="false" /> <SINGLEREFERENCE name="PaymentPlan" type="PaymentPlan" dbcol="payment_plan_id" mandatory="false" />
<SINGLEREFERENCE name="Coupon" type="StripeCoupon" dbcol="coupon_id" mandatory="false" /> <SINGLEREFERENCE name="Coupon" type="StripeCoupon" dbcol="coupon_id" mandatory="false" />
......
...@@ -294,7 +294,7 @@ public class StripeUtils ...@@ -294,7 +294,7 @@ public class StripeUtils
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
Date now = new Date(); Date now = new Date();
HiringTeam billingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam: hiringTeam.getBillingTeam(); HiringTeam billingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam: hiringTeam.getBilledByTeam();
params.put("quantity", 1); params.put("quantity", 1);
params.put("timestamp", now.getTime() / 1000L); params.put("timestamp", now.getTime() / 1000L);
......
...@@ -17,6 +17,11 @@ ...@@ -17,6 +17,11 @@
boolean fromJob = request.getParameter("fromJob") != null ? Boolean.parseBoolean(request.getParameter("fromJob")) : false; boolean fromJob = request.getParameter("fromJob") != null ? Boolean.parseBoolean(request.getParameter("fromJob")) : false;
String nextPage = WebUtils.getSamePageInRenderMode(request, (fromJob ? "Page" : WebUtils.VIEW_APPLICANTS)); String nextPage = WebUtils.getSamePageInRenderMode(request, (fromJob ? "Page" : WebUtils.VIEW_APPLICANTS));
HiringTeam hiringTeam = job.getHiringTeam();
HiringTeam billlingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam : hiringTeam.getBilledByTeam();
Integer activeCount = billlingTeam.getUsedCredits();
Integer totCount = billlingTeam.getAvailableCredits();
Integer remCount = (totCount - activeCount) > 0 ? (totCount - activeCount) : 0;
%> %>
<script> <script>
function copyToClipboard() { function copyToClipboard() {
...@@ -71,7 +76,7 @@ ...@@ -71,7 +76,7 @@
<oneit:button value="<%= "Go to Job" + (fromJob ? "s" : "")%>" name="gotoPage" cssClass="btn btn-primary largeBtn" <oneit:button value="<%= "Go to Job" + (fromJob ? "s" : "")%>" name="gotoPage" cssClass="btn btn-primary largeBtn"
requestAttribs='<%= CollectionUtils.mapEntry("nextPage", nextPage).toMap() %>'/> requestAttribs='<%= CollectionUtils.mapEntry("nextPage", nextPage).toMap() %>'/>
</div> </div>
<div class="space-55">You have 4 jobs remaining for this month.</div> <div class="space-55">You have <%= remCount %> jobs remaining for this month.</div>
</div> </div>
<div class="job-desc-box"> <div class="job-desc-box">
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
if(ownBilling) if(ownBilling)
{ {
hiringTeam.setBillingTeam(null); hiringTeam.setBilledByTeam(null);
} }
%> %>
</oneit:form> </oneit:form>
\ No newline at end of file
...@@ -32,8 +32,9 @@ ...@@ -32,8 +32,9 @@
Debug.assertion(job != null, "Job is null in admin portal create job"); Debug.assertion(job != null, "Job is null in admin portal create job");
HiringTeam hiringTeam = job.getHiringTeam(); HiringTeam hiringTeam = job.getHiringTeam();
HiringTeam billlingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam : hiringTeam.getBilledByTeam();
process.setAttribute("HiringTeam", hiringTeam); process.setAttribute("HiringTeam", billlingTeam);
%> %>
<oneit:form name="editJob" method="post" enctype="multipart/form-data"> <oneit:form name="editJob" method="post" enctype="multipart/form-data">
...@@ -44,10 +45,10 @@ ...@@ -44,10 +45,10 @@
<h1 class="page-title">Review Job <h1 class="page-title">Review Job
<% <%
if(hiringTeam.getPaymentPlan() != null) if(billlingTeam.getPaymentPlan() != null)
{ {
Integer activeCount = hiringTeam.getUsedCredits(); Integer activeCount = billlingTeam.getUsedCredits();
Integer totCount = hiringTeam.getAvailableCredits(); Integer totCount = billlingTeam.getAvailableCredits();
Integer remCount = (totCount - activeCount) > 0 ? (totCount - activeCount) : 0; Integer remCount = (totCount - activeCount) > 0 ? (totCount - activeCount) : 0;
%> %>
<div style="float:right;"> <div style="float:right;">
...@@ -106,7 +107,7 @@ ...@@ -106,7 +107,7 @@
</span> </span>
</div> </div>
<% <%
if(job.getHiringTeam().showHasClientSupport()) if(hiringTeam.showHasClientSupport())
{ {
%> %>
<div class="col-md-6 review-medium-title"> <div class="col-md-6 review-medium-title">
...@@ -347,7 +348,7 @@ ...@@ -347,7 +348,7 @@
.toMap() %>" /> .toMap() %>" />
<% <%
if(hiringTeam.getCardID() == null) if(billlingTeam.getCardID() == null)
{ {
%> %>
<oneit:button value="Open this Job" name="saveJob" cssClass="btn btn-primary btn-green top-margin-25 largeBtn" <oneit:button value="Open this Job" name="saveJob" cssClass="btn btn-primary btn-green top-margin-25 largeBtn"
...@@ -359,14 +360,14 @@ ...@@ -359,14 +360,14 @@
.toMap() %>" /> .toMap() %>" />
<% <%
} }
else if(hiringTeam.isTrue(hiringTeam.getIsPPJ())) else if(billlingTeam.isTrue(billlingTeam.getIsPPJ()))
{ {
%> %>
<oneit:button value="Open this Job" name="savePayment" cssClass="btn btn-primary btn-green top-margin-25 largeBtn" <oneit:button value="Open this Job" name="savePayment" cssClass="btn btn-primary btn-green top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", sharingPage).toMap() %>" /> requestAttribs="<%= CollectionUtils.mapEntry("nextPage", sharingPage).toMap() %>" />
<% <%
} }
else if(hiringTeam.canCreateJob()) else if(billlingTeam.canCreateJob())
{ {
%> %>
<oneit:button value="Open this Job" name="saveJob" cssClass="btn btn-primary btn-green top-margin-25 largeBtn" <oneit:button value="Open this Job" name="saveJob" cssClass="btn btn-primary btn-green top-margin-25 largeBtn"
......
...@@ -45,4 +45,4 @@ HiringTeam.HasClientSupport = We help clients with hiring ...@@ -45,4 +45,4 @@ HiringTeam.HasClientSupport = We help clients with hiring
HiringTeam.HiringTeamLogo = Hiring Team Logo HiringTeam.HiringTeamLogo = Hiring Team Logo
HiringTeam.HiringTeamType = Hiring Team Type HiringTeam.HiringTeamType = Hiring Team Type
HiringTeam.HiringTeamName = Hiring Team Name HiringTeam.HiringTeamName = Hiring Team Name
HiringTeam.BillingTeam = Billing Team HiringTeam.BilledByTeam = Billing Team
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
<div class="col-md-6"> <div class="col-md-6">
<oneit:recalcClass htmlTag="div" classScript="hiringTeam.getManageOwnBilling() ? 'hide': 'show'" hiringTeam="<%= hiringTeam %>"> <oneit:recalcClass htmlTag="div" classScript="hiringTeam.getManageOwnBilling() ? 'hide': 'show'" hiringTeam="<%= hiringTeam %>">
<div class="wider-select"> <div class="wider-select">
<tagfile:ormsingleasso_select obj="<%= hiringTeam %>" assocName="BillingTeam" options="<%= Utils.getOtherHiringTeams(hiringTeam) %>"/> <tagfile:ormsingleasso_select obj="<%= hiringTeam %>" assocName="BilledByTeam" options="<%= Utils.getOtherHiringTeams(hiringTeam) %>"/>
</div> </div>
</oneit:recalcClass> </oneit:recalcClass>
</div> </div>
......
...@@ -37,5 +37,9 @@ ...@@ -37,5 +37,9 @@
<column name="company_id"/> <column name="company_id"/>
</NODE> </NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_hiring_team" indexName="idx_tl_hiring_team_billing_team_id" isUnique="false">
<column name="billing_team_id"/>
</NODE>
</NODE> </NODE>
</OBJECTS> </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