[IMP] edi: EDI import flow working, login if needed + redirection to imported document
bzr revid: odo@openerp.com-20111105004438-quq8ebshsiox5uxm
This commit is contained in:
parent
2b94ba1718
commit
bb3d2a59d5
|
@ -77,6 +77,8 @@ class EDI(openerpweb.Controller):
|
|||
@openerpweb.jsonrequest
|
||||
def import_edi_url(self, req, url):
|
||||
result = req.session.proxy('edi').import_edi_url(req.session._db, req.session._uid, req.session._password, url)
|
||||
return result
|
||||
if len(result) == 1:
|
||||
return {"action": web.controllers.main.clean_action(req, result[0][2])}
|
||||
return True
|
||||
|
||||
#
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
openerp.edi = function(openerp) {
|
||||
openerp.web.qweb.add_template("/web/static/src/xml/base.xml");
|
||||
openerp.web.qweb.add_template("/edi/static/src/xml/edi.xml");
|
||||
openerp.web.qweb.add_template("/edi/static/src/xml/edi_account.xml");
|
||||
openerp.web.qweb.add_template("/edi/static/src/xml/edi_sale_purchase.xml");
|
||||
|
@ -17,23 +18,19 @@ openerp.edi.EdiView = openerp.web.Widget.extend({
|
|||
start: function() {
|
||||
this._super();
|
||||
var param = {"db": this.db, "token": this.token};
|
||||
console.log("load",param);
|
||||
this.rpc('/edi/get_edi_document', param, this.on_document_loaded);
|
||||
this.rpc('/edi/get_edi_document', param, this.on_document_loaded, this.on_document_failed);
|
||||
},
|
||||
on_document_loaded: function(docs){
|
||||
this.doc = docs[0];
|
||||
console.log("docs",this.doc);
|
||||
var template_content = "Edi." + this.doc.__model + ".content";
|
||||
var template_sidebar = "Edi." + this.doc.__model + ".sidebar";
|
||||
var param = {"widget":this, "doc":this.doc};
|
||||
if (openerp.web.qweb.templates[template_sidebar]) {
|
||||
this.sidebar = openerp.web.qweb.render(template_sidebar, param);
|
||||
}
|
||||
console.log("sidebar",this.sidebar);
|
||||
if (openerp.web.qweb.templates[template_content]) {
|
||||
this.content = openerp.web.qweb.render(template_content, param);
|
||||
}
|
||||
console.log("sidebar",this.sidebar);
|
||||
this.$element.html(openerp.web.qweb.render("EdiView", param));
|
||||
this.$element.find('button.oe_edi_action_print').bind('click', this.do_print);
|
||||
this.$element.find('button#oe_edi_import_existing').bind('click', this.do_import_existing);
|
||||
|
@ -43,9 +40,20 @@ openerp.edi.EdiView = openerp.web.Widget.extend({
|
|||
this.$element.find('.oe_edi_pay_choice, .oe_edi_pay_choice_label').bind('click', this.toggle_choice('pay'));
|
||||
this.$element.find('#oe_edi_download_show_code').bind('click', this.show_code);
|
||||
},
|
||||
on_document_failed: function(response) {
|
||||
var self = this;
|
||||
var params = {
|
||||
error: response,
|
||||
//TODO: should this be _t() wrapped?
|
||||
message: "Sorry, this document cannot be located. Perhaps the link you are using has expired?"
|
||||
}
|
||||
$(openerp.web.qweb.render("DialogWarning", params)).dialog({
|
||||
title: "Document not found",
|
||||
modal: true,
|
||||
});
|
||||
},
|
||||
show_code: function($event) {
|
||||
$('#oe_edi_download_code').show();
|
||||
return false;
|
||||
$('#oe_edi_download_code').toggle();
|
||||
},
|
||||
get_download_url: function() {
|
||||
var l = window.location;
|
||||
|
@ -106,27 +114,55 @@ openerp.edi.EdiImport = openerp.web.Widget.extend({
|
|||
init: function(parent,url) {
|
||||
this._super();
|
||||
this.url = url;
|
||||
var params = {};
|
||||
|
||||
this.template = "EdiImport";
|
||||
this.session = new openerp.web.Session();
|
||||
this.template = "EdiEmpty";
|
||||
this.login = new openerp.web.Login(this);
|
||||
this.header = new openerp.web.Header(this);
|
||||
this.header.on_logout.add(this.login.on_logout);
|
||||
},
|
||||
start: function() {
|
||||
this.session.on_session_invalid.add_last(this.do_ask_login)
|
||||
this.session.on_session_valid.add_last(this.do_import);
|
||||
// TODO if session invalid ask for login
|
||||
this.header.appendTo($("#oe_header"));
|
||||
this.session.start();
|
||||
this.login.appendTo($('#oe_login'));
|
||||
},
|
||||
do_ask_login: function() {
|
||||
this.login.do_ask_login(this.do_import);
|
||||
},
|
||||
do_import: function() {
|
||||
this.rpc('/edi/import_edi_url', {"url": this.url}, this.on_imported, this.on_imported_error);
|
||||
this.rpc('/edi/import_edi_url', {url: this.url}, this.on_imported, this.on_imported_error);
|
||||
},
|
||||
on_imported: function(response) {
|
||||
console.log("responde from import",response);
|
||||
// response is null when exception
|
||||
// model: response[0][0],
|
||||
// id: parseInt(response[0][1], 10),
|
||||
window.location = "/web/webclient/home?debug=1#model=MODEL&id=ID";
|
||||
if ('action' in response) {
|
||||
this.rpc("/web/session/save_session_action", {the_action: response.action}, function(key) {
|
||||
window.location = "/web/webclient/home?debug=1&s_action="+encodeURIComponent(key);
|
||||
});
|
||||
}
|
||||
else {
|
||||
$('<div>').dialog({
|
||||
modal: true,
|
||||
title: _t('Import Successful!'),
|
||||
buttons: {
|
||||
Ok: function() {
|
||||
$(this).dialog("close");
|
||||
window.location = "/web/webclient/home";
|
||||
}
|
||||
}
|
||||
}).html(_t('The document has been successfully imported!'));
|
||||
}
|
||||
},
|
||||
on_imported_error: function(response){
|
||||
var self = this;
|
||||
$(openerp.web.qweb.render("DialogWarning", "Sorry, Import is not successful.")).dialog({
|
||||
var msg = _t("Sorry, the document could not be imported.");
|
||||
if (response.data.fault_code) {
|
||||
msg += "\n " + _t('Reason:') + response.data.fault_code;
|
||||
}
|
||||
var params = {error: response, message: msg};
|
||||
$(openerp.web.qweb.render("DialogWarning", params)).dialog({
|
||||
title: "Document Import Notification",
|
||||
modal: true,
|
||||
buttons: {
|
||||
Ok: function() { $(this).dialog("close"); }
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
<t t-name="EdiEmpty">
|
||||
<div style="height:100%;"></div>
|
||||
</t>
|
||||
<t t-name="EdiImport">
|
||||
<t t-call="Interface"/>
|
||||
</t>
|
||||
<t t-name="EdiView">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" id="oe_app" class="oe-application oe_forms">
|
||||
<tr>
|
||||
|
|
Loading…
Reference in New Issue