392 lines
28 KiB
XML
392 lines
28 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<!-- Template for the 'My Company' page -->
|
|
<template id="portal_my_company" name="My Company">
|
|
<t t-call="portal.portal_layout">
|
|
<div class="o_portal_my_home">
|
|
<div class="oe_structure" />
|
|
|
|
<!-- Page title -->
|
|
<div class="o_portal_my_details">
|
|
<h3 class="page-header">
|
|
<t t-if="company">
|
|
My Company: <span t-field="company.name"/>
|
|
</t>
|
|
<t t-else="">
|
|
My Company
|
|
</t>
|
|
</h3>
|
|
|
|
<!-- Success message after update -->
|
|
<t t-if="request.params.get('update') == 'success'">
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
<i class="fa fa-check mr-2"></i> Company information has been successfully updated.
|
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
|
<span aria-hidden="true">&times;</span>
|
|
</button>
|
|
</div>
|
|
</t>
|
|
|
|
<!-- Display company information -->
|
|
<t t-if="has_company">
|
|
<t t-if="company">
|
|
<div class="row mt-4">
|
|
<div class="col-lg-12">
|
|
<div class="card">
|
|
<div class="card-header bg-primary text-white">
|
|
<h5 class="mb-0">
|
|
<i class="fa fa-building mr-2"></i> General Information
|
|
<t t-if="can_edit">
|
|
<a href="/my/company/edit" class="btn btn-sm btn-light float-right">
|
|
<i class="fa fa-pencil"></i> Edit
|
|
</a>
|
|
</t>
|
|
</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-lg-6">
|
|
<div class="mb-3">
|
|
<strong>Name:</strong> <span t-field="company.name"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Address:</strong>
|
|
<div t-field="company.contact_address"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Phone:</strong> <span t-field="company.phone"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Mobile:</strong> <span t-field="company.mobile"/>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-6">
|
|
<div class="mb-3">
|
|
<strong>Email:</strong> <span t-field="company.email"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Website:</strong> <span t-field="company.website"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>VAT:</strong> <span t-field="company.vat"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Contacts Section -->
|
|
<div class="mt-5">
|
|
<h4 class="mb-3">
|
|
<i class="fa fa-users mr-2"></i> Contacts
|
|
<t t-if="can_edit">
|
|
<a href="/my/contacts/add" class="btn btn-sm btn-primary float-right">
|
|
<i class="fa fa-plus"></i> Add Contact/Address
|
|
</a>
|
|
</t>
|
|
</h4>
|
|
|
|
<t t-if="contacts">
|
|
<div class="o_portal_contact_list">
|
|
<div class="row">
|
|
<!-- Boucle sur les contacts (type=contact) -->
|
|
<t t-foreach="contacts" t-as="contact">
|
|
<!-- Conteneur pour chaque contact -->
|
|
<div class="col-lg-4 col-md-6 mb-4" t-att-data-contact-id="contact.id">
|
|
<div class="card h-100" t-att-class="'text-muted' if not contact.active else ''">
|
|
<div class="card-header" t-att-class="'bg-danger text-white' if not contact.active else 'bg-primary text-white'">
|
|
<h5 class="mb-0">
|
|
<i class="fa fa-user mr-2"></i> <t t-esc="contact.name"/>
|
|
</h5>
|
|
</div>
|
|
<div class="card-body d-flex flex-column">
|
|
<div class="mb-3">
|
|
<strong>Email:</strong> <span t-field="contact.email"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Phone:</strong> <span t-field="contact.phone"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Mobile:</strong> <span t-field="contact.mobile"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Status:</strong>
|
|
<span t-if="contact.user_ids and contact.active" class="badge badge-success">
|
|
<i class="fa fa-check mr-1"></i> Portal Access
|
|
</span>
|
|
<span t-if="not contact.user_ids and contact.active" class="badge badge-secondary">
|
|
<i class="fa fa-user-o mr-1"></i> No Access
|
|
</span>
|
|
<span t-if="not contact.active" class="badge badge-danger">
|
|
<i class="fa fa-archive mr-1"></i> Archived
|
|
</span>
|
|
</div>
|
|
<div class="mt-auto">
|
|
<div class="d-flex justify-content-center">
|
|
<t t-if="can_edit">
|
|
<a t-att-href="'/my/contacts/edit/%s' % contact.id" class="btn btn-outline-primary mr-2">
|
|
<i class="fa fa-pencil mr-1"></i> Edit
|
|
</a>
|
|
</t>
|
|
<t t-if="can_archive and contact.active">
|
|
<a t-att-href="'/my/contacts/archive/%s' % contact.id" class="btn btn-outline-warning mr-2">
|
|
<i class="fa fa-archive mr-1"></i> Archive
|
|
</a>
|
|
</t>
|
|
<t t-if="can_archive and not contact.active">
|
|
<a t-att-href="'/my/contacts/unarchive/%s' % contact.id" class="btn btn-outline-success mr-2">
|
|
<i class="fa fa-undo mr-1"></i> Unarchive
|
|
</a>
|
|
</t>
|
|
<t t-if="contact.type == 'contact' and contact.email and contact.active">
|
|
<a t-att-href="'/my/contacts/grant_access/%s' % contact.id" class="btn btn-outline-info">
|
|
<t t-if="contact.user_ids">
|
|
<i class="fa fa-key mr-1"></i> Reset Password
|
|
</t>
|
|
<t t-else="">
|
|
<i class="fa fa-user-plus mr-1"></i> Grant Access
|
|
</t>
|
|
</a>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
<t t-else="">
|
|
<div class="alert alert-info">
|
|
<p>No contacts found.</p>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
|
|
<!-- Addresses Section -->
|
|
<div class="mt-5">
|
|
<h4 class="mb-3">
|
|
<i class="fa fa-map-marker mr-2"></i> Other Addresses
|
|
<t t-if="can_edit">
|
|
<a href="/my/contacts/add" class="btn btn-sm btn-primary float-right">
|
|
<i class="fa fa-plus"></i> Add Contact/Address
|
|
</a>
|
|
</t>
|
|
</h4>
|
|
|
|
<t t-if="addresses">
|
|
<div class="o_portal_address_list">
|
|
<div class="row">
|
|
<!-- Boucle sur les adresses (type!=contact) -->
|
|
<t t-foreach="addresses" t-as="address">
|
|
<!-- Conteneur pour chaque adresse -->
|
|
<div class="col-lg-4 col-md-6 mb-4" t-att-data-contact-id="address.id">
|
|
<div class="card h-100" t-att-class="'text-muted' if not address.active else ''">
|
|
<div class="card-header" t-att-class="'bg-danger text-white' if not address.active else 'bg-success text-white'">
|
|
<h5 class="mb-0">
|
|
<i t-if="address.type == 'invoice'" class="fa fa-file-text-o mr-2"></i>
|
|
<i t-elif="address.type == 'delivery'" class="fa fa-truck mr-2"></i>
|
|
<i t-else="" class="fa fa-map-marker mr-2"></i>
|
|
<t t-esc="address.name"/>
|
|
</h5>
|
|
</div>
|
|
<div class="card-body d-flex flex-column">
|
|
<div class="mb-3">
|
|
<strong>Type:</strong>
|
|
<span t-if="address.type == 'invoice'" class="badge badge-info">Invoice</span>
|
|
<span t-elif="address.type == 'delivery'" class="badge badge-info">Delivery</span>
|
|
<span t-else="" class="badge badge-info"><t t-esc="address.type"/></span>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Address:</strong>
|
|
<div t-field="address.contact_address"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Email:</strong> <span t-field="address.email"/>
|
|
</div>
|
|
<div class="mb-3">
|
|
<strong>Phone:</strong> <span t-field="address.phone"/>
|
|
</div>
|
|
<div class="mt-auto">
|
|
<div class="d-flex justify-content-center">
|
|
<t t-if="can_edit">
|
|
<a t-att-href="'/my/contacts/edit/%s' % address.id" class="btn btn-outline-primary mr-2">
|
|
<i class="fa fa-pencil mr-1"></i> Edit
|
|
</a>
|
|
</t>
|
|
<t t-if="can_archive and address.active">
|
|
<a t-att-href="'/my/contacts/archive/%s' % address.id" class="btn btn-outline-warning">
|
|
<i class="fa fa-archive mr-1"></i> Archive
|
|
</a>
|
|
</t>
|
|
<t t-if="can_archive and not address.active">
|
|
<a t-att-href="'/my/contacts/unarchive/%s' % address.id" class="btn btn-outline-success">
|
|
<i class="fa fa-undo mr-1"></i> Unarchive
|
|
</a>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
<t t-else="">
|
|
<div class="alert alert-info">
|
|
<p>No additional addresses found.</p>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
</t>
|
|
<t t-else="">
|
|
<div class="alert alert-info">
|
|
<p>You are not associated with a parent company.</p>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
<t t-else="">
|
|
<div class="alert alert-warning">
|
|
<p>You are not attached to a company. Information and contacts are inaccessible.</p>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="oe_structure" />
|
|
</div>
|
|
</t>
|
|
</template>
|
|
|
|
<!-- Template for the company edit page -->
|
|
<template id="portal_my_company_edit" name="Edit My Company">
|
|
<t t-call="portal.portal_layout">
|
|
<div class="o_portal_my_home">
|
|
<div class="oe_structure" />
|
|
|
|
<!-- Page title -->
|
|
<div class="o_portal_my_details">
|
|
<h3 class="page-header">
|
|
Edit My Company: <span t-field="company.name"/>
|
|
</h3>
|
|
|
|
<!-- Error message -->
|
|
<t t-if="request.params.get('error')">
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
<i class="fa fa-exclamation-triangle mr-2"></i> An error occurred while updating the information.
|
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
|
<span aria-hidden="true">&times;</span>
|
|
</button>
|
|
</div>
|
|
</t>
|
|
|
|
<!-- Edit form -->
|
|
<form id="bemade_company_edit_form" action="/my/company/update" method="post" class="mt-4">
|
|
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
|
|
|
|
<div class="card">
|
|
<div class="card-header bg-primary text-white">
|
|
<h5 class="mb-0">
|
|
<i class="fa fa-building mr-2"></i> General Information
|
|
</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-lg-6">
|
|
<div class="form-group">
|
|
<label for="name">Name</label>
|
|
<input type="text" class="form-control" name="name" id="name" t-att-value="company.name" required="required"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="street">Address</label>
|
|
<input type="text" class="form-control" name="street" id="street" t-att-value="company.street"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="street2">Address (2nd line)</label>
|
|
<input type="text" class="form-control" name="street2" id="street2" t-att-value="company.street2"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="zip">Zip Code</label>
|
|
<input type="text" class="form-control" name="zip" id="zip" t-att-value="company.zip"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="city">City</label>
|
|
<input type="text" class="form-control" name="city" id="city" t-att-value="company.city"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="country_id">Country</label>
|
|
<select class="form-control" name="country_id" id="country_id">
|
|
<option value="">-- Select a country --</option>
|
|
<t t-foreach="countries" t-as="country">
|
|
<option t-att-value="country.id" t-att-selected="country.id == company.country_id.id">
|
|
<t t-esc="country.name"/>
|
|
</option>
|
|
</t>
|
|
</select>
|
|
</div>
|
|
<div class="form-group" id="states_container">
|
|
<label for="state_id">State / Province</label>
|
|
<select class="form-control" name="state_id" id="state_id">
|
|
<option value="">-- Select a state --</option>
|
|
<t t-foreach="states" t-as="state">
|
|
<option t-att-value="state.id"
|
|
class="d-none"
|
|
t-att-data-country_id="state.country_id.id"
|
|
t-att-selected="state.id == company.state_id.id"
|
|
>
|
|
<t t-esc="state.name"/>
|
|
</option>
|
|
</t>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-6">
|
|
<div class="form-group">
|
|
<label for="phone">Phone</label>
|
|
<input type="tel" class="form-control" name="phone" id="phone" t-att-value="company.phone"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="mobile">Mobile</label>
|
|
<input type="tel" class="form-control" name="mobile" id="mobile" t-att-value="company.mobile"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="email">Email</label>
|
|
<input type="email" class="form-control" name="email" id="email" t-att-value="company.email"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="website">Website</label>
|
|
<input type="url" class="form-control" name="website" id="website" t-att-value="company.website"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="vat">VAT</label>
|
|
<input type="text" class="form-control" name="vat" id="vat" t-att-value="company.vat"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="comment">Comment</label>
|
|
<textarea class="form-control" name="comment" id="comment" rows="4"><t t-esc="company.comment"/></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-footer">
|
|
<div class="d-flex justify-content-between">
|
|
<a href="/my/company" class="btn btn-secondary">
|
|
<i class="fa fa-arrow-left mr-1"></i> Cancel
|
|
</a>
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="fa fa-save mr-1"></i> Save
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Le script a été supprimé et remplacé par un widget JavaScript -->
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="oe_structure" />
|
|
</div>
|
|
</t>
|
|
</template>
|
|
</odoo>
|